Hi,
I have an event handler which gets input from mouse clicks. It's in a class (class Mouse_Listener) that implents the interfaces PlugInFilter, MouseListener and MouseMotionListener. I'm writing a plugin which is in another class in the same package. (it implements the PlugIn interface) How can I extract the information from the Mouse_Listener class, so that I can use it in the other class? Thank you, Avital -- ImageJ mailing list: http://imagej.nih.gov/ij/list.html |
Avital,
Wayne has a nice example at http://imagej.nih.gov/ij/plugins/mouse-listener.html. To listen for mouse clicks on an ImagePlus, the trick is to get the ImageCanvas for that ImagePlus and add a MouseListener for the canvas to "this". Bob On Aug 17, 2014, at 7:46 AM, Avital Steinberg <[hidden email]> wrote: > Hi, > I have an event handler which gets input from mouse clicks. It's in a class > (class Mouse_Listener) that implents the interfaces PlugInFilter, > MouseListener and MouseMotionListener. I'm writing a plugin which is in > another class in the same package. (it implements the PlugIn interface) How > can I extract the information from the Mouse_Listener class, so that I can > use it in the other class? > > Thank you, > Avital > > -- > ImageJ mailing list: http://imagej.nih.gov/ij/list.html Robert P. Dougherty President OptiNav, Inc. 1414 127th Pl NE #106 Bellevue, WA 98005 (425) 891-4883 FAX (425) 467-1119 [hidden email] www.optinav. com -- ImageJ mailing list: http://imagej.nih.gov/ij/list.html |
Thank you for your answer - how would I use such a mouse listener from
another class in the same project. If I would use the code in the link you sent me in one class: import ij.*; import ij.plugin.filter.PlugInFilter; import ij.process.*; import ij.gui.*; import java.awt.*; import java.awt.event.*; import java.util.*; /** This plugin implements the MouseListener and MouseMotionListener interfaces and listens for mouse events generated by the current image. */ public class Mouse_Listener implements PlugInFilter, MouseListener, MouseMotionListener { ImagePlus img; ImageCanvas canvas; static Vector images = new Vector(); public int setup(String arg, ImagePlus img) { this.img = img; IJ.register(Mouse_Listener.class); return DOES_ALL+NO_CHANGES; } public void run(ImageProcessor ip) { Integer id = new Integer(img.getID()); if (images.contains(id)) { IJ.log("Already listening to this image"); return; } else { ImageWindow win = img.getWindow(); canvas = win.getCanvas(); canvas.addMouseListener(this); canvas.addMouseMotionListener(this); //int tool = Toolbar.getInstance().addTool("Test Tool"); //Toolbar.getInstance().setTool(tool); images.addElement(id); } } public void mousePressed(MouseEvent e) { int x = e.getX(); int y = e.getY(); int offscreenX = canvas.offScreenX(x); int offscreenY = canvas.offScreenY(y); IJ.log("Mouse pressed: "+offscreenX+","+offscreenY+modifiers(e.getModifiers())); //IJ.log("Right button: "+((e.getModifiers()&Event.META_MASK)!=0)); } public void mouseReleased(MouseEvent e) { IJ.log("mouseReleased: "); } public void mouseDragged(MouseEvent e) { int x = e.getX(); int y = e.getY(); int offscreenX = canvas.offScreenX(x); int offscreenY = canvas.offScreenY(y); IJ.log("Mouse dragged: "+offscreenX+","+offscreenY+modifiers(e.getModifiers())); } public static String modifiers(int flags) { String s = " [ "; if (flags == 0) return ""; if ((flags & Event.SHIFT_MASK) != 0) s += "Shift "; if ((flags & Event.CTRL_MASK) != 0) s += "Control "; if ((flags & Event.META_MASK) != 0) s += "Meta (right button) "; if ((flags & Event.ALT_MASK) != 0) s += "Alt "; s += "]"; if (s.equals(" [ ]")) s = " [no modifiers]"; return s; } public void mouseExited(MouseEvent e) {} public void mouseClicked(MouseEvent e) {} public void mouseEntered(MouseEvent e) {} public void mouseMoved(MouseEvent e) {} } How would I access offscreenX and offscreenY from another class? Avital On Mon, Aug 18, 2014 at 6:29 AM, Robert Dougherty <[hidden email]> wrote: > Avital, > > Wayne has a nice example at > http://imagej.nih.gov/ij/plugins/mouse-listener.html. To listen for > mouse clicks on an ImagePlus, the trick is to get the ImageCanvas for that > ImagePlus and add a MouseListener for the canvas to "this". > > Bob > > On Aug 17, 2014, at 7:46 AM, Avital Steinberg <[hidden email]> > wrote: > > > Hi, > > I have an event handler which gets input from mouse clicks. It's in a > class > > (class Mouse_Listener) that implents the interfaces PlugInFilter, > > MouseListener and MouseMotionListener. I'm writing a plugin which is in > > another class in the same package. (it implements the PlugIn interface) > How > > can I extract the information from the Mouse_Listener class, so that I > can > > use it in the other class? > > > > Thank you, > > Avital > > > > -- > > ImageJ mailing list: http://imagej.nih.gov/ij/list.html > > Robert P. Dougherty > President > OptiNav, Inc. > 1414 127th Pl NE #106 > Bellevue, WA 98005 > (425) 891-4883 > FAX (425) 467-1119 > [hidden email] > www.optinav. com > > -- > ImageJ mailing list: http://imagej.nih.gov/ij/list.html > -- ImageJ mailing list: http://imagej.nih.gov/ij/list.html |
Avital,
> If I would use the code in the link you sent me in one class: > How would I access offscreenX and offscreenY from another class? Why not have the "other class" implement the the MouseListener and MouseMotionListener interfaces and get the events itself? You can tell the class about the ImagePlus to listen to in various ways, or it might discover it for itself with something like WindowManager.getCurrentImage(). Alternatively, the other, "processing" class could have methods that do something with the mouse coordinates, and the class with the MouseListener could invoke these, passing the coordinates. This would require the listening class to have a reference object in the processing class, somehow. Bob -- ImageJ mailing list: http://imagej.nih.gov/ij/list.html |
Thank you Bob - I found your comment very helpful!
Avital On Tue, Aug 19, 2014 at 6:16 AM, Robert Dougherty <[hidden email]> wrote: > Avital, > > > If I would use the code in the link you sent me in one class: > > > How would I access offscreenX and offscreenY from another class? > > Why not have the "other class" implement the the MouseListener and > MouseMotionListener interfaces and get the events itself? You can tell the > class about the ImagePlus to listen to in various ways, or it might > discover it for itself with something like > WindowManager.getCurrentImage(). Alternatively, the other, "processing" > class could have methods that do something with the mouse coordinates, and > the class with the MouseListener could invoke these, passing the > coordinates. This would require the listening class to have a reference > object in the processing class, somehow. > > Bob > > -- > ImageJ mailing list: http://imagej.nih.gov/ij/list.html > -- ImageJ mailing list: http://imagej.nih.gov/ij/list.html |
Free forum by Nabble | Edit this page |