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,ActionListener,FocusListener,ItemListener,MouseListener,MouseMotionListener,WindowListener,ImageObserver,MenuContainer,Serializable,EventListener,Accessible
public class SyncWindows
extends PlugInFrame
implements ActionListener, MouseMotionListener, MouseListener, 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 invalid input: '<'phkelly@ucsd.edu>; Improved GUI, support of image coordinates and z-slices by Joachim Walter invalid input: '<'correspondence@walter-witzenhausen.de>
- See Also:
-
Nested Class Summary
Nested classes/interfaces inherited from class java.awt.Frame
Frame.AccessibleAWTFrameNested classes/interfaces inherited from class java.awt.Window
Window.AccessibleAWTWindow, Window.TypeNested classes/interfaces inherited from class java.awt.Container
Container.AccessibleAWTContainerNested classes/interfaces inherited from class java.awt.Component
Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected ButtonButtons for user control.protected ButtonButtons for user control.protected CheckboxCheckboxes for user control.protected CheckboxCheckboxes for user control.protected CheckboxCheckboxes for user control.protected CheckboxCheckboxes for user control.protected CheckboxCheckboxes for user control.protected CheckboxCheckboxes for user control.protected final ImageJreference to current instance of ImageJ (to avoid repeated IJ.getInstance() s)protected intprotected intprotected PanelPanel for GUIprotected VectorHashtable to map list ids to image window ids.protected VectorIndices of synchronized image windows are maintained in this Vector.protected ListList of currently displayed windows retrieved from ImageJ window manager.protected intprotected intFields 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_CURSORFields inherited from class java.awt.Component
accessibleContext, BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENTFields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidImplementation of ActionListener interface.protected RectangleboundingRect(int x, int y, int oldX, int oldY) Compute bounding rectangle given current and old cursor locations.protected PanelBuilds panel containing control buttons.protected ComponentBuilds list of open ImageWindowsvoidclose()Closes this window.commandExecuting(String command) protected PanelBuild window list display and button controls.voiddisplayChanged(ij.plugin.frame.DisplayChangeEvent e) Method to pass on changes of the z-slice of a stack.getImageFromVector(int n) Get ImagePlus from Windows-Vector vwins.getImageTitleFromVector(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.static SyncWindowsprotected 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) voidItem Listener methodvoidPropagate mouse clicked events to all synchronized windows.voidPropagate mouse dragged events to all synchronized windows.voidPropagate mouse entered events to all synchronized windows.voidPropagate mouse exited events to all synchronized windows.voidDraws the "synchronize" cursor in each of the synchronized windows.voidPropagate mouse pressed events to all synchronized windows.voidPropagate mouse released events to all synchronized windows.static voidsetC(ImageWindow source, int channel) voidstatic voidsetT(ImageWindow source, int frame) static voidsetZ(ImageWindow source, int slice) protected voidvoidOverride 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, windowOpenedMethods 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, setUndecoratedMethods 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, toFrontMethods 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, validateTreeMethods 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, transferFocusUpCycleMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface java.awt.MenuContainer
getFont, postEvent
-
Field Details
-
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
List of currently displayed windows retrieved from ImageJ window manager. -
panel
Panel for GUI -
cCursor
Checkboxes for user control. -
cSlice
Checkboxes for user control. -
cChannel
Checkboxes for user control. -
cFrame
Checkboxes for user control. -
cCoords
Checkboxes for user control. -
cScaling
Checkboxes for user control. -
bSyncAll
Buttons for user control. -
bUnsyncAll
Buttons for user control. -
vListMap
Hashtable to map list ids to image window ids. -
ijInstance
reference to current instance of ImageJ (to avoid repeated IJ.getInstance() s)
-
-
Constructor Details
-
SyncWindows
public SyncWindows()Create window sync frame. Frame is shown via call to show() or by invoking run method. -
SyncWindows
-
-
Method Details
-
setC
-
setZ
-
setT
-
displayChanged
public void displayChanged(ij.plugin.frame.DisplayChangeEvent e) Method to pass on changes of the z-slice of a stack. -
mouseMoved
Draws the "synchronize" cursor in each of the synchronized windows.- Specified by:
mouseMovedin interfaceMouseMotionListener
-
mouseDragged
Propagate mouse dragged events to all synchronized windows.- Specified by:
mouseDraggedin interfaceMouseMotionListener
-
mouseClicked
Propagate mouse clicked events to all synchronized windows.- Specified by:
mouseClickedin interfaceMouseListener
-
mouseEntered
Propagate mouse entered events to all synchronized windows.- Specified by:
mouseEnteredin interfaceMouseListener
-
mouseExited
Propagate mouse exited events to all synchronized windows.- Specified by:
mouseExitedin interfaceMouseListener
-
mousePressed
Propagate mouse pressed events to all synchronized windows.- Specified by:
mousePressedin interfaceMouseListener
-
mouseReleased
Propagate mouse released events to all synchronized windows.- Specified by:
mouseReleasedin interfaceMouseListener
-
actionPerformed
Implementation of ActionListener interface.- Specified by:
actionPerformedin interfaceActionListener
-
itemStateChanged
Item Listener method- Specified by:
itemStateChangedin interfaceItemListener
-
windowClosing
Override parent windowClosing method to clean up synchronized resources on exit.- Specified by:
windowClosingin interfaceWindowListener- Overrides:
windowClosingin classPlugInFrame
-
imageOpened
Implementation of ImageListener interface: update window list, if image is opened or closed- Specified by:
imageOpenedin interfaceImageListener
-
imageClosed
Implementation of ImageListener interface: update window list, if image is opened or closed- Specified by:
imageClosedin interfaceImageListener
-
imageUpdated
- Specified by:
imageUpdatedin interfaceImageListener
-
controlPanel
Build window list display and button controls. Create Hashtable that connects list entries to window IDs. -
buildWindowList
Builds list of open ImageWindows -
buildControlPanel
Builds panel containing control buttons. -
boundingRect
Compute bounding rectangle given current and old cursor locations. This is used to determine what part of image to redraw. -
updateWindowList
protected void updateWindowList() -
setCursor
-
getImageFromVector
Get ImagePlus from Windows-Vector vwins. -
getImageTitleFromVector
Get the title of image n from Windows-Vector vwins. If the image ends with .tif, the extension is removed. -
getIndexOfImage
Get index of "image" in vector of synchronized windows, if image is in vector. Else return -1. -
getMatchingCoords
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
-
close
public void close()Description copied from class:PlugInFrameCloses this window.- Overrides:
closein classPlugInFrame
-
getInstance
-
commandExecuting
- Specified by:
commandExecutingin interfaceCommandListener
-