ij.plugin.frame
Class SyncWindows

java.lang.Object
  extended by java.awt.Component
      extended by java.awt.Container
          extended by java.awt.Window
              extended by java.awt.Frame
                  extended by ij.plugin.frame.PlugInFrame
                      extended by ij.plugin.frame.SyncWindows
All Implemented Interfaces:
ImageListener, PlugIn, ActionListener, FocusListener, ItemListener, MouseListener, MouseMotionListener, WindowListener, ImageObserver, MenuContainer, Serializable, EventListener, Accessible

public class SyncWindows
extends PlugInFrame
implements ActionListener, MouseMotionListener, MouseListener, ItemListener, ImageListener

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.Frame
Frame.AccessibleAWTFrame
 
Nested classes/interfaces inherited from class java.awt.Window
Window.AccessibleAWTWindow
 
Nested classes/interfaces inherited from class java.awt.Container
Container.AccessibleAWTContainer
 
Nested classes/interfaces inherited from class java.awt.Component
Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy
 
Field Summary
protected  Button bSyncAll
          Buttons for user control.
protected  Button bUnsyncAll
          Buttons for user control.
protected  Checkbox cChannel
          Checkboxes for user control.
protected  Checkbox cCoords
          Checkboxes for user control.
protected  Checkbox cCursor
          Checkboxes for user control.
protected  Checkbox cFrame
          Checkboxes for user control.
protected  Checkbox cScaling
          Checkboxes for user control.
protected  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  Panel panel
          Panel for GUI
protected  Vector vListMap
          Hashtable to map list ids to image window ids.
protected  Vector vwins
          Indices of synchronized image windows are maintained in this Vector.
protected  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
 
Fields inherited from class java.awt.Component
BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
 
Fields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
 
Constructor Summary
SyncWindows()
          Create window sync frame.
SyncWindows(String s)
           
 
Method Summary
 void actionPerformed(ActionEvent e)
          Implementation of ActionListener interface.
protected  Rectangle boundingRect(int x, int y, int oldX, int oldY)
          Compute bounding rectangle given current and old cursor locations.
protected  Panel buildControlPanel()
          Builds panel containing control buttons.
protected  Component buildWindowList()
          Builds list of open ImageWindows
 void close()
          Closes this window.
protected  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.
 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.
 Insets getInsets()
           
static SyncWindows getInstance()
           
protected  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 closed
 void imageOpened(ImagePlus imp)
          Implementation of ImageListener interface: update window list, if image is opened or closed
 void imageUpdated(ImagePlus imp)
           
 void itemStateChanged(ItemEvent e)
          Item Listener method
 void mouseClicked(MouseEvent e)
          Propagate mouse clicked events to all synchronized windows.
 void mouseDragged(MouseEvent e)
          Propagate mouse dragged events to all synchronized windows.
 void mouseEntered(MouseEvent e)
          Propagate mouse entered events to all synchronized windows.
 void mouseExited(MouseEvent e)
          Propagate mouse exited events to all synchronized windows.
 void mouseMoved(MouseEvent e)
          Draws the "synchronize" cursor in each of the synchronized windows.
 void mousePressed(MouseEvent e)
          Propagate mouse pressed events to all synchronized windows.
 void mouseReleased(MouseEvent e)
          Propagate mouse released events to all synchronized windows.
static void setC(ImageWindow source, int channel)
           
static void setT(ImageWindow source, int frame)
           
static void setZ(ImageWindow source, int slice)
           
