org.openstreetmap.josm.gui
Class MultiSplitPane

java.lang.Object
  extended by java.awt.Component
      extended by java.awt.Container
          extended by javax.swing.JComponent
              extended by javax.swing.JPanel
                  extended by org.openstreetmap.josm.gui.MultiSplitPane
All Implemented Interfaces:
java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, javax.accessibility.Accessible

public class MultiSplitPane
extends javax.swing.JPanel

All properties in this class are bound: when a properties value is changed, all PropertyChangeListeners are fired.

See Also:
Serialized Form

Nested Class Summary
protected  class MultiSplitPane.AccessibleMultiSplitPane
           
private  class MultiSplitPane.DefaultDividerPainter
           
static class MultiSplitPane.DividerPainter
          Draws a single Divider.
private  class MultiSplitPane.InputHandler
           
 
Nested classes/interfaces inherited from class javax.swing.JPanel
javax.swing.JPanel.AccessibleJPanel
 
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
private  javax.accessibility.AccessibleContext accessibleContext
           
private  boolean continuousLayout
           
private  MultiSplitPane.DividerPainter dividerPainter
           
private  MultiSplitLayout.Divider dragDivider
           
private  int dragMax
           
private  int dragMin
           
private  int dragOffsetX
           
private  int dragOffsetY
           
private  boolean dragUnderway
           
private  java.awt.Rectangle initialDividerBounds
           
private  boolean oldFloatingDividers
           
 
Fields inherited from class javax.swing.JComponent
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
MultiSplitPane()
          Creates a MultiSplitPane with it's LayoutManager set to to an empty MultiSplitLayout.
 
Method Summary
 MultiSplitLayout.Divider activeDivider()
          Returns the Divider that's currently being moved, typically because the user is dragging it, or null.
private  void cancelDrag()
           
private  void clearDragState()
           
private  void finishDrag(int x, int y)
           
 javax.accessibility.AccessibleContext getAccessibleContext()
           
 MultiSplitPane.DividerPainter getDividerPainter()
          The DividerPainter that's used to paint Dividers on this MultiSplitPane.
 MultiSplitLayout getMultiSplitLayout()
          A convenience method that returns the layout manager cast to MutliSplitLayout.
 boolean isContinuousLayout()
          Returns true if dragging a divider only updates the layout when the drag gesture ends (typically, when the mouse button is released).
protected  void paintChildren(java.awt.Graphics g)
          Uses the DividerPainter (if any) to paint each Divider that overlaps the clip Rectangle.
private  void repaintDragLimits()
           
 void setContinuousLayout(boolean continuousLayout)
          Sets the value of the continuousLayout property.
 void setDividerPainter(MultiSplitPane.DividerPainter dividerPainter)
          Sets the DividerPainter that's used to paint Dividers on this MultiSplitPane.
 void setDividerSize(int dividerSize)
          A convenience method that sets the MultiSplitLayout dividerSize property.
 void setModel(MultiSplitLayout.Node model)
          A convenience method that sets the MultiSplitLayout model.
private  void startDrag(int mx, int my)
           
private  void updateCursor(int x, int y, boolean show)
           
private  void updateDrag(int mx, int my)
           
 
Methods inherited from class javax.swing.JPanel
getUI, getUIClassID, paramString, setUI, updateUI
 
Methods inherited from class javax.swing.JComponent
addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, 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, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintComponent, paintImmediately, paintImmediately, 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
 
Methods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, addImpl, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, 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, 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, transferFocusBackward, transferFocusUpCycle
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

accessibleContext

private javax.accessibility.AccessibleContext accessibleContext

continuousLayout

private boolean continuousLayout

dividerPainter

private MultiSplitPane.DividerPainter dividerPainter

dragUnderway

private boolean dragUnderway

dragDivider

private MultiSplitLayout.Divider dragDivider

initialDividerBounds

private java.awt.Rectangle initialDividerBounds

oldFloatingDividers

private boolean oldFloatingDividers

