Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## org.jdesktop.swingx
Class JXCollapsiblePane

    java.lang.Object
      java.awt.Component
          java.awt.Container
              javax.swing.JComponent
                  javax.swing.JPanel
                      org.jdesktop.swingx.JXPanel
                          org.jdesktop.swingx.JXCollapsiblePane

All Implemented Interfaces:
  java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, javax.accessibility.Accessible, javax.swing.Scrollable

    public class JXCollapsiblePane

extends JXPanel

`JXCollapsiblePane` provides a component which can collapse or expand its content area with animation and fade in/fade out effects. It also acts as a standard container for other Swing components.

The `JXCollapsiblePane` has a "content pane" that actually holds the displayed contents. This means that colors, fonts, and other display configuration items must be set on the content pane.

     // to set the font
     collapsiblePane.getContentPane().setFont(font);
     // to set the background color
     collapsiblePane.getContentPane().setBackground(Color.RED);

For convenience, the `add` and `remove` methods forward to the content pane. The following code shows to ways to add a child to the content pane.

     // to add a child
     collapsiblePane.getContentPane().add(component);
     // to add a child
     collapsiblePane.add(component);

To set the content pane, do not use `add`, use `setContentPane(Container)`.

In this example, the `JXCollapsiblePane` is used to build a Search pane which can be shown and hidden on demand.

     JXCollapsiblePane cp = new JXCollapsiblePane();

     // JXCollapsiblePane can be used like any other container
     cp.setLayout(new BorderLayout());

     // the Controls panel with a textfield to filter the tree
     JPanel controls = new JPanel(new FlowLayout(FlowLayout.LEFT, 4, 0));
     controls.add(new JLabel("Search:"));
     controls.add(new JTextField(10));
     controls.add(new JButton("Refresh"));
     controls.setBorder(new TitledBorder("Filters"));
     cp.add("Center", controls);

     JXFrame frame = new JXFrame();
     frame.setLayout(new BorderLayout());

     // Put the "Controls" first
     frame.add("North", cp);

     // Then the tree - we assume the Controls would somehow filter the tree
     JScrollPane scroll = new JScrollPane(new JTree());
     frame.add("Center", scroll);

     // Show/hide the "Controls"
     JButton toggle = new JButton(cp.getActionMap().get(JXCollapsiblePane.TOGGLE_ACTION));
     toggle.setText("Show/Hide Search Panel");
     frame.add("South", toggle);

     frame.pack();
     frame.setVisible(true);

The `JXCollapsiblePane` has a default toggle action registered under the name `TOGGLE_ACTION`. Bind this action to a button and pressing the button will automatically toggle the pane between expanded and collapsed states. Additionally, you can define the icons to use through the `EXPAND_ICON` and `COLLAPSE_ICON` properties on the action. Example

     // get the built-in toggle action
     Action toggleAction = collapsible.getActionMap().
       get(JXCollapsiblePane.TOGGLE_ACTION);

     // use the collapse/expand icons from the JTree UI
     toggleAction.putValue(JXCollapsiblePane.COLLAPSE_ICON,
                           UIManager.getIcon("Tree.expandedIcon"));
     toggleAction.putValue(JXCollapsiblePane.EXPAND_ICON,
                           UIManager.getIcon("Tree.collapsedIcon"));

Note: `JXCollapsiblePane` requires its parent container to have a `LayoutManager` using `getPreferredSize()` when calculating its layout (example `VerticalLayout`, `BorderLayout`).

Author:
  rbair (from the JDNC project), Frederic Lavigne, Karl George Schaefer
See Also:
  Serialized Form

