- java.lang.Object
-
- java.awt.Component
-
- java.awt.Container
-
- java.awt.Window
-
- java.awt.Frame
-
- ij.plugin.frame.PlugInFrame
-
- ij.plugin.frame.SyncWindows
-
- All Implemented Interfaces:
CommandListener,ImageListener,PlugIn,java.awt.event.ActionListener,java.awt.event.FocusListener,java.awt.event.ItemListener,java.awt.event.MouseListener,java.awt.event.MouseMotionListener,java.awt.event.WindowListener,java.awt.image.ImageObserver,java.awt.MenuContainer,java.io.Serializable,java.util.EventListener,javax.accessibility.Accessible
public class SyncWindows extends PlugInFrame implements java.awt.event.ActionListener, java.awt.event.MouseMotionListener, java.awt.event.MouseListener, java.awt.event.ItemListener, ImageListener, CommandListener
This class "synchronizes" mouse input in multiple windows. Once several windows are synchronized, mouse events in any one of the synchronized windows are propagated to the others. Note, the notion of synchronization use by the SyncWindows class here (i.e. multiple windows that all get the same mouse input) is somewhat different than the use of the synchronize keyword in the Java language. (In Java, synchronize has to do w/ critical section access by multiple threads.)Optionally passes on change of z-slice of a stack to other stacks; Optionally translates positions to different windows via offscreen coordinates, i.e. correctly translates coordinates to windows with a different zoom; Updates the list of windows by click of a button;
- Author:
- Patrick Kelly
; Improved GUI, support of image coordinates and z-slices by Joachim Walter - See Also:
- Serialized Form
-
-
Field Summary
Fields Modifier and Type Field Description protected java.awt.ButtonbSyncAllButtons for user control.protected java.awt.ButtonbUnsyncAllButtons for user control.protected java.awt.CheckboxcChannelCheckboxes for user control.protected java.awt.CheckboxcCoordsCheckboxes for user control.protected java.awt.CheckboxcCursorCheckboxes for user control.protected java.awt.CheckboxcFrameCheckboxes for user control.protected java.awt.CheckboxcScalingCheckboxes for user control.protected java.awt.CheckboxcSliceCheckboxes for user control.protected ImageJijInstancereference to current instance of ImageJ (to avoid repeated IJ.getInstance() s)protected intoldXprotected intoldYprotected java.awt.PanelpanelPanel for GUIprotected java.util.VectorvListMapHashtable to map list ids to image window ids.protected java.util.VectorvwinsIndices of synchronized image windows are maintained in this Vector.protected java.awt.ListwListList of currently displayed windows retrieved from ImageJ window manager.protected intxprotected inty-
Fields inherited from class java.awt.Frame
CROSSHAIR_CURSOR, DEFAULT_CURSOR, E_RESIZE_CURSOR, HAND_CURSOR, ICONIFIED, MAXIMIZED_BOTH, MAXIMIZED_HORIZ, MAXIMIZED_VERT, MOVE_CURSOR, N_RESIZE_CURSOR, NE_RESIZE_CURSOR, NORMAL, NW_RESIZE_CURSOR, S_RESIZE_CURSOR, SE_RESIZE_CURSOR, SW_RESIZE_CURSOR, TEXT_CURSOR, W_RESIZE_CURSOR, WAIT_CURSOR
-
-
Constructor Summary
Constructors Constructor Description SyncWindows()Create window sync frame.SyncWindows(java.lang.String s)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description voidactionPerformed(java.awt.event.ActionEvent e)Implementation of ActionListener interface.protected java.awt.RectangleboundingRect(int x, int y, int oldX, int oldY)Compute bounding rectangle given current and old cursor locations.protected java.awt.PanelbuildControlPanel()Builds panel containing control buttons.protected java.awt.ComponentbuildWindowList()Builds list of open ImageWindowsvoidclose()Closes this window.java.lang.StringcommandExecuting(java.lang.String command)protected java.awt.PanelcontrolPanel()Build window list display and button controls.voiddisplayChanged(ij.plugin.frame.DisplayChangeEvent e)Method to pass on changes of the z-slice of a stack.ImagePlusgetImageFromVector(int n)Get ImagePlus from Windows-Vector vwins.java.lang.StringgetImageTitleFromVector(int n)Get the title of image n from Windows-Vector vwins.intgetIndexOfImage(ImagePlus image)Get index of "image" in vector of synchronized windows, if image is in vector.java.awt.InsetsgetInsets()static SyncWindowsgetInstance()protected java.awt.PointgetMatchingCoords(ImageCanvas ic, ImageCanvas icc, int x, int y)Get Screen Coordinates for ImageCanvas ic matching the OffScreen Coordinates of the current ImageCanvas.voidimageClosed(ImagePlus imp)Implementation of ImageListener interface: update window list, if image is opened or closedvoidimageOpened(ImagePlus imp)Implementation of ImageListener interface: update window list, if image is opened or closedvoidimageUpdated(ImagePlus imp)voiditemStateChanged(java.awt.event.ItemEvent e)Item Listener methodvoidmouseClicked(java.awt.event.MouseEvent e)Propagate mouse clicked events to all synchronized windows.voidmouseDragged(java.awt.event.MouseEvent e)Propagate mouse dragged events to all synchronized windows.voidmouseEntered(java.awt.event.MouseEvent e)Propagate mouse entered events to all synchronized windows.voidmouseExited(java.awt.event.MouseEvent e)Propagate mouse exited events to all synchronized windows.voidmouseMoved(java.awt.event.MouseEvent e)Draws the "synchronize" cursor in each of the synchronized windows.voidmousePressed(java.awt.event.MouseEvent e)Propagate mouse pressed events to all synchronized windows.voidmouseReleased(java.awt.event.MouseEvent e)Propagate mouse released events to all synchronized windows.static voidsetC(ImageWindow source, int channel)voidsetCursor(ImagePlus imp, Roi cursor)static voidsetT(ImageWindow source, int frame)static voidsetZ(ImageWindow source, int slice)protected voidupdateWindowList()voidwindowClosing(java.awt.event.WindowEvent e)Override parent windowClosing method to clean up synchronized resources on exit.-
Methods inherited from class ij.plugin.frame.PlugInFrame
focusGained, focusLost, run, windowActivated, windowClosed, windowDeactivated, windowDeiconified, windowIconified, windowOpened
-
Methods inherited from class java.awt.Frame
addNotify, getAccessibleContext, getCursorType, getExtendedState, getFrames, getIconImage, getMaximizedBounds, getMenuBar, getState, getTitle, isResizable, isUndecorated, paramString, remove, removeNotify, setBackground, setCursor, setExtendedState, setIconImage, setMaximizedBounds, setMenuBar, setOpacity, setResizable, setShape, setState, setTitle, setUndecorated
-
Methods inherited from class java.awt.Window
addPropertyChangeListener, addPropertyChangeListener, addWindowFocusListener, addWindowListener, addWindowStateListener, applyResourceBundle, applyResourceBundle, createBufferStrategy, createBufferStrategy, dispose, getBackground, getBufferStrategy, getFocusableWindowState, getFocusCycleRootAncestor, getFocusOwner, getFocusTraversalKeys, getIconImages, getInputContext, getListeners, getLocale, getModalExclusionType, getMostRecentFocusOwner, getOpacity, getOwnedWindows, getOwner, getOwnerlessWindows, getShape, getToolkit, getType, getWarningString, getWindowFocusListeners, getWindowListeners, getWindows, getWindowStateListeners, hide, isActive, isAlwaysOnTop, isAlwaysOnTopSupported, isAutoRequestFocus, isFocusableWindow, isFocusCycleRoot, isFocused, isLocationByPlatform, isOpaque, isShowing, isValidateRoot, pack, paint, postEvent, processEvent, processWindowEvent, processWindowFocusEvent, processWindowStateEvent, removeWindowFocusListener, removeWindowListener, removeWindowStateListener, reshape, setAlwaysOnTop, setAutoRequestFocus, setBounds, setBounds, setCursor, setFocusableWindowState, setFocusCycleRoot, setIconImages, setLocation, setLocation, setLocationByPlatform, setLocationRelativeTo, setMinimumSize, setModalExclusionType, setSize, setSize, setType, setVisible, show, toBack, toFront
-
Methods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, addImpl, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getAlignmentX, getAlignmentY, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalPolicy, getLayout, getMaximumSize, getMinimumSize, getMousePosition, getPreferredSize, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, print, printComponents, processContainerEvent, remove, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusTraversalKeys, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setFont, setLayout, transferFocusDownCycle, update, validate, validateTree
-
Methods inherited from class java.awt.Component
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, contains, createImage, createImage, createVolatileImage, createVolatileImage, disable, disableEvents, dispatchEvent, enable, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBaseline, getBaselineResizeBehavior, getBounds, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getFontMetrics, getForeground, getGraphics, getGraphicsConfiguration, getHeight, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocation, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getSize, getTreeLock, getWidth, getX, getY, gotFocus, handleEvent, hasFocus, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isDoubleBuffered, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isPreferredSizeSet, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, prepareImage, prepareImage, printAll, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processKeyEvent, processMouseEvent, processMouseMotionEvent, processMouseWheelEvent, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, repaint, requestFocus, requestFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, requestFocusInWindow, resize, resize, revalidate, setComponentOrientation, setDropTarget, setEnabled, setFocusable, setFocusTraversalKeysEnabled, setForeground, setIgnoreRepaint, setLocale, setMaximumSize, setMixingCutoutShape, setName, setPreferredSize, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle
-
-
-
-
Field Detail
-
vwins
protected java.util.Vector vwins
Indices of synchronized image windows are maintained in this Vector.
-
oldX
protected int oldX
-
oldY
protected int oldY
-
x
protected int x
-
y
protected int y
-
wList
protected java.awt.List wList
List of currently displayed windows retrieved from ImageJ window manager.
-
panel
protected java.awt.Panel panel
Panel for GUI
-
cCursor
protected java.awt.Checkbox cCursor
Checkboxes for user control.
-
cSlice
protected java.awt.Checkbox cSlice
Checkboxes for user control.
-
cChannel
protected java.awt.Checkbox cChannel
Checkboxes for user control.
-
cFrame
protected java.awt.Checkbox cFrame
Checkboxes for user control.
-
cCoords
protected java.awt.Checkbox cCoords
Checkboxes for user control.
-
cScaling
protected java.awt.Checkbox cScaling
Checkboxes for user control.
-
bSyncAll
protected java.awt.Button bSyncAll
Buttons for user control.
-
bUnsyncAll
protected java.awt.Button bUnsyncAll
Buttons for user control.
-
vListMap
protected java.util.Vector vListMap
Hashtable to map list ids to image window ids.
-
ijInstance
protected final ImageJ ijInstance
reference to current instance of ImageJ (to avoid repeated IJ.getInstance() s)
-
-
Method Detail
-
setC
public static void setC(ImageWindow source, int channel)
-
setZ
public static void setZ(ImageWindow source, int slice)
-
setT
public static void setT(ImageWindow source, int frame)
-
displayChanged
public void displayChanged(ij.plugin.frame.DisplayChangeEvent e)
Method to pass on changes of the z-slice of a stack.
-
mouseMoved
public void mouseMoved(java.awt.event.MouseEvent e)
Draws the "synchronize" cursor in each of the synchronized windows.- Specified by:
mouseMovedin interfacejava.awt.event.MouseMotionListener
-
mouseDragged
public void mouseDragged(java.awt.event.MouseEvent e)
Propagate mouse dragged events to all synchronized windows.- Specified by:
mouseDraggedin interfacejava.awt.event.MouseMotionListener
-
mouseClicked
public void mouseClicked(java.awt.event.MouseEvent e)
Propagate mouse clicked events to all synchronized windows.- Specified by:
mouseClickedin interfacejava.awt.event.MouseListener
-
mouseEntered
public void mouseEntered(java.awt.event.MouseEvent e)
Propagate mouse entered events to all synchronized windows.- Specified by:
mouseEnteredin interfacejava.awt.event.MouseListener
-
mouseExited
public void mouseExited(java.awt.event.MouseEvent e)
Propagate mouse exited events to all synchronized windows.- Specified by:
mouseExitedin interfacejava.awt.event.MouseListener
-
mousePressed
public void mousePressed(java.awt.event.MouseEvent e)
Propagate mouse pressed events to all synchronized windows.- Specified by:
mousePressedin interfacejava.awt.event.MouseListener
-
mouseReleased
public void mouseReleased(java.awt.event.MouseEvent e)
Propagate mouse released events to all synchronized windows.- Specified by:
mouseReleasedin interfacejava.awt.event.MouseListener
-
actionPerformed
public void actionPerformed(java.awt.event.ActionEvent e)
Implementation of ActionListener interface.- Specified by:
actionPerformedin interfacejava.awt.event.ActionListener
-
itemStateChanged
public void itemStateChanged(java.awt.event.ItemEvent e)
Item Listener method- Specified by:
itemStateChangedin interfacejava.awt.event.ItemListener
-
windowClosing
public void windowClosing(java.awt.event.WindowEvent e)
Override parent windowClosing method to clean up synchronized resources on exit.- Specified by:
windowClosingin interfacejava.awt.event.WindowListener- Overrides:
windowClosingin classPlugInFrame
-
imageOpened
public void imageOpened(ImagePlus imp)
Implementation of ImageListener interface: update window list, if image is opened or closed- Specified by:
imageOpenedin interfaceImageListener
-
imageClosed
public void imageClosed(ImagePlus imp)
Implementation of ImageListener interface: update window list, if image is opened or closed- Specified by:
imageClosedin interfaceImageListener
-
imageUpdated
public void imageUpdated(ImagePlus imp)
- Specified by:
imageUpdatedin interfaceImageListener
-
controlPanel
protected java.awt.Panel controlPanel()
Build window list display and button controls. Create Hashtable that connects list entries to window IDs.
-
buildWindowList
protected java.awt.Component buildWindowList()
Builds list of open ImageWindows
-
buildControlPanel
protected java.awt.Panel buildControlPanel()
Builds panel containing control buttons.
-
boundingRect
protected java.awt.Rectangle boundingRect(int x, int y, int oldX, int oldY)Compute bounding rectangle given current and old cursor locations. This is used to determine what part of image to redraw.
-
updateWindowList
protected void updateWindowList()
-
getImageFromVector
public ImagePlus getImageFromVector(int n)
Get ImagePlus from Windows-Vector vwins.
-
getImageTitleFromVector
public java.lang.String getImageTitleFromVector(int n)
Get the title of image n from Windows-Vector vwins. If the image ends with .tif, the extension is removed.
-
getIndexOfImage
public int getIndexOfImage(ImagePlus image)
Get index of "image" in vector of synchronized windows, if image is in vector. Else return -1.
-
getMatchingCoords
protected java.awt.Point getMatchingCoords(ImageCanvas ic, ImageCanvas icc, int x, int y)
Get Screen Coordinates for ImageCanvas ic matching the OffScreen Coordinates of the current ImageCanvas. (srcRect and magnification stored after each received event.) Input: The target ImageCanvas, the current ImageCanvas, x-ScreenCoordinate for current Canvas, y-ScreenCoordinate for current Canvas If the "ImageScaling" checkbox is selected, Scaling and Offset of the images are taken into account.
-
getInsets
public java.awt.Insets getInsets()
- Overrides:
getInsetsin classjava.awt.Container
-
close
public void close()
Description copied from class:PlugInFrameCloses this window.- Overrides:
closein classPlugInFrame
-
getInstance
public static SyncWindows getInstance()
-
commandExecuting
public java.lang.String commandExecuting(java.lang.String command)
- Specified by:
commandExecutingin interfaceCommandListener
-
-