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
-
Nested Class Summary
Nested classes/interfaces inherited from class java.awt.Window
java.awt.Window.AccessibleAWTWindow, java.awt.Window.Type
-
Field Summary
Fields Modifier and Type Field Description protected java.awt.Button
bSyncAll
Buttons for user control.protected java.awt.Button
bUnsyncAll
Buttons for user control.protected java.awt.Checkbox
cChannel
Checkboxes for user control.protected java.awt.Checkbox
cCoords
Checkboxes for user control.protected java.awt.Checkbox
cCursor
Checkboxes for user control.protected java.awt.Checkbox
cFrame
Checkboxes for user control.protected java.awt.Checkbox
cScaling
Checkboxes for user control.protected java.awt.Checkbox
cSlice
Checkboxes for user control.protected ImageJ
ijInstance
reference to current instance of ImageJ (to avoid repeated IJ.getInstance() s)protected int
oldX
protected int
oldY
protected java.awt.Panel
panel
Panel for GUIprotected java.util.Vector
vListMap
Hashtable to map list ids to image window ids.protected java.util.Vector
vwins
Indices of synchronized image windows are maintained in this Vector.protected java.awt.List
wList
List of currently displayed windows retrieved from ImageJ window manager.protected int
x
protected int
y
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
Modifier and Type Method Description void
actionPerformed(java.awt.event.ActionEvent e)
Implementation of ActionListener interface.protected java.awt.Rectangle
boundingRect(int x, int y, int oldX, int oldY)
Compute bounding rectangle given current and old cursor locations.protected java.awt.Panel
buildControlPanel()
Builds panel containing control buttons.protected java.awt.Component
buildWindowList()
Builds list of open ImageWindowsvoid
close()
Closes this window.java.lang.String
commandExecuting(java.lang.String command)
protected java.awt.Panel
controlPanel()
Build window list display and button controls.void
displayChanged(ij.plugin.frame.DisplayChangeEvent e)
Method to pass on changes of the z-slice of a stack.ImagePlus
getImageFromVector(int n)
Get ImagePlus from Windows-Vector vwins.java.lang.String
getImageTitleFromVector(int n)
Get the title of image n from Windows-Vector vwins.int
getIndexOfImage(ImagePlus image)
Get index of "image" in vector of synchronized windows, if image is in vector.java.awt.Insets
getInsets()
static SyncWindows
getInstance()
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.void
imageClosed(ImagePlus imp)
Implementation of ImageListener interface: update window list, if image is opened or closedvoid
imageOpened(ImagePlus imp)
Implementation of ImageListener interface: update window list, if image is opened or closedvoid
imageUpdated(ImagePlus imp)
void
itemStateChanged(java.awt.event.ItemEvent e)
Item Listener methodvoid
mouseClicked(java.awt.event.MouseEvent e)
Propagate mouse clicked events to all synchronized windows.void
mouseDragged(java.awt.event.MouseEvent e)
Propagate mouse dragged events to all synchronized windows.void
mouseEntered(java.awt.event.MouseEvent e)
Propagate mouse entered events to all synchronized windows.void
mouseExited(java.awt.event.MouseEvent e)
Propagate mouse exited events to all synchronized windows.void
mouseMoved(java.awt.event.MouseEvent e)
Draws the "synchronize" cursor in each of the synchronized windows.void
mousePressed(java.awt.event.MouseEvent e)
Propagate mouse pressed events to all synchronized windows.void
mouseReleased(java.awt.event.MouseEvent e)
Propagate mouse released events to all synchronized windows.static void
setC(ImageWindow source, int channel)
void
setCursor(ImagePlus imp, Roi cursor)
static void
setT(ImageWindow source, int frame)
static void
setZ(ImageWindow source, int slice)
protected void
updateWindowList()
void
windowClosing(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 Details
-
vwins
protected java.util.Vector vwinsIndices 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 wListList of currently displayed windows retrieved from ImageJ window manager. -
panel
protected java.awt.Panel panelPanel for GUI -
cCursor
protected java.awt.Checkbox cCursorCheckboxes for user control. -
cSlice
protected java.awt.Checkbox cSliceCheckboxes for user control. -
cChannel
protected java.awt.Checkbox cChannelCheckboxes for user control. -
cFrame
protected java.awt.Checkbox cFrameCheckboxes for user control. -
cCoords
protected java.awt.Checkbox cCoordsCheckboxes for user control. -
cScaling
protected java.awt.Checkbox cScalingCheckboxes for user control. -
bSyncAll
protected java.awt.Button bSyncAllButtons for user control. -
bUnsyncAll
protected java.awt.Button bUnsyncAllButtons for user control. -
vListMap
protected java.util.Vector vListMapHashtable 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
public SyncWindows(java.lang.String s)
-
-
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
public void mouseMoved(java.awt.event.MouseEvent e)Draws the "synchronize" cursor in each of the synchronized windows.- Specified by:
mouseMoved
in interfacejava.awt.event.MouseMotionListener
-
mouseDragged
public void mouseDragged(java.awt.event.MouseEvent e)Propagate mouse dragged events to all synchronized windows.- Specified by:
mouseDragged
in interfacejava.awt.event.MouseMotionListener
-
mouseClicked
public void mouseClicked(java.awt.event.MouseEvent e)Propagate mouse clicked events to all synchronized windows.- Specified by:
mouseClicked
in interfacejava.awt.event.MouseListener
-
mouseEntered
public void mouseEntered(java.awt.event.MouseEvent e)Propagate mouse entered events to all synchronized windows.- Specified by:
mouseEntered
in interfacejava.awt.event.MouseListener
-
mouseExited
public void mouseExited(java.awt.event.MouseEvent e)Propagate mouse exited events to all synchronized windows.- Specified by:
mouseExited
in interfacejava.awt.event.MouseListener
-
mousePressed
public void mousePressed(java.awt.event.MouseEvent e)Propagate mouse pressed events to all synchronized windows.- Specified by:
mousePressed
in interfacejava.awt.event.MouseListener
-
mouseReleased
public void mouseReleased(java.awt.event.MouseEvent e)Propagate mouse released events to all synchronized windows.- Specified by:
mouseReleased
in interfacejava.awt.event.MouseListener
-
actionPerformed
public void actionPerformed(java.awt.event.ActionEvent e)Implementation of ActionListener interface.- Specified by:
actionPerformed
in interfacejava.awt.event.ActionListener
-
itemStateChanged
public void itemStateChanged(java.awt.event.ItemEvent e)Item Listener method- Specified by:
itemStateChanged
in 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:
windowClosing
in interfacejava.awt.event.WindowListener
- Overrides:
windowClosing
in classPlugInFrame
-
imageOpened
Implementation of ImageListener interface: update window list, if image is opened or closed- Specified by:
imageOpened
in interfaceImageListener
-
imageClosed
Implementation of ImageListener interface: update window list, if image is opened or closed- Specified by:
imageClosed
in interfaceImageListener
-
imageUpdated
- Specified by:
imageUpdated
in 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() -
setCursor
-
getImageFromVector
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
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
public java.awt.Insets getInsets()- Overrides:
getInsets
in classjava.awt.Container
-
close
public void close()Description copied from class:PlugInFrame
Closes this window.- Overrides:
close
in classPlugInFrame
-
getInstance
-
commandExecuting
public java.lang.String commandExecuting(java.lang.String command)- Specified by:
commandExecuting
in interfaceCommandListener
-