xmlgraphics-batik-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Baron, Randy {PRG~Basel}" <RANDY.BA...@Roche.COM>
Subject Interactors and MouseEvents
Date Thu, 13 Mar 2003 11:54:48 GMT
hi-
  I'm trying to figure out how to use the Interactors (and why actually,
instead of just using listeners).  I made a small test class that
displays an svg document (a couple of circles) and adds a custom
Interactor.  I wanted to print out some info when I clicked on the
JSVGCanvas, like what Element was clicked on.  I did this before in a
different way, by adding listeners to the JSVGCanvas (snippet below).  I
was wondering if the same info could be obtained from within the
Interactor context (some kind of 'casting' java.awt.event.MouseEvent
into an org.w3c.dom.events.MouseEvent)?
   In the end I need to write a program that displays svg elements (no
big surprise) and allows the user to modify them (location or other
properties) and so need to know what element is clicked on.
 
-Randy
 
 
---------------------------
Snippet of code to get info about object clicked on:
 
 public void registerListeners() {
        Element maindoc = (Element)  document.getDocumentElement();
        EventTarget doctarg = (EventTarget) maindoc;
        doctarg.addEventListener("click", new OnMouseClick(), false);
 }
 
/** Prints out some info about what was clicked on */
  public class OnMouseClick implements EventListener {
        public void handleEvent(Event evt) {
            int mx, my;
            int sx, sy;
            Element svgRoot = document.getDocumentElement();
            String svgNS = SVGDOMImplementation.SVG_NAMESPACE_URI;
 
            MouseEvent mevt = (MouseEvent) evt;
            mx = mevt.getClientX();
            my = mevt.getClientY();
            sx = mevt.getScreenX();
            sy = mevt.getScreenY();
 
            SVGElement targ = (SVGElement) mevt.getTarget();
 
            System.out.println("   Mouse X:" + mx + " Y: " + my);
            System.out.println("   in screen coordinates - x: " + sx + "
y: " + sy);
            System.out.println("   Type of event: " + mevt.getType());
            System.out.println("   getTarget: " + mevt.getTarget());
            System.out.println("   getCurrentTarget: " +
mevt.getCurrentTarget());
            System.out.println("   Element id = " + targ.getId());
 
 
            if (targ instanceof
org.apache.batik.dom.svg.SVGOMTextElement) {
                double maxX, maxY, minX, minY;
                int rx, ry, rw, rh;
                
                SVGOMTextElement ttarg = (SVGOMTextElement) targ;
                SVGRect rectsiz = new AnSVGRect();
                
                System.out.println("HIT SOME TEXT");
                NodeList nlist = targ.getChildNodes();
                System.out.println(" text node length: " +
nlist.getLength());
                System.out.println(" text node item: " + " ele: " +
nlist.item(1));
         //   ....etc.
 

Mime
View raw message