org.jdesktop.swingx
Class JXMultiSplitPane

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.jdesktop.swingx.JXMultiSplitPane
All Implemented Interfaces:
ImageObserver, MenuContainer, Serializable, Accessible

public class JXMultiSplitPane
extends 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 JXMultiSplitPane.AccessibleMultiSplitPane
           
static class JXMultiSplitPane.DividerPainter
          Draws a single Divider.
 
Nested classes/interfaces inherited from class javax.swing.JPanel
JPanel.AccessibleJPanel
 
Nested classes/interfaces inherited from class javax.swing.JComponent
JComponent.AccessibleJComponent
 
Nested classes/interfaces inherited from class java.awt.Container
Container.AccessibleAWTContainer
 
Nested classes/interfaces inherited from class java.awt.Component
Component.AccessibleAWTComponent, Component.BltBufferStrategy, Component.FlipBufferStrategy
 
Field Summary
 
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
JXMultiSplitPane()
          Creates a MultiSplitPane with it's LayoutManager set to to an empty MultiSplitLayout.
JXMultiSplitPane(MultiSplitLayout layout)
          Creates a MultiSplitPane.
 
Method Summary
 MultiSplitLayout.Divider activeDivider()
          Returns the Divider that's currently being moved, typically because the user is dragging it, or null.
 AccessibleContext getAccessibleContext()
          Gets the AccessibleContext associated with this JPanel.
 Painter getBackgroundPainter()
           
 JXMultiSplitPane.DividerPainter getDividerPainter()
          The DividerPainter that's used to paint Dividers on this MultiSplitPane.
 int getDividerSize()
          A convenience method that returns the MultiSplitLayout dividerSize property.
protected  Dimension getMaxNodeSize(MultiSplitLayout msl, MultiSplitLayout.Node n)
          Set the maximum node size.
protected  Dimension getMinNodeSize(MultiSplitLayout msl, MultiSplitLayout.Node n)
          Set the minimum node size.
 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(Graphics g)
          Uses the DividerPainter (if any) to paint each Divider that overlaps the clip Rectangle.
protected  void paintComponent(Graphics g)
          Calls the UI delegate's paint method, if the UI delegate is non-null.
 void setBackgroundPainter(Painter p)
          Specifies a Painter to use to paint the background of this JXPanel.
 void setContinuousLayout(boolean continuousLayout)
          Sets the value of the continuousLayout property.
 void setDividerPainter(JXMultiSplitPane.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.
 
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, 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, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, 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, 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

JXMultiSplitPane

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


JXMultiSplitPane

public JXMultiSplitPane(MultiSplitLayout layout)
Creates a MultiSplitPane.

Parameters:
layout - the new split pane's layout
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.jdesktop.swingx.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.jdesktop.swingx.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)

getDividerSize

public final int getDividerSize()
A convenience method that returns the MultiSplitLayout dividerSize property. Equivalent to getMultiSplitLayout().getDividerSize().

See Also:
getMultiSplitLayout(), MultiSplitLayout.getDividerSize()

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 JXMultiSplitPane.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.jdesktop.swingx.JXMultiSplitPane.DividerPainter)

setDividerPainter

public void setDividerPainter(JXMultiSplitPane.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()

paintComponent

protected void paintComponent(Graphics g)
Calls the UI delegate's paint method, if the UI delegate is non-null. We pass the delegate a copy of the Graphics object to protect the rest of the paint code from irrevocable changes (for example, Graphics.translate).

If you override this in a subclass you should not make permanent changes to the passed in Graphics. For example, you should not alter the clip Rectangle or modify the transform. If you need to do these operations you may find it easier to create a new Graphics from the passed in Graphics and manipulate it. Further, if you do not invoker super's implementation you must honor the opaque property, that is if this component is opaque, you must completely fill in the background in a non-opaque color. If you do not honor the opaque property you will likely see visual artifacts.

The passed in Graphics object might have a transform other than the identify transform installed on it. In this case, you might get unexpected results if you cumulatively apply another transform.

Overrides:
paintComponent in class JComponent
Parameters:
g - the Graphics object to protect
See Also:
JComponent.paint(Graphics), ComponentUI

setBackgroundPainter

public void setBackgroundPainter(Painter p)
Specifies a Painter to use to paint the background of this JXPanel. If p is not null, then setOpaque(false) will be called as a side effect. A component should not be opaque if painters are being used, because Painters may paint transparent pixels or not paint certain pixels, such as around the border insets.


getBackgroundPainter

public Painter getBackgroundPainter()

paintChildren

protected void paintChildren(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.

Paints this component's children. If shouldUseBuffer is true, no component ancestor has a buffer and the component children can use a buffer if they have one. Otherwise, one ancestor has a buffer currently in use and children should not use a buffer to paint.

Overrides:
paintChildren in class JComponent
Parameters:
g - the Graphics context in which to paint
See Also:
JComponent.paint(java.awt.Graphics), Container.paint(java.awt.Graphics)

getMaxNodeSize

protected Dimension getMaxNodeSize(MultiSplitLayout msl,
                                   MultiSplitLayout.Node n)
Set the maximum node size. This method can be overridden to limit the size of a node during a drag operation on a divider. When implementing this method in a subclass the node instance should be checked, for example: class MyMultiSplitPane extends JXMultiSplitPane { protected Dimension getMaxNodeSize( MultiSplitLayout msl, Node n ) { if (( n instanceof Leaf ) && ((Leaf)n).getName().equals( "top" )) return msl.maximumNodeSize( n ); return null; } }

Parameters:
msl - the MultiSplitLayout used by this pane
n - the node being resized
Returns:
the maximum size or null (by default) to ignore the maximum size.

getMinNodeSize

protected Dimension getMinNodeSize(MultiSplitLayout msl,
                                   MultiSplitLayout.Node n)
Set the minimum node size. This method can be overridden to limit the size of a node during a drag operation on a divider.

Parameters:
msl - the MultiSplitLayout used by this pane
n - the node being resized
Returns:
the maximum size or null (by default) to ignore the maximum size.

getAccessibleContext

public AccessibleContext getAccessibleContext()
Description copied from class: javax.swing.JPanel
Gets the AccessibleContext associated with this JPanel. For JPanels, the AccessibleContext takes the form of an AccessibleJPanel. A new AccessibleJPanel instance is created if necessary.

Specified by:
getAccessibleContext in interface Accessible
Overrides:
getAccessibleContext in class JPanel
Returns:
an AccessibleJPanel that serves as the AccessibleContext of this JPanel