Bonjour Paul, Thanks for your code. You are using SWT_AWT class. Does it still experimental and only for win32?
That's working code when the JSVGCanvas is added to a JPanel; addEventListener is called for each svg element you need to get inputs getCurrentTarget returns the "clicked" Element. This code is thead-safe in case your mouse action need to update the DOM. EventListener onClick = new OnClickAction(); EventTarget t; t = (EventTarget)(svgCanvas.getSVGDocument(). getElementById(svgid)); // Adds a 'onclick' listener t.addEventListener("click", onClick, false); public class OnClickAction implements EventListener, Runnable { Event evt; public void handleEvent(Event evt) { this.evt = evt; if (Thread.currentThread() == svgCanvas.getUpdateManager(). getUpdateRunnableQueue().getThread()){ Element elt; elt = (Element)(evt.getCurrentTarget()); if (elt != null) { String svgid = elt.getAttribute("id"); //etc... } } else { try { svgCanvas.getUpdateManager(). getUpdateRunnableQueue().invokeLater (this); } catch (Exception e) { e.printStackTrace(); } } } public void run() { handleEvent(evt); } Amicalement philippe Le mer 03/09/2003 à 11:19, Paul Sinnema a écrit : > Philippe, > > All the SVG handling is done by batik. > I've inserted the JSVGCanvas in the view (still have a flicker problem during > drawing, I think it's because the JSVGCanvas is added to an SWT panel which is also > redrawn). > > Since this morning I've got the following code working. If this is the correct way > to do things, I then need to know how to get the DOM Node or Element from the Event! > > private static final String MOUSE_CLICK= "click"; > private static final String MOUSE_MOVE= "mousemove"; > private static final String MOUSE_DOWN= "mousedown"; > private static final String MOUSE_UP= "mouseup"; > > private void handleMyEvent(Event event) > { > EventTarget et= event.getTarget(); > > setTitleText( > " Type = " > + event.getType() > + " Phase = " > + event.getEventPhase() > + " Current target = " > + et.getClass() > + " Timestamp = " > + event.getTimeStamp()); > } > > public void createPartControl(final Composite parent) > { > try > { > svgCanvas= new JSVGCanvas(new MyUserAgent(), true, true); > svgCanvas.setDoubleBuffered(true); > svgCanvas.setDoubleBufferedRendering(true); > svgCanvas.addSVGLoadEventDispatcherListener(new SVGLoadEventDispatcherListener() > { > > public void svgLoadEventDispatchStarted(SVGLoadEventDispatcherEvent arg0) > { > // setTitleText("svgLoadEventDispatchStarted"); > } > > public void svgLoadEventDispatchCompleted(SVGLoadEventDispatcherEvent arg0) > { > SVGSVGElement root= svgCanvas.getSVGDocument().getRootElement(); > root.addEventListener(MOUSE_CLICK, new EventListener() > { > public void handleEvent(Event arg0) > { > handleMyEvent(arg0); > } > }, true); > root.addEventListener(MOUSE_MOVE, new EventListener() > { > public void handleEvent(Event arg0) > { > handleMyEvent(arg0); > } > }, true); > root.addEventListener(MOUSE_DOWN, new EventListener() > { > public void handleEvent(Event arg0) > { > handleMyEvent(arg0); > } > }, true); > root.addEventListener(MOUSE_UP, new EventListener() > { > public void handleEvent(Event arg0) > { > handleMyEvent(arg0); > } > }, true); > } > > public void svgLoadEventDispatchCancelled(SVGLoadEventDispatcherEvent arg0) > { > // setTitleText("svgLoadEventDispatchCancelled"); > } > > public void svgLoadEventDispatchFailed(SVGLoadEventDispatcherEvent arg0) > { > // setTitleText("svgLoadEventDispatchFailed"); > } > }); > awtPanel= SWT_AWT.new_Panel(parent); > awtPanel.setLayout(new BorderLayout()); > awtPanel.add("Center", svgCanvas); > shell= getViewSite().getShell(); > > createActions(); > } catch (Throwable t) > { > t.printStackTrace(); > } > > getViewSite().getPage().addSelectionListener(this); > } > > Paul. > > ----- Original Message ----- > From: "Philippe GIL" <[EMAIL PROTECTED]> > To: "Paul Sinnema" <[EMAIL PROTECTED]> > Sent: Wednesday, September 03, 2003 10:37 AM > Subject: Re: Finding an Element (Node) in the DOM with an X Y coordinatefroma > MouseEvent > > > > Bonjour Paul, > > > > I can't still figure how you use batik under eclipse? > > > > What part of the SVG handling is managed by batik? > > How do you display SVG content inside your view? Do you parse the batik > > GVT making your own GVT to screen bridge? Do you generate a bitmap with > > batik to display it later in your view. Do you insert an JSVGCanvas in > > your view? > > The solution of your problem will probably depend on it. > > > > Amicalement > > Philippe > > Le mer 03/09/2003 à 09:47, Paul Sinnema a écrit : > > Philippe, > > > > I'm currently building an Eclipse 'View' (yes it's the Open Source Project > > you are referring to) to display and manipulate SVG. The intent is to build > > an UML Class Diagram which in turn will create an XML that can be > > transformed to an XMI with EMF in Eclipse. From there we are able to > > generate code for several applications (JAVA, DOTNet, C++....). All the > > code, for the view, is created by me (with a little help of Eclipse and of > > course I've looked at other applications and copied where possible). > > > > Paul. > > > > ----- Original Message ----- > > From: "Philippe GIL" <[EMAIL PROTECTED]> > > To: "Paul Sinnema" <[EMAIL PROTECTED]> > > Sent: Wednesday, September 03, 2003 9:28 AM > > Subject: Re: Finding an Element (Node) in the DOM with an X Y coordinatefrom > > a MouseEvent > > > > > > Bonjour Paul, > > > > I have some questions regarding your mail. > > > > Does Eclipse mean the IBM open source project? (http://www.eclipse.org/) > > Are you displaying SVG files inside Eclipse plugins (views or editors)? > > What plugin are you using to display the SVG content, Java Advanced > > Imaging over holongate Batik support (http://www.holongate.org/), Dirk > > Lemmerman's Batik SVG Viewer > > (http://www.eclipse-workbench.com/jsp/plugin_detail.jsp?id=139&cat=27) > > or another way? > > > > The project I'm working on, need to edit SVG file under Eclipse > > run-time. > > > > Amicalement > > Philippe > > > > > > Le mar 02/09/2003 à 15:21, Paul Sinnema a écrit : > > > Hi, > > > > > > I've been struggling with several issues using Batik as the main display > > for an new UML Class Diagram in Eclipse. I've solved several of the issues, > > but I'm kinda stuck right now. > > > > > > In my 'view' I use an Interactor to get actions from the mouse (click, > > press, etc...). I would like to be able to drag a <g> from one place to > > another (make it topped, resize, etc....) for that I need to know which > > element in the DOM tree was clicked, dragged, etc.... > > > > > > Has anyone got any experience with this? > > > > > > Paul. > > > > > > > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: [EMAIL PROTECTED] > > For additional commands, e-mail: [EMAIL PROTECTED] > > > > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]