org.fife.ui.dockablewindows
Class DockableWindowPanel

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.fife.ui.dockablewindows.DockableWindowPanel
All Implemented Interfaces:
java.awt.image.ImageObserver, java.awt.MenuContainer, java.beans.PropertyChangeListener, java.io.Serializable, java.util.EventListener, javax.accessibility.Accessible, DockableWindowConstants, DockableWindowListener

public class DockableWindowPanel
extends javax.swing.JPanel
implements DockableWindowListener, java.beans.PropertyChangeListener, DockableWindowConstants

A panel capable of having "windows" docked to any of its four sides, as well as manage "floating" windows. This can be used as the content pane for applications wishing to have docked windows.

Version:
0.1
Author:
Robert Futrell
See Also:
Serialized Form

Nested Class Summary
 
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 int LARGE_ON_SIDES
           
static int LARGE_ON_TOP_AND_BOTTOM
           
protected  java.util.List<DockableWindow> windowList
           
 
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 org.fife.ui.dockablewindows.DockableWindowConstants
BOTTOM, FLOATING, LEFT, RIGHT, TOP
 
Fields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
 
Constructor Summary
DockableWindowPanel()
          Constructor.
 
Method Summary
 boolean addDockableWindow(DockableWindow window)
          Adds a dockable window.
 void dockableWindowPositionChanged(DockableWindowEvent e)
          Called whenever a dockable window changed its preferred position.
 void dockableWindowPositionWillChange(DockableWindowEvent e)
          This method does nothing.
 boolean focusDockableWindowGroup(int group)
          Focuses the specified dockable window group.
 javax.swing.JPanel getContentPanel()
          Returns the panel containing the "actual" content (e.g., the stuff that isn't a dockable window).
 int getDividerLocation(int splitPane)
           
 DockableWindow[] getDockableWindows()
          Returns all dockable windows.
 int getFocusedDockableWindowGroup()
          Returns the focused dockable window group.
 boolean hasDockableWindowGroup(int group)
          Returns whether dockable windows are at the specified location.
 void propertyChange(java.beans.PropertyChangeEvent e)
          The only property we care about is a dockable window becoming active or inactive (i.e., visible or not visible).
 boolean removeContentPanel(java.awt.Container contentPanel)
          Removes the content panel (e.g. the stuff that isn't dockable windows).
 boolean removeDockableWindow(DockableWindow window)
          Removes the specified dockable window from this panel's management.
 void setContentPanel(java.awt.Container contentPanel)
          Sets the content panel (e.g., the non-dockable window stuff).
 void setDividerLocation(int splitPane, int pos)
           
 void setDockingStyle(int style)
          Sets the docking style.
 
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, 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, paintChildren, 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, 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

LARGE_ON_SIDES

public static final int LARGE_ON_SIDES
See Also:
Constant Field Values

LARGE_ON_TOP_AND_BOTTOM

public static final int LARGE_ON_TOP_AND_BOTTOM
See Also:
Constant Field Values

windowList

protected java.util.List<DockableWindow> windowList
Constructor Detail

DockableWindowPanel

public DockableWindowPanel()
Constructor.

Method Detail

addDockableWindow

public boolean addDockableWindow(DockableWindow window)
Adds a dockable window.

Parameters:
window - The window to add.
Returns:
Whether or not the window was added successfully.
See Also:
removeDockableWindow(org.fife.ui.dockablewindows.DockableWindow)

dockableWindowPositionChanged

public void dockableWindowPositionChanged(DockableWindowEvent e)
Called whenever a dockable window changed its preferred position. This method removes the dockable window from its old location and adds it to its new location.

Specified by:
dockableWindowPositionChanged in interface DockableWindowListener
Parameters:
e - The dockable window event.

dockableWindowPositionWillChange

public void dockableWindowPositionWillChange(DockableWindowEvent e)
This method does nothing.

Specified by:
dockableWindowPositionWillChange in interface DockableWindowListener
Parameters:
e - The dockable window event.

focusDockableWindowGroup

public boolean focusDockableWindowGroup(int group)
Focuses the specified dockable window group. Does nothing if there are no dockable windows at the location specified.

Parameters:
group - The dockable window group to focus. This must be a valid value from DockableWindowConstants.
Returns:
Whether there were dockable windows at the location specified.

getContentPanel

public javax.swing.JPanel getContentPanel()
Returns the panel containing the "actual" content (e.g., the stuff that isn't a dockable window).

Returns:
The "actual" content.

getDividerLocation

public int getDividerLocation(int splitPane)
Parameters:
splitPane - The position of the split pane for which to get its divider location; one of GUIApplicationConstants.TOP, LEFT, BOTTOM or RIGHT.

getDockableWindows

public DockableWindow[] getDockableWindows()
Returns all dockable windows. This will return the actual dockable windows, not deep copies, so any changes made to the returned array will affect the actual dockable windows themselves.

Returns:
All dockable windows. If no windows are being managed, a zero-length array is returned.
See Also:
addDockableWindow(org.fife.ui.dockablewindows.DockableWindow), removeDockableWindow(org.fife.ui.dockablewindows.DockableWindow)

getFocusedDockableWindowGroup

public int getFocusedDockableWindowGroup()
Returns the focused dockable window group.

Returns:
The focused window group, or -1 if no dockable window group is focused.
See Also:
DockableWindowConstants

hasDockableWindowGroup

public boolean hasDockableWindowGroup(int group)
Returns whether dockable windows are at the specified location.

Parameters:
group - A constant from DockableWindowConstants
Returns:
Whether dockable windows are at the specified location.

propertyChange

public void propertyChange(java.beans.PropertyChangeEvent e)
The only property we care about is a dockable window becoming active or inactive (i.e., visible or not visible).

Specified by:
propertyChange in interface java.beans.PropertyChangeListener
Parameters:
e - The property change event.

removeContentPanel

public boolean removeContentPanel(java.awt.Container contentPanel)
Removes the content panel (e.g. the stuff that isn't dockable windows).

Parameters:
contentPanel - The content panel.
Returns:
Whether or not the removal was successful.

removeDockableWindow

public boolean removeDockableWindow(DockableWindow window)
Removes the specified dockable window from this panel's management.

Parameters:
window - The dockable window to remove.
Returns:
Whether or not the removal was successful.
See Also:
addDockableWindow(org.fife.ui.dockablewindows.DockableWindow)

setContentPanel

public void setContentPanel(java.awt.Container contentPanel)
Sets the content panel (e.g., the non-dockable window stuff).

Parameters:
contentPanel - The new content panel.

setDividerLocation

public void setDividerLocation(int splitPane,
                               int pos)
Parameters:
splitPane - The split pane for which to set the divider location; one of DockableWindowConstants.TOP, LEFT, BOTTOM or RIGHT.
pos - The position of the divider.

setDockingStyle

public void setDockingStyle(int style)
Sets the docking style.

Parameters:
style - Either LARGE_ON_SIDES or LARGE_ON_TOP_AND_BOTTOM.