protected  void updateWindowList()
           
 void windowClosing(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, setCursor, setExtendedState, setIconImage, setMaximizedBounds, setMenuBar, setResizable, setState, setTitle, setUndecorated
 
Methods inherited from class java.awt.Window
addPropertyChangeListener, addPropertyChangeListener, addWindowFocusListener, addWindowListener, addWindowStateListener, applyResourceBundle, applyResourceBundle, createBufferStrategy, createBufferStrategy, dispose, getBufferStrategy, getFocusableWindowState, getFocusCycleRootAncestor, getFocusOwner, getFocusTraversalKeys, getGraphicsConfiguration, getIconImages, getInputContext, getListeners, getLocale, getModalExclusionType, getMostRecentFocusOwner, getOwnedWindows, getOwner, getOwnerlessWindows, getToolkit, getWarningString, getWindowFocusListeners, getWindowListeners, getWindows, getWindowStateListeners, hide, isActive, isAlwaysOnTop, isAlwaysOnTopSupported, isFocusableWindow, isFocusCycleRoot, isFocused, isLocationByPlatform, isShowing, pack, paint, postEvent, processEvent, processWindowEvent, processWindowFocusEvent, processWindowStateEvent, removeWindowFocusListener, removeWindowListener, removeWindowStateListener, reshape, setAlwaysOnTop, setBounds, setBounds, setCursor, setFocusableWindowState, setFocusCycleRoot, setIconImages, setLocationByPlatform, setLocationRelativeTo, setMinimumSize, setModalExclusionType, setSize, setSize, 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, transferFocusBackward, 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, getBackground, getBaseline, getBaselineResizeBehavior, getBounds, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getFontMetrics, getForeground, getGraphics, getHeight, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocation, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPeer, 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, isOpaque, 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, requestFocusInWindow, requestFocusInWindow, resize, resize, setBackground, setComponentOrientation, setDropTarget, setEnabled, setFocusable, setFocusTraversalKeysEnabled, setForeground, setIgnoreRepaint, setLocale, setLocation, setLocation, setMaximumSize, setName, setPreferredSize, show, size, toString, transferFocus, transferFocusUpCycle
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface java.awt.MenuContainer
getFont, postEvent
 

Field Detail

vwins

protected 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 List wList
List of currently displayed windows retrieved from ImageJ window manager.


panel

protected Panel panel
Panel for GUI


cCursor

protected Checkbox cCursor
Checkboxes for user control.


cSlice

protected Checkbox cSlice
Checkboxes for user control.


cChannel

protected Checkbox cChannel
Checkboxes for user control.


cFrame

protected Checkbox cFrame
Checkboxes for user control.


cCoords

protected Checkbox cCoords
Checkboxes for user control.


cScaling

protected Checkbox cScaling
Checkboxes for user control.


bSyncAll

protected Button bSyncAll
Buttons for user control.


bUnsyncAll

protected Button bUnsyncAll
Buttons for user control.


vListMap

protected 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)

Constructor Detail

SyncWindows

public SyncWindows()
Create window sync frame. Frame is shown via call to show() or by invoking run method.


SyncWindows

public SyncWindows(String 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(MouseEvent e)
Draws the "synchronize" cursor in each of the synchronized windows.

Specified by:
mouseMoved in interface MouseMotionListener

mouseDragged

public void mouseDragged(MouseEvent e)
Propagate mouse dragged events to all synchronized windows.

Specified by:
mouseDragged in interface MouseMotionListener

mouseClicked

public void mouseClicked(MouseEvent e)
Propagate mouse clicked events to all synchronized windows.

Specified by:
mouseClicked in interface MouseListener

mouseEntered

public void mouseEntered(MouseEvent e)
Propagate mouse entered events to all synchronized windows.

Specified by:
mouseEntered in interface MouseListener

mouseExited

public void mouseExited(MouseEvent e)
Propagate mouse exited events to all synchronized windows.

Specified by:
mouseExited in interface MouseListener

mousePressed

public void mousePressed(MouseEvent e)
Propagate mouse pressed events to all synchronized windows.

Specified by:
mousePressed in interface MouseListener

mouseReleased

public void mouseReleased(MouseEvent e)
Propagate mouse released events to all synchronized windows.

Specified by:
mouseReleased in interface MouseListener

actionPerformed

public void actionPerformed(ActionEvent e)
Implementation of ActionListener interface.

Specified by:
actionPerformed in interface ActionListener

itemStateChanged

public void itemStateChanged(ItemEvent e)
Item Listener method

Specified by:
itemStateChanged in interface ItemListener

windowClosing

public void windowClosing(WindowEvent e)
Override parent windowClosing method to clean up synchronized resources on exit.

Specified by:
windowClosing in interface WindowListener
Overrides:
windowClosing in class PlugInFrame

imageOpened

public void imageOpened(ImagePlus imp)
Implementation of ImageListener interface: update window list, if image is opened or closed

Specified by:
imageOpened in interface ImageListener

imageClosed

public void imageClosed(ImagePlus imp)
Implementation of ImageListener interface: update window list, if image is opened or closed

Specified by:
imageClosed in interface ImageListener

imageUpdated

public void imageUpdated(ImagePlus imp)
Specified by:
imageUpdated in interface ImageListener

controlPanel

protected Panel controlPanel()
Build window list display and button controls. Create Hashtable that connects list entries to window IDs.


buildWindowList

protected Component buildWindowList()
Builds list of open ImageWindows


buildControlPanel

protected Panel buildControlPanel()
Builds panel containing control buttons.


boundingRect

protected 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 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 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 Insets getInsets()
Overrides:
getInsets in class Container

close

public void close()
Description copied from class: PlugInFrame
Closes this window.

Overrides:
close in class PlugInFrame

getInstance

public static SyncWindows getInstance()


Copyright © 1997–2015 NIH. All rights reserved.