be.ugent.caagt.swirl.mouse
Class MouseOverlay

java.lang.Object
  extended by java.awt.Component
      extended by java.awt.Container
          extended by javax.swing.JComponent
              extended by be.ugent.caagt.swirl.mouse.MouseOverlay
All Implemented Interfaces:
java.awt.event.MouseListener, java.awt.event.MouseMotionListener, java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, java.util.EventListener

public class MouseOverlay
extends javax.swing.JComponent
implements java.awt.event.MouseListener, java.awt.event.MouseMotionListener

Invisible component which overlays another component in order to handle mouse operations for it.

The mouse operations are delegated to a MouseTool which in turn is managed by a GenericSelectionModel.

See Also:
Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from class javax.swing.JComponent
javax.swing.JComponent.AccessibleJComponent
 
Nested classes/interfaces inherited from class java.awt.Container
java.awt.Container.AccessibleAWTContainer
 
Nested classes/interfaces inherited from class java.awt.Component
java.awt.Component.AccessibleAWTComponent, java.awt.Component.BaselineResizeBehavior, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy
 
Field Summary
 
Fields inherited from class javax.swing.JComponent
accessibleContext, listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW
 
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
MouseOverlay(javax.swing.JComponent parent)
          Creates a new instance of this class with a default model.
MouseOverlay(javax.swing.JComponent parent, GenericSelectionModel<MouseTool> mouseToolModel)
          Creates a new instance of this class.
 
Method Summary
 void doLayout()
          Overridden to make this component always the same size as its parent.
 GenericSelectionModel<MouseTool> getMouseToolModel()
          Return the underlying model which keeps track of what mouse tool is currently active.
protected  void handleDelayedPressed(java.awt.event.MouseEvent mouseEvent)
          Handles delayed pressed event.
protected  void handleDragged(java.awt.event.MouseEvent mouseEvent)
          Handles dragged event.
 void mouseClicked(java.awt.event.MouseEvent mouseEvent)
           
 void mouseDragged(java.awt.event.MouseEvent mouseEvent)
          Dispatch the dragged event to the currently active handler.
 void mouseEntered(java.awt.event.MouseEvent mouseEvent)
           
 void mouseExited(java.awt.event.MouseEvent mouseEvent)
           
 void mouseMoved(java.awt.event.MouseEvent mouseEvent)
           
 void mousePressed(java.awt.event.MouseEvent mouseEvent)
          If the event is a popup trigger, dispatch it as a popup event to the first handler that takes it.
 void mouseReleased(java.awt.event.MouseEvent mouseEvent)
          If a drag event preceeds this event, send it to the active handler.
protected  void paintComponent(java.awt.Graphics g)
          Let the active handler provide mouse feedback during a mouse gesture.
 void setTool(MouseTool tool)
          Change the tool to be used by this overlay.
 
Methods inherited from class javax.swing.JComponent
addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getAccessibleContext, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBaseline, getBaselineResizeBehavior, getBorder, getBounds, getClientProperty, getComponentGraphics, getComponentPopupMenu, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getFontMetrics, getGraphics, getHeight, getInheritsPopupMenu, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPopupLocation, getPreferredSize, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getUIClassID, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintImmediately, paintImmediately, paramString, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update, updateUI
 
Methods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, addImpl, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, getMousePosition, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setLayout, transferFocusBackward, transferFocusDownCycle, 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, createImage, createImage, createVolatileImage, createVolatileImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPeer, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, hide, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isPreferredSizeSet, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusUpCycle
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

MouseOverlay

public MouseOverlay(javax.swing.JComponent parent,
                    GenericSelectionModel<MouseTool> mouseToolModel)
Creates a new instance of this class.

Parameters:
parent - Parent component for this overlay
mouseToolModel - Underlying model which keeps track of the current mouse tool to be used

MouseOverlay

public MouseOverlay(javax.swing.JComponent parent)
Creates a new instance of this class with a default model.

Parameters:
parent - Parent component for this overlay
Method Detail

getMouseToolModel

public GenericSelectionModel<MouseTool> getMouseToolModel()
Return the underlying model which keeps track of what mouse tool is currently active.


setTool

public void setTool(MouseTool tool)
Change the tool to be used by this overlay.


doLayout

public void doLayout()
Overridden to make this component always the same size as its parent.

Overrides:
doLayout in class java.awt.Container

mousePressed

public void mousePressed(java.awt.event.MouseEvent mouseEvent)
If the event is a popup trigger, dispatch it as a popup event to the first handler that takes it. Otherwise remember state so it can be dispatched during the first drag or release.

Specified by:
mousePressed in interface java.awt.event.MouseListener

mouseDragged

public void mouseDragged(java.awt.event.MouseEvent mouseEvent)
Dispatch the dragged event to the currently active handler.

If this is the first drag, first dispatch the cached pressed event to the first handler that will take it and mark that handler as active. This implementation first calls handleDelayedPressed(java.awt.event.MouseEvent) when needed and then handleDragged(java.awt.event.MouseEvent) if a handler was marked as active.

Specified by:
mouseDragged in interface java.awt.event.MouseMotionListener

handleDelayedPressed

protected void handleDelayedPressed(java.awt.event.MouseEvent mouseEvent)
Handles delayed pressed event. Dispatches the mouse event to the first handler that will take it and mark that handler as active.


handleDragged

protected void handleDragged(java.awt.event.MouseEvent mouseEvent)
Handles dragged event. Dispatches the event to the active handler.


mouseReleased

public void mouseReleased(java.awt.event.MouseEvent mouseEvent)
If a drag event preceeds this event, send it to the active handler. Otherwise, check whether this is a popup trigger. If true, hand it as a popup event to the first handler that will take it. Otherwise send it as a clicked event to the first handler that will take it. Dispatch the released event to the currently active handler.

Specified by:
mouseReleased in interface java.awt.event.MouseListener

mouseClicked

public void mouseClicked(java.awt.event.MouseEvent mouseEvent)
Specified by:
mouseClicked in interface java.awt.event.MouseListener

mouseEntered

public void mouseEntered(java.awt.event.MouseEvent mouseEvent)
Specified by:
mouseEntered in interface java.awt.event.MouseListener

mouseExited

public void mouseExited(java.awt.event.MouseEvent mouseEvent)
Specified by:
mouseExited in interface java.awt.event.MouseListener

mouseMoved

public void mouseMoved(java.awt.event.MouseEvent mouseEvent)
Specified by:
mouseMoved in interface java.awt.event.MouseMotionListener

paintComponent

protected void paintComponent(java.awt.Graphics g)
Let the active handler provide mouse feedback during a mouse gesture.

Overrides:
paintComponent in class javax.swing.JComponent