xmlgraphics-batik-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From thomas.dewe...@kodak.com
Subject Re: (Urgent please!!!) Incorrect mouse button value triggered from DOM mouse events
Date Sun, 08 Apr 2007 18:53:43 GMT
Hi Hai,

   Thanks for reporting this.  We already know about the bug and are 
working on a fix.


"Hai Yun Tao" <hytparadisee@hotmail.com> wrote on 04/08/2007 10:52:50 AM:

> I am creating a simple svg application using JSVGCanvas. I am trying to 
add 
> mouse event listeners to the svg elements (rect, group etc.). I follow 
the 
> standard routine, using EventTarget.addEventListener(). My listeners are 

> able to receive mouse events correctly, but the MouseEvent.getButton() 
does 
> not return the correct value (which should be 0 for left, 1 for middle, 
2 
> for right i think). To be more specific, no matter which button i 
pressed, i 
> always get 1. I try to look in depth and i think there might be some 
mouse 
> or key mask problems.
> 
> The following is the program that can reproduce the problem. You can do 
a 
> quick test by copy and paste, and compile it with batik 1.7 and its 
required 
> jar files. And try it again with the batik version 1.6. From what i got 
> batik 1.6 will generate the right mouse button, but in 1.7, 
> MouseEvent.getButton() always return 1.
> 
> //BEGINNING OF CODE
> 
> /*
> * Copyright (c) 2005 - 2007 PeterHi
> * All rights reserved.
> *
> * Copyright (c) 2005 - 2007 by Hai Yun Tao
> * All rights reserved.
> *
> */
> 
> package com.peterhi.err;
> 
> import java.awt.BorderLayout;
> import java.awt.Dimension;
> import org.apache.batik.dom.svg12.SVG12DOMImplementation;
> import org.apache.batik.swing.JSVGCanvas;
> import org.apache.batik.swing.gvt.GVTTreeRendererEvent;
> import org.apache.batik.swing.gvt.GVTTreeRendererListener;
> import org.w3c.dom.Element;
> import org.w3c.dom.events.Event;
> import org.w3c.dom.events.EventListener;
> import org.w3c.dom.events.EventTarget;
> import org.w3c.dom.events.MouseEvent;
> import org.w3c.dom.svg.SVGDocument;
> 
> public class Main extends javax.swing.JFrame
>                   implements GVTTreeRendererListener,
>                              EventListener {
> 
>     // the canvas
>     private JSVGCanvas canvas;
>     // the rect you can click, used to test mouse events
>     private Element rect;
> 
>     public Main() {
>         initComponents();
>         initComponentsEx();
>     }
> 
>     private void initComponentsEx() {
>         // Set up canvas
>         canvas = new JSVGCanvas();
>         canvas.setPreferredSize(new Dimension(640, 480));
>         canvas.addGVTTreeRendererListener(this);
>         add(canvas, BorderLayout.CENTER);
> 
>         try {
>             // Create a document
>             String ns = SVG12DOMImplementation.SVG_NAMESPACE_URI;
>             SVG12DOMImplementation impl = (SVG12DOMImplementation)
>                 SVG12DOMImplementation.getDOMImplementation();
>             SVGDocument doc = (SVGDocument )
>                 impl.createDocument(ns, "svg", null);
>             // Create a rectangle to reproduce the error
>             rect = doc.createElementNS(ns, "rect");
>             rect.setAttributeNS(null, "x", "0");
>             rect.setAttributeNS(null, "y", "0");
>             rect.setAttributeNS(null, "width", "1000");
>             rect.setAttributeNS(null, "height", "1000");
>             rect.setAttributeNS(null, "style", "fill:red");
>             // put it into document
>             doc.getRootElement().appendChild(rect);
> 
>             // set document to the canvas
>             canvas.setDocumentState(JSVGCanvas.ALWAYS_DYNAMIC);
>             canvas.setDocument(doc); // I think gvt renderer
>                                      // will start working
>         } catch (Exception ex) {
>             ex.printStackTrace();
>         }
> 
>         pack();
>     }
> 
>     // <editor-fold defaultstate="collapsed" desc=" Generated Code ">
>     private void initComponents() {
> 
> setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
>     }// </editor-fold>
> 
>     public static void main(String[] args) {
>         java.awt.EventQueue.invokeLater(new Runnable() {
>             public void run() {
>                 new Main().setVisible(true);
>             }
>         });
>     }
> 
>     // Variables declaration - do not modify
>     // End of variables declaration
> 
>     public void gvtRenderingPrepare(GVTTreeRendererEvent e) { }
> 
>     public void gvtRenderingStarted(GVTTreeRendererEvent e) { }
> 
>     public void gvtRenderingCompleted(GVTTreeRendererEvent e) {
>         System.out.println("render completed, adding event listeners");
>         // I appended my listener here, which works perfectly
>         // back in batik 1.6
>         EventTarget et = (EventTarget )rect;
>         // subscribe listener here, take mouse down as
>         // an example
>         et.addEventListener("mousedown", this, false);
>     }
> 
>     public void gvtRenderingCancelled(GVTTreeRendererEvent e) { }
> 
>     public void gvtRenderingFailed(GVTTreeRendererEvent e) { }
> 
>     public void handleEvent(Event evt) {
>         // Prove that we are able to received mouse down event
>         System.out.println("mouse down trigerred!!!");
> 
>         // Here is where the problem comes
>         // Check the value of MouseEvent.getButton(), which,
>         // no matter what button is pressed, will always show 1
> 
>         MouseEvent me = (MouseEvent )evt;
>         short button = me.getButton();
>         System.out.println("button pressed: " + button);
>     }
> 
> }
> 
> // END OF CODE
> 
> FYI:
> Batik Version: Batik 1.7 Beta 1 (This problem does not occur in Batik 
1.6)
> Program IDE: NetBeans IDE 5.5
> OS: Windows Server 2003
> JDK version: Java SE Version 1.5.0 (build 1.5.0_11-b03)
> Mouse: standard mouse with left, right, and a scrollable middle button
> 
> Please help me solve the problem as soon as possible. Thanks in advance.
> 
> _________________________________________________________________
> Express yourself instantly with MSN Messenger! Download today it's FREE! 

> http://messenger.msn.click-url.com/go/onm00200471ave/direct/01/
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: batik-users-unsubscribe@xmlgraphics.apache.org
> For additional commands, e-mail: batik-users-help@xmlgraphics.apache.org
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: batik-users-unsubscribe@xmlgraphics.apache.org
For additional commands, e-mail: batik-users-help@xmlgraphics.apache.org


Mime
View raw message