dragOffsetX

private int dragOffsetX

dragOffsetY

private int dragOffsetY

dragMin

private int dragMin

dragMax

private int dragMax
Constructor Detail

MultiSplitPane

public MultiSplitPane()
Creates a MultiSplitPane with it's LayoutManager set to to an empty MultiSplitLayout.

Method Detail

getMultiSplitLayout

public final MultiSplitLayout getMultiSplitLayout()
A convenience method that returns the layout manager cast to MutliSplitLayout.

Returns:
this MultiSplitPane's layout manager
See Also:
Container.getLayout(), setModel(org.openstreetmap.josm.gui.MultiSplitLayout.Node)

setModel

public final void setModel(MultiSplitLayout.Node model)
A convenience method that sets the MultiSplitLayout model. Equivalent to getMultiSplitLayout.setModel(model)

Parameters:
model - the root of the MultiSplitLayout model
See Also:
getMultiSplitLayout(), MultiSplitLayout.setModel(org.openstreetmap.josm.gui.MultiSplitLayout.Node)

setDividerSize

public final void setDividerSize(int dividerSize)
A convenience method that sets the MultiSplitLayout dividerSize property. Equivalent to getMultiSplitLayout().setDividerSize(newDividerSize).

Parameters:
dividerSize - the value of the dividerSize property
See Also:
getMultiSplitLayout(), MultiSplitLayout.setDividerSize(int)

setContinuousLayout

public void setContinuousLayout(boolean continuousLayout)
Sets the value of the continuousLayout property. If true, then the layout is revalidated continuously while a divider is being moved. The default value of this property is true.

Parameters:
continuousLayout - value of the continuousLayout property
See Also:
isContinuousLayout()

isContinuousLayout

public boolean isContinuousLayout()
Returns true if dragging a divider only updates the layout when the drag gesture ends (typically, when the mouse button is released).

Returns:
the value of the continuousLayout property
See Also:
setContinuousLayout(boolean)

activeDivider

public MultiSplitLayout.Divider activeDivider()
Returns the Divider that's currently being moved, typically because the user is dragging it, or null.

Returns:
the Divider that's being moved or null.

getDividerPainter

public MultiSplitPane.DividerPainter getDividerPainter()
The DividerPainter that's used to paint Dividers on this MultiSplitPane. This property may be null.

Returns:
the value of the dividerPainter Property
See Also:
setDividerPainter(org.openstreetmap.josm.gui.MultiSplitPane.DividerPainter)

setDividerPainter

public void setDividerPainter(MultiSplitPane.DividerPainter dividerPainter)
Sets the DividerPainter that's used to paint Dividers on this MultiSplitPane. The default DividerPainter only draws the activeDivider (if there is one) and then, only if continuousLayout is false. The value of this property is used by the paintChildren method: Dividers are painted after the MultiSplitPane's children have been rendered so that the activeDivider can appear "on top of" the children.

Parameters:
dividerPainter - the value of the dividerPainter property, can be null
See Also:
paintChildren(java.awt.Graphics), activeDivider()

paintChildren

protected void paintChildren(java.awt.Graphics g)
Uses the DividerPainter (if any) to paint each Divider that overlaps the clip Rectangle. This is done after the call to super.paintChildren() so that Dividers can be rendered "on top of" the children.

Overrides:
paintChildren in class javax.swing.JComponent

startDrag

private void startDrag(int mx,
                       int my)

repaintDragLimits

private void repaintDragLimits()

updateDrag

private void updateDrag(int mx,
                        int my)

clearDragState

private void clearDragState()

finishDrag

private void finishDrag(int x,
                        int y)

cancelDrag

private void cancelDrag()

updateCursor

private void updateCursor(int x,
                          int y,
                          boolean show)

getAccessibleContext

public javax.accessibility.AccessibleContext getAccessibleContext()
Specified by:
getAccessibleContext in interface javax.accessibility.Accessible
Overrides:
getAccessibleContext in class javax.swing.JPanel


JOSM