Nested Class Summary
`static interface` | `JXCollapsiblePane.CollapsiblePaneContainer` Tagging interface for containers in a JXCollapsiblePane hierarchy who needs to be revalidated (invalidate/validate/repaint) when the pane is expanding or collapsing.
`static class` | `JXCollapsiblePane.Direction` The direction defines how the collapsible pane will collapse.

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
`static java.lang.String` | `ANIMATION_STATE_KEY` Used when generating PropertyChangeEvents for the "animationState" property.
`static java.lang.String` | `COLLAPSE_ICON` The icon used by the "toggle" action when the JXCollapsiblePane is expanded, i.e the icon which indicates the pane can be collapsed.
`static java.lang.String` | `EXPAND_ICON` The icon used by the "toggle" action when the JXCollapsiblePane is collapsed, i.e the icon which indicates the pane can be expanded.
`static java.lang.String` | `TOGGLE_ACTION` JXCollapsible has a built-in toggle action which can be bound to buttons.

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
`JXCollapsiblePane()` Constructs a new JXCollapsiblePane with a `JXPanel` as content pane and a vertical `VerticalLayout` with a gap of 2 pixels as layout manager and a vertical orientation.
`JXCollapsiblePane(JXCollapsiblePane.Direction direction)` Constructs a new JXCollapsiblePane with a `JXPanel` as content pane and the specified direction.
`JXCollapsiblePane(JXCollapsiblePane.Direction direction, java.awt.LayoutManager layout)` Constructs a new JXCollapsiblePane with a `JPanel` as content pane and the given LayoutManager and orientation.
`JXCollapsiblePane(java.awt.LayoutManager layout)` Constructs a new JXCollapsiblePane with a `JPanel` as content pane and the given LayoutManager and a vertical orientation

Method Summary
`protected void` | `addImpl(java.awt.Component comp, java.lang.Object constraints, int index)` Overriden to redirect call to the content pane.
`javax.swing.border.Border` | `getBorder()`
`java.awt.Container` | `getContentPane()`
`JXCollapsiblePane.Direction` | `getDirection()`
`java.awt.Dimension` | `getMinimumSize()` A collapsible pane always returns its preferred size for the minimum size to ensure that the collapsing happens correctly.
`java.awt.Dimension` | `getPreferredSize()` The critical part of the animation of this `JXCollapsiblePane` relies on the calculation of its preferred size.
`boolean` | `isAnimated()`
`boolean` | `isCollapsed()`
`void` | `remove(java.awt.Component comp)` Overriden to redirect call to the content pane
`void` | `remove(int index)` Overriden to redirect call to the content pane.
`void` | `removeAll()` Overriden to redirect call to the content pane.
`void` | `setAnimated(boolean animated)` If true, enables the animation when pane is collapsed/expanded.
`void` | `setBorder(javax.swing.border.Border border)`
`void` | `setCollapsed(boolean val)` Expands or collapses this `JXCollapsiblePane`.
`void` | `setContentPane(java.awt.Container contentPanel)` Sets the content pane of this JXCollapsiblePane.
`void` | `setDirection(JXCollapsiblePane.Direction direction)` Changes the direction of this collapsible pane.
`void` | `setLayout(java.awt.LayoutManager mgr)` Overriden to redirect call to the content pane.
`void` | `setMinimumSize(java.awt.Dimension minimumSize)` Forwards to the content pane.
`void` | `setPreferredSize(java.awt.Dimension preferredSize)`

Methods inherited from class org.jdesktop.swingx.JXPanel
`getAlpha, getBackgroundPainter, getEffectiveAlpha, getPainterChangeListener, getPreferredScrollableViewportSize, getScrollableBlockIncrement, getScrollableHeightHint, getScrollableTracksViewportHeight, getScrollableTracksViewportWidth, getScrollableUnitIncrement, getScrollableWidthHint, isInheritAlpha, isPaintBorderInsets, paint, paintComponent, setAlpha, setBackground, setBackgroundPainter, setInheritAlpha, setPaintBorderInsets, setScrollableHeightHint, setScrollableTracksViewportHeight, setScrollableTracksViewportWidth, setScrollableWidthHint`

Methods inherited from class javax.swing.JPanel
`getAccessibleContext, 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, getBounds, getClientProperty, getComponentGraphics, getComponentPopupMenu, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getFontMetrics, getGraphics, getHeight, getInheritsPopupMenu, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getNextFocusableComponent, getPopupLocation, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paintBorder, paintChildren, 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, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setNextFocusableComponent, setOpaque, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update`

Methods inherited from class java.awt.Container
`add, add, add, add, add, addContainerListener, 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, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, 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`

Field Detail

### ANIMATION_STATE_KEY

    public static final java.lang.String ANIMATION_STATE_KEY

  Used when generating PropertyChangeEvents for the "animationState" property. The PropertyChangeEvent will takes the following different values for `PropertyChangeEvent.getNewValue()`:
  - `reinit` every time the animation starts
  - `expanded` when the animation ends and the pane is expanded
  - `collapsed` when the animation ends and the pane is collapsed

  See Also:
    Constant Field Values

### TOGGLE_ACTION

    public static final java.lang.String TOGGLE_ACTION

  JXCollapsible has a built-in toggle action which can be bound to buttons. Accesses the action through `collapsiblePane.getActionMap().get(JXCollapsiblePane.TOGGLE_ACTION)`.

  See Also:
    Constant Field Values

### COLLAPSE_ICON

    public static final java.lang.String COLLAPSE_ICON

  The icon used by the "toggle" action when the JXCollapsiblePane is expanded, i.e the icon which indicates the pane can be collapsed.

  See Also:
    Constant Field Values

### EXPAND_ICON

    public static final java.lang.String EXPAND_ICON

  The icon used by the "toggle" action when the JXCollapsiblePane is collapsed, i.e the icon which indicates the pane can be expanded.

  See Also:
    Constant Field Values

Constructor Detail

### JXCollapsiblePane

    public JXCollapsiblePane()

  Constructs a new JXCollapsiblePane with a `JXPanel` as content pane and a vertical `VerticalLayout` with a gap of 2 pixels as layout manager and a vertical orientation.

### JXCollapsiblePane

    public JXCollapsiblePane(JXCollapsiblePane.Direction direction)

  Constructs a new JXCollapsiblePane with a `JXPanel` as content pane and the specified direction.

  Parameters:
    `direction` - the direction to collapse the container

### JXCollapsiblePane

    public JXCollapsiblePane(java.awt.LayoutManager layout)

  Constructs a new JXCollapsiblePane with a `JPanel` as content pane and the given LayoutManager and a vertical orientation

### JXCollapsiblePane

    public JXCollapsiblePane(JXCollapsiblePane.Direction direction,
                             java.awt.LayoutManager layout)

  Constructs a new JXCollapsiblePane with a `JPanel` as content pane and the given LayoutManager and orientation. A vertical orientation enables a vertical `VerticalLayout` with a gap of 2 pixels as layout manager. A horizontal orientation enables a horizontal `HorizontalLayout` with a gap of 2 pixels as layout manager

  Parameters:
    `direction` - the direction this pane collapses
    `layout` - of this collapsible pane

Method Detail

### setContentPane

    public void setContentPane(java.awt.Container contentPanel)

  Sets the content pane of this JXCollapsiblePane. The `contentPanel` should implement `Scrollable` and return `true` from `Scrollable.getScrollableTracksViewportHeight()` and `Scrollable.getScrollableTracksViewportWidth()`. If the content pane fails to do so and a `JScrollPane` is added as a child, it is likely that the scroll pane will never correctly size. While it is not strictly necessary to implement `Scrollable` in this way, the default content pane does so.

  Parameters:
    `contentPanel` - the container delegate used to hold all of the contents for this collapsible pane
  Throws:
    `java.lang.IllegalArgumentException` - if contentPanel is null

### getContentPane

    public java.awt.Container getContentPane()

  Returns:
    the content pane

### setLayout

    public void setLayout(java.awt.LayoutManager mgr)

  Overriden to redirect call to the content pane.

  Overrides:
    `setLayout` in class `java.awt.Container`

### addImpl

    protected void addImpl(java.awt.Component comp,
                           java.lang.Object constraints,
                           int index)

  Overriden to redirect call to the content pane.

  Overrides:
    `addImpl` in class `java.awt.Container`

### remove

    public void remove(java.awt.Component comp)

  Overriden to redirect call to the content pane

  Overrides:
    `remove` in class `java.awt.Container`

### remove

    public void remove(int index)

  Overriden to redirect call to the content pane.

  Overrides:
    `remove` in class `java.awt.Container`

### removeAll

    public void removeAll()

  Overriden to redirect call to the content pane.

  Overrides:
    `removeAll` in class `java.awt.Container`

### setAnimated

    public void setAnimated(boolean animated)

  If true, enables the animation when pane is collapsed/expanded. If false, animation is turned off.

  When animated, the `JXCollapsiblePane` will progressively reduce (when collapsing) or enlarge (when expanding) the height of its content area until it becomes 0 or until it reaches the preferred height of the components it contains. The transparency of the content area will also change during the animation.

  If not animated, the `JXCollapsiblePane` will simply hide (collapsing) or show (expanding) its content area.

  Parameters:
    `animated` -

### isAnimated

    public boolean isAnimated()

  Returns:
    true if the pane is animated, false otherwise
  See Also:
    `setAnimated(boolean)`

### setDirection

    public void setDirection(JXCollapsiblePane.Direction direction)

  Changes the direction of this collapsible pane. Doing so changes the layout of the underlying content pane. If the chosen direction is vertical, a vertical layout with a gap of 2 pixels is chosen. Otherwise, a horizontal layout with a gap of 2 pixels is chosen.

  Parameters:
    `direction` - the new `JXCollapsiblePane.Direction` for this collapsible pane
  Throws:
    `java.lang.IllegalStateException` - when this method is called while a collapsing/restore operation is running
  See Also:
    `getDirection()`

### getDirection

    public JXCollapsiblePane.Direction getDirection()

  Returns:
    the current `JXCollapsiblePane.Direction`.
  See Also:
    `setDirection(Direction)`

### isCollapsed

    public boolean isCollapsed()

  Returns:
    true if the pane is collapsed, false if expanded

### setCollapsed

    public void setCollapsed(boolean val)

  Expands or collapses this `JXCollapsiblePane`.

  If the component is collapsed and `val` is false, then this call expands the JXCollapsiblePane, such that the entire JXCollapsiblePane will be visible. If `isAnimated()` returns true, the expansion will be accompanied by an animation.

  However, if the component is expanded and `val` is true, then this call collapses the JXCollapsiblePane, such that the entire JXCollapsiblePane will be invisible. If `isAnimated()` returns true, the collapse will be accompanied by an animation.

  See Also:
    `isAnimated()`, `setAnimated(boolean)`

### getBorder

    public javax.swing.border.Border getBorder()

  Overrides:
    `getBorder` in class `javax.swing.JComponent`

### setBorder

    public void setBorder(javax.swing.border.Border border)

  Overrides:
    `setBorder` in class `javax.swing.JComponent`

### getMinimumSize

    public java.awt.Dimension getMinimumSize()

  A collapsible pane always returns its preferred size for the minimum size to ensure that the collapsing happens correctly.

  To query the minimum size of the contents user `getContentPane().getMinimumSize()`.

  Overrides:
    `getMinimumSize` in class `javax.swing.JComponent`
  Returns:
    the preferred size of the component

### setMinimumSize

    public void setMinimumSize(java.awt.Dimension minimumSize)

  Forwards to the content pane.

  Overrides:
    `setMinimumSize` in class `javax.swing.JComponent`
  Parameters:
    `minimumSize` - the size to set on the content pane

### getPreferredSize

    public java.awt.Dimension getPreferredSize()

  The critical part of the animation of this `JXCollapsiblePane` relies on the calculation of its preferred size. During the animation, its preferred size (specially its height) will change, when expanding, from 0 to the preferred size of the content pane, and the reverse when collapsing.

  Overrides:
    `getPreferredSize` in class `javax.swing.JComponent`
  Returns:
    this component preferred size

### setPreferredSize

    public void setPreferredSize(java.awt.Dimension preferredSize)

  Overrides:
    `setPreferredSize` in class `javax.swing.JComponent`

Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

Copyright © 2010. All Rights Reserved.