org.jhotdraw.contrib
Class MiniMapView

java.lang.Object
  extended byjava.awt.Component
      extended byjava.awt.Container
          extended byjavax.swing.JComponent
              extended byorg.jhotdraw.contrib.MiniMapView
All Implemented Interfaces:
java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable
Direct Known Subclasses:
MiniMapZoomableView

public class MiniMapView
extends javax.swing.JComponent

Utility component for enhancing component scrolling. It provides a "minature" view of the entire contents of a JScrollPane and the means to scroll that JScrollPane by moving a rectangle representing the viewable area of the JScrollPane. If the user clicks on an area inside of the MiniMapView, the JScrollPane's view is centered on that area. The user may also drag the rectangle representation of the JScrollPane's view around the MiniMap to scroll.

Version:
<$CURRENT_VERSION$>
See Also:
Serialized Form

Nested Class Summary
 class MiniMapView.MouseListener
           
 
Nested classes inherited from class javax.swing.JComponent
javax.swing.JComponent.AccessibleJComponent
 
Nested classes inherited from class java.awt.Container
java.awt.Container.AccessibleAWTContainer
 
Nested classes inherited from class java.awt.Component
java.awt.Component.AccessibleAWTComponent, 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
MiniMapView(DrawingView newMappedDrawingView, javax.swing.JScrollPane subject)
           
 
Method Summary
protected  void drawViewRectangle(java.awt.Graphics2D g2d, java.awt.Rectangle viewPortRectangle)
           
protected  java.awt.geom.AffineTransform getInverseSubjectTransform()
          Allows subclasses to modify the transformation used in creating the mini-map
protected  java.awt.Component getMappedComponent()
           
 DrawingView getMappedDrawingView()
           
 javax.swing.JScrollPane getSubject()
           
protected  int[] getUpperLeftPointsFromCenter(int centerX, int centerY)
           
 java.awt.Color getViewBowColor()
           
protected  java.awt.Rectangle getViewRectangle()
           
protected  java.awt.geom.AffineTransform getViewToMiniMapTransform(java.awt.Component mappedComponent)
           
 void paint(java.awt.Graphics g)
           
protected  void scrollSubjectTo(int upperLeftX, int upperLeftY)
          Scrolls the subject scroll pane to the coordinates specified.
protected  void setMappedDrawingView(DrawingView newMappedDrawingView)
           
protected  void setSubject(javax.swing.JScrollPane subject)
           
 void setViewBoxColor(java.awt.Color c)
           
 
Methods inherited from class javax.swing.JComponent
addAncestorListener, addNotify, addPropertyChangeListener, addPropertyChangeListener, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getAccessibleContext, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBorder, getBounds, getClientProperty, getComponentGraphics, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getGraphics, getHeight, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPreferredSize, getPropertyChangeListeners, getPropertyChangeListeners, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getUIClassID, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isManagingFocus, isMaximumSizeSet, isMinimumSizeSet, isOpaque, isOptimizedDrawingEnabled, isPaintingTile, isPreferredSizeSet, isRequestFocusEnabled, isValidateRoot, paintBorder, paintChildren, paintComponent, paintImmediately, paintImmediately, paramString, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removePropertyChangeListener, removePropertyChangeListener, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFont, setForeground, 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, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setFocusCycleRoot, setFocusTraversalKeys, setFocusTraversalPolicy, 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, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getFontMetrics, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMouseWheelListeners, getName, getParent, getPeer, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, hide, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, 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, processMouseEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, 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

MiniMapView

public MiniMapView(DrawingView newMappedDrawingView,
                   javax.swing.JScrollPane subject)
Method Detail

setMappedDrawingView

protected void setMappedDrawingView(DrawingView newMappedDrawingView)

getMappedDrawingView

public DrawingView getMappedDrawingView()

setSubject

protected void setSubject(javax.swing.JScrollPane subject)

getSubject

public javax.swing.JScrollPane getSubject()

getViewBowColor

public java.awt.Color getViewBowColor()

setViewBoxColor

public void setViewBoxColor(java.awt.Color c)

getMappedComponent

protected java.awt.Component getMappedComponent()
Returns:
The component that is actually being "mini-mapped", that is the component inside the scroll pane

paint

public void paint(java.awt.Graphics g)

drawViewRectangle

protected void drawViewRectangle(java.awt.Graphics2D g2d,
                                 java.awt.Rectangle viewPortRectangle)

getViewToMiniMapTransform

protected java.awt.geom.AffineTransform getViewToMiniMapTransform(java.awt.Component mappedComponent)

getInverseSubjectTransform

protected java.awt.geom.AffineTransform getInverseSubjectTransform()
Allows subclasses to modify the transformation used in creating the mini-map


getViewRectangle

protected java.awt.Rectangle getViewRectangle()
Returns:
The rectangle (in Mini-Map world-coordinates) representing the area being viewed inside of the scroll pane subject

scrollSubjectTo

protected void scrollSubjectTo(int upperLeftX,
                               int upperLeftY)
Scrolls the subject scroll pane to the coordinates specified.

Parameters:
upperLeftX - The new upper left corner X-coordinate (in subject world-coordinates) of the subject scroll pane
upperLeftY - The new upper left corner Y-coordinate (in subject world-coordinates) of the subject scroll pane

getUpperLeftPointsFromCenter

protected int[] getUpperLeftPointsFromCenter(int centerX,
                                             int centerY)