bibliothek.gui.dock.themes.basic
Class BasicDockableDisplayer

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 bibliothek.gui.dock.themes.basic.BasicDockableDisplayer
All Implemented Interfaces:
DockableDisplayer, ImageObserver, MenuContainer, Serializable, Accessible
Direct Known Subclasses:
BubbleDisplayer, EclipseBasicDockableDisplayer, FlatDockableDisplayer

public class BasicDockableDisplayer
extends JPanel
implements DockableDisplayer

A panel which shows one Dockable and one DockTitle. The location of the DockTitle is always at one of the four borders (left, right, top, bottom). The title may be null, in this case only the Dockable is shown.
Clients using a displayer should try to set the controller and the station property.
Subclasses may override getComponent(Dockable), addDockable(Dockable, Component), removeDockable(Dockable, Component), getComponent(DockTitle), addTitle(Component) and/or removeTitle(Component) if they want to introduce a completely new layout needing more Containers.

Author:
Benjamin Sigg
See Also:
DisplayerCollection, DisplayerFactory, Serialized Form

Nested Class Summary
protected  class BasicDockableDisplayer.Hints
          This implementation of DockableDisplayerHints forwards any changes to its BasicDockableDisplayer.
 
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
 
Nested classes/interfaces inherited from interface bibliothek.gui.dock.station.DockableDisplayer
DockableDisplayer.Location
 
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
  BasicDockableDisplayer(DockStation station)
          Creates a new displayer
protected BasicDockableDisplayer(DockStation station, boolean initialize)
          Creates a new displayer but does not set the properties of the displayer.
  BasicDockableDisplayer(DockStation station, Dockable dockable, DockTitle title)
          Creates a new displayer, sets the title and the content.
  BasicDockableDisplayer(DockStation station, Dockable dockable, DockTitle title, DockableDisplayer.Location location)
          Creates a new displayer, sets the title, its location and the content.
 
Method Summary
protected  void addDockable(Dockable dockable, Component component)
          Inserts a component representing the current dockable into the layout.
 void addDockableDisplayerListener(DockableDisplayerListener listener)
          Adds listener to this displayer.
protected  void addTitle(Component component)
          Inserts a component representing the current title into the layout.
protected  void doLayout(JPanel content)
           
 Component getComponent()
          Gets the Component which represents this displayer.
protected  Component getComponent(Dockable dockable)
          Gets the Component which should be used to layout the current Dockable.
protected  Component getComponent(DockTitle title)
          Gets the Component which should be used to layout the current DockTitle.
 JPanel getContent()
          Gets the content pane of this displayer, the content pane is the parent component of the Dockable and the DockTitle.
 Dimension getContentMinimumSize()
           
 DockController getController()
          Gets the controller for which this displayer is used.
protected  Border getDefaultBorder()
          Gets the default border for this displayer.
 boolean getDefaultBorderHint()
          Gets the default value for the show border hint.
 Dockable getDockable()
          Gets the Dockable which is shown on this displayer.
 Insets getDockableInsets()
          Gets an estimate of the insets around the Dockable of this displayer compared to the whole size of this displayer.
protected  BasicDockableDisplayer.Hints getHints()
          Gets the set of hints for displaying this component.
 DockStation getStation()
          Gets the station on which this displayer might be shown.
 DockTitle getTitle()
          Gets the title which is shown on this displayer.
 DockableDisplayer.Location getTitleLocation()
          Gets the location of the title in respect to the Dockable.
protected  void init(DockStation station, Dockable dockable, DockTitle title, DockableDisplayer.Location location)
          Initialises all properties of this DockableDisplayer.
 boolean isRespectBorderHint()
          Whether the show border hint is respected by this displayer.
 boolean isSingleTabShowInnerBorder()
          Tells whether an inner border is shown if a single tab is in use.
 boolean isSingleTabShowOuterBorder()
          Tells whether an outer border is shown if a single tab is in use.
protected  DockableDisplayerListener[] listeners()
          Gets a list of all listeners currently registered at this displayer.
protected  DockTitle.Orientation orientation(DockableDisplayer.Location location)
          Determines the orientation of a DockTitle according to its location on this displayer.
protected  void removeDockable(Dockable dockable, Component component)
          Removes the Component which represents the current dockable.
 void removeDockableDisplayerListener(DockableDisplayerListener listener)
          Removes listener from this displayer.
protected  void removeTitle(Component component)
          Removes the Component which represents the current title.
 void setController(DockController controller)
          Sets the controller for which this displayer is used.
protected  void setDecorator(BasicDockableDisplayerDecorator decorator)
          Exchanges the decorator of this displayer.
 void setDefaultBorderHint(boolean defaultBorderHint)
          Sets the default value for the show border hint.
 void setDockable(Dockable dockable)
          Sets the Dockable which should be shown on this displayer.
 void setRespectBorderHint(boolean respectBorderHint)
          Tells this displayer whether the show border hint of getHints() should be respected or not.
 void setSingleTabShowInnerBorder(boolean singleTabShowInnerBorder)
          Sets whether an inner border should be shown if a single tab is in use.
 void setSingleTabShowOuterBorder(boolean singleTabShowOuterBorder)
          Sets whether an outer border should be shown if a single tab is in use.
 void setStation(DockStation station)
          Sets the station on which this displayer is shown.
 void setTitle(DockTitle title)
          Sets the title of this displayer.
 void setTitleLocation(DockableDisplayer.Location location)
          Sets the location of the title in respect to the Dockable.
 boolean titleContains(int x, int y)
          Tells whether the point x/y is inside the title of this displayer or not.
protected  void updateBorder()
          Called when the hint, whether a border should be shown or not, has changed.
protected  void updateDecorator()
           
 
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, 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, 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
 

Constructor Detail

BasicDockableDisplayer

public BasicDockableDisplayer(DockStation station)
Creates a new displayer

Parameters:
station - the station for which this displayer is needed

BasicDockableDisplayer

public BasicDockableDisplayer(DockStation station,
                              Dockable dockable,
                              DockTitle title)
Creates a new displayer, sets the title and the content.

Parameters:
station - the station for which this displayer is needed
dockable - the content, may be null
title - the title, may be null

BasicDockableDisplayer

public BasicDockableDisplayer(DockStation station,
                              Dockable dockable,
                              DockTitle title,
                              DockableDisplayer.Location location)
Creates a new displayer, sets the title, its location and the content.

Parameters:
station - the station for which this displayer is needed
dockable - the content, may be null
title - the title of dockable, can be null
location - the location of the title, can be null

BasicDockableDisplayer

protected BasicDockableDisplayer(DockStation station,
                                 boolean initialize)
Creates a new displayer but does not set the properties of the displayer. Subclasses may call init to initialize all variables of the new displayer.

Parameters:
station - the station for which this displayer is needed
initialize - true if all properties should be set to default, false if nothing should happen, and init will be called.
Method Detail

init

protected void init(DockStation station,
                    Dockable dockable,
                    DockTitle title,
                    DockableDisplayer.Location location)
Initialises all properties of this DockableDisplayer. This method should only be called once, by a constructor of a subclass which invoked DockableDisplayer( false ).

Parameters:
station - the station for which this displayer is needed
dockable - the content, may be null
title - the title of dockable, can be null
location - the location of the title, can be null

setDecorator

protected void setDecorator(BasicDockableDisplayerDecorator decorator)
Exchanges the decorator of this displayer.

Parameters:
decorator - the new decorator

updateDecorator

protected void updateDecorator()

setController

public void setController(DockController controller)
Description copied from interface: DockableDisplayer
Sets the controller for which this displayer is used. That property must be set by the client. Note that there is no guarantee, that a client sets this property.

Specified by:
setController in interface DockableDisplayer
Parameters:
controller - the controller, can be null

getController

public DockController getController()
Description copied from interface: DockableDisplayer
Gets the controller for which this displayer is used. Note that there is no guarantee, that this property is set.

Specified by:
getController in interface DockableDisplayer
Returns:
the controller or null

addDockableDisplayerListener

public void addDockableDisplayerListener(DockableDisplayerListener listener)
Description copied from interface: DockableDisplayer
Adds listener to this displayer.

Specified by:
addDockableDisplayerListener in interface DockableDisplayer
Parameters:
listener - the new listener, not null

removeDockableDisplayerListener

public void removeDockableDisplayerListener(DockableDisplayerListener listener)
Description copied from interface: DockableDisplayer
Removes listener from this displayer.

Specified by:
removeDockableDisplayerListener in interface DockableDisplayer
Parameters:
listener - the listener to remove

listeners

protected DockableDisplayerListener[] listeners()
Gets a list of all listeners currently registered at this displayer.

Returns:
the list of listeners

setStation

public void setStation(DockStation station)
Description copied from interface: DockableDisplayer
Sets the station on which this displayer is shown. That property must be set by the station itself. Note that there is no guarantee, that a station sets this property.

Specified by:
setStation in interface DockableDisplayer
Parameters:
station - the station or null

getStation

public DockStation getStation()
Description copied from interface: DockableDisplayer
Gets the station on which this displayer might be shown. Note that there is no guarantee, that a parent-station sets this property.

Specified by:
getStation in interface DockableDisplayer
Returns:
the station or null

getDockable

public Dockable getDockable()
Description copied from interface: DockableDisplayer
Gets the Dockable which is shown on this displayer.

Specified by:
getDockable in interface DockableDisplayer
Returns:
the child, can be null

setDockable

public void setDockable(Dockable dockable)
Description copied from interface: DockableDisplayer
Sets the Dockable which should be shown on this displayer. A value of null means that no Dockable should be visible at all.

Specified by:
setDockable in interface DockableDisplayer
Parameters:
dockable - the child, can be null

getTitleLocation

public DockableDisplayer.Location getTitleLocation()
Description copied from interface: DockableDisplayer
Gets the location of the title in respect to the Dockable.

Specified by:
getTitleLocation in interface DockableDisplayer
Returns:
the location

setTitleLocation

public void setTitleLocation(DockableDisplayer.Location location)
Description copied from interface: DockableDisplayer
Sets the location of the title in respect to the Dockable.

Specified by:
setTitleLocation in interface DockableDisplayer
Parameters:
location - the location, a value of null is transformed into the default-value

orientation

protected DockTitle.Orientation orientation(DockableDisplayer.Location location)
Determines the orientation of a DockTitle according to its location on this displayer.

Parameters:
location - the location on this displayer
Returns:
the orientation

getTitle

public DockTitle getTitle()
Description copied from interface: DockableDisplayer
Gets the title which is shown on this displayer.

Specified by:
getTitle in interface DockableDisplayer
Returns:
the title, can be null

setTitle

public void setTitle(DockTitle title)
Description copied from interface: DockableDisplayer
Sets the title of this displayer. If the title is set to null, no title is visible. The displayer will change the orientation of the title.

Specified by:
setTitle in interface DockableDisplayer
Parameters:
title - the title or null

addDockable

protected void addDockable(Dockable dockable,
                           Component component)
Inserts a component representing the current dockable into the layout. This method is never called twice unless removeDockable(Dockable, Component) is called before. Note that the name "add" is inspired by the method add of Container.

Parameters:
dockable - the dockable to add, may be null
component - the new Component, may be null

removeDockable

protected void removeDockable(Dockable dockable,
                              Component component)
Removes the Component which represents the current dockable.

Parameters:
dockable - the element to remove, may be null
component - the component, may be null

getComponent

protected Component getComponent(Dockable dockable)
Gets the Component which should be used to layout the current Dockable.

Parameters:
dockable - the current Dockable, never null
Returns:
the component representing dockable

getContent

public JPanel getContent()
Gets the content pane of this displayer, the content pane is the parent component of the Dockable and the DockTitle.

Returns:
the content pane

addTitle

protected void addTitle(Component component)
Inserts a component representing the current title into the layout. This method is never called twice unless removeTitle(Component) is called before. Note that the name "add" is inspired by the method add of Container.

Parameters:
component - the new Component

removeTitle

protected void removeTitle(Component component)
Removes the Component which represents the current title.

Parameters:
component - the component

getComponent

protected Component getComponent(DockTitle title)
Gets the Component which should be used to layout the current DockTitle.

Parameters:
title - the current DockTitle, never null
Returns:
the component representing title

titleContains

public boolean titleContains(int x,
                             int y)
Description copied from interface: DockableDisplayer
Tells whether the point x/y is inside the title of this displayer or not.

Specified by:
titleContains in interface DockableDisplayer
Parameters:
x - the x-coordinate, relatively to this component
y - the y-coordinate, relatively to this component
Returns:
true if the title contains the point

getComponent

public Component getComponent()
Description copied from interface: DockableDisplayer
Gets the Component which represents this displayer.

Specified by:
getComponent in interface DockableDisplayer
Returns:
the component

getContentMinimumSize

public Dimension getContentMinimumSize()

doLayout

protected void doLayout(JPanel content)

getDockableInsets

public Insets getDockableInsets()
Description copied from interface: DockableDisplayer
Gets an estimate of the insets around the Dockable of this displayer compared to the whole size of this displayer.

Specified by:
getDockableInsets in interface DockableDisplayer
Returns:
the estimate of the insets

getHints

protected BasicDockableDisplayer.Hints getHints()
Gets the set of hints for displaying this component.

Returns:
the set of hints

setRespectBorderHint

public void setRespectBorderHint(boolean respectBorderHint)
Tells this displayer whether the show border hint of getHints() should be respected or not. The default value is false.

Parameters:
respectBorderHint - true if the hint should be respected, false if not.

isRespectBorderHint

public boolean isRespectBorderHint()
Whether the show border hint is respected by this displayer.

Returns:
true if the hint is respected
See Also:
setRespectBorderHint(boolean)

setDefaultBorderHint

public void setDefaultBorderHint(boolean defaultBorderHint)
Sets the default value for the show border hint.

Parameters:
defaultBorderHint - the default value

getDefaultBorderHint

public boolean getDefaultBorderHint()
Gets the default value for the show border hint.

Returns:
the default value

setSingleTabShowInnerBorder

public void setSingleTabShowInnerBorder(boolean singleTabShowInnerBorder)
Sets whether an inner border should be shown if a single tab is in use.

Parameters:
singleTabShowInnerBorder - whether the inner border should be visible

isSingleTabShowInnerBorder

public boolean isSingleTabShowInnerBorder()
Tells whether an inner border is shown if a single tab is in use.

Returns:
whether the border is shown

setSingleTabShowOuterBorder

public void setSingleTabShowOuterBorder(boolean singleTabShowOuterBorder)
Sets whether an outer border should be shown if a single tab is in use.

Parameters:
singleTabShowOuterBorder - whether the outer border should be visible

isSingleTabShowOuterBorder

public boolean isSingleTabShowOuterBorder()
Tells whether an outer border is shown if a single tab is in use.

Returns:
whether the border is shown

updateBorder

protected void updateBorder()
Called when the hint, whether a border should be shown or not, has changed.


getDefaultBorder

protected Border getDefaultBorder()
Gets the default border for this displayer. That can either be a new object or an old border. It should not be null. The standard implementation just returns a new instance of of BevelBorder.

Returns:
the default border to be used on this displayer