bibliothek.extension.gui.dock.theme.bubble
Class AbstractBubbleDockTitle

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.util.BackgroundPanel
                      extended by bibliothek.gui.dock.util.ConfiguredBackgroundPanel
                          extended by bibliothek.gui.dock.title.AbstractMultiDockTitle
                              extended by bibliothek.gui.dock.title.AbstractDockTitle
                                  extended by bibliothek.extension.gui.dock.theme.bubble.AbstractBubbleDockTitle
All Implemented Interfaces:
DockElementRepresentative, DockTitle, PaintableComponent, ImageObserver, MenuContainer, Serializable, Accessible
Direct Known Subclasses:
BubbleButtonDockTitle, BubbleDockTitle

public abstract class AbstractBubbleDockTitle
extends AbstractDockTitle

A title that has the ability to paint a round rect as background. It also can apply animations when changing the state.

Author:
Benjamin Sigg
See Also:
BubbleColorAnimation, Serialized Form

Nested Class Summary
 
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.title.DockTitle
DockTitle.Orientation
 
Field Summary
protected static String ANIMATION_KEY_BACKGROUND_BOTTOM
          key for the background color at the bottom used by the animation
protected static String ANIMATION_KEY_BACKGROUND_TOP
          key for the background color at the top used by the animation
protected static String ANIMATION_KEY_TEXT
          key for the foreground color used by the animation
 
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 bibliothek.gui.dock.title.DockTitle
ORIENTATION_STRATEGY
 
Fields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
 
Constructor Summary
protected AbstractBubbleDockTitle()
          A constructor that does not do anything, subclasses should later call init(Dockable, DockTitleVersion, boolean).
  AbstractBubbleDockTitle(Dockable dockable, DockTitleVersion origin)
          Creates a new title.
  AbstractBubbleDockTitle(Dockable dockable, DockTitleVersion origin, boolean showMiniButtons)
          Creates a new title.
 
Method Summary
protected  void addColor(String id, Path kind, Color backup)
          Registers a TitleColor width identifier id at this title.
 void bind()
          Called before this title is displayed.
protected  void doPaintBackground(Graphics g, JComponent component)
          Actually paints the background with a graphics context that has special settings.
protected  Color getColor(String animationKey)
          Gets a color for an animation that was stared with updateAnimation().
protected  Insets getInnerInsets()
          Gets the insets that have to be applied between the border and the content (icon, text, actions) of this title.
protected  void init(Dockable dockable, DockTitleVersion origin, boolean showMiniButtons)
          Initializes this title, this method should be called only once.
 boolean isMouseOver()
          Tells whether the mouse is currently over this title or not.
protected  void paintBackground(Graphics g, JComponent component)
          Paints the whole background of this title.
 void paintOverlay(Graphics g)
          Invokes the standard algorithm that paints an overlay over the children of the component.
protected  void pulse()
          Called every time when the colors of the animation have been changed.
 void setActive(boolean active)
          Sets whether this title should be painted as focused or not.
protected  void setDisabled(boolean disabled)
          Tells this title whether it should be disabled or not.
protected abstract  void updateAnimation()
          Called when the mouse entered or left this title, or when the active state changed.
protected  void updateAnimation(String animationKey, String colorId)
          Starts an animation for changing the color of animationKey to colorId.
 
Methods inherited from class bibliothek.gui.dock.title.AbstractDockTitle
changed, doTitleLayout, getActionSourceFor, getPopupLocation, getPreferredSize, getSuggestedSource, isShowMiniButtons, setOrientation, setShowMiniButtons, setTooltip, suggestActions, unbind
 
Methods inherited from class bibliothek.gui.dock.title.AbstractMultiDockTitle
addColor, addConditionalFont, addFont, addMouseInputListener, createItemFor, doLayout, getDockable, getElement, getIcon, getIconBounds, getIconTextGap, getLabel, getMinimumSize, getOrientation, getOrigin, getText, init, isActive, isBound, isDisabled, isUsedAsTitle, paintBackground, paintForeground, paintForeground, paintIcon, removeAllConditionalFonts, removeColor, removeFont, removeMouseInputListener, setBackground, setBorder, setFont, setFontModifier, setForeground, setIcon, setIconTextGap, setText, shouldFocus, shouldTransfersFocus, titleInsets, updateFonts, updateIcon, updateText, updateTooltip
 
Methods inherited from class bibliothek.gui.dock.util.ConfiguredBackgroundPanel
configure
 
Methods inherited from class bibliothek.gui.dock.util.BackgroundPanel
getBackgroundAlgorithm, getComponent, getTransparency, paint, paintBorder, paintChildren, paintComponent, setBackground, setTransparency
 
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, getNextFocusableComponent, getPopupLocation, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingTile, isRequestFocusEnabled, isValidateRoot, 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, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFocusTraversalKeys, 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, 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
 
Methods inherited from interface bibliothek.gui.dock.title.DockTitle
getComponent
 

Field Detail

ANIMATION_KEY_TEXT

protected static final String ANIMATION_KEY_TEXT
key for the foreground color used by the animation

See Also:
Constant Field Values

ANIMATION_KEY_BACKGROUND_TOP

protected static final String ANIMATION_KEY_BACKGROUND_TOP
key for the background color at the top used by the animation

See Also:
Constant Field Values

ANIMATION_KEY_BACKGROUND_BOTTOM

protected static final String ANIMATION_KEY_BACKGROUND_BOTTOM
key for the background color at the bottom used by the animation

See Also:
Constant Field Values
Constructor Detail

AbstractBubbleDockTitle

public AbstractBubbleDockTitle(Dockable dockable,
                               DockTitleVersion origin)
Creates a new title.

Parameters:
dockable - the Dockable for which this title is shown
origin - the creator of this title

AbstractBubbleDockTitle

public AbstractBubbleDockTitle(Dockable dockable,
                               DockTitleVersion origin,
                               boolean showMiniButtons)
Creates a new title.

Parameters:
dockable - the Dockable for which this title is shown
origin - the creator of this title
showMiniButtons - whether this title should show the actions or not

AbstractBubbleDockTitle

protected AbstractBubbleDockTitle()
A constructor that does not do anything, subclasses should later call init(Dockable, DockTitleVersion, boolean).

Method Detail

init

protected void init(Dockable dockable,
                    DockTitleVersion origin,
                    boolean showMiniButtons)
Initializes this title, this method should be called only once.

Overrides:
init in class AbstractDockTitle
Parameters:
dockable - the Dockable for which this title is shown
origin - the creator of this title
showMiniButtons - whether this title should show the actions or not

isMouseOver

public boolean isMouseOver()
Tells whether the mouse is currently over this title or not.

Returns:
true if the mouse is within the borders of this title

addColor

protected void addColor(String id,
                        Path kind,
                        Color backup)
Registers a TitleColor width identifier id at this title.

Parameters:
id - the id of the color
kind - what kind of color it is (should be derived from TitleColor.KIND_TITLE_COLOR
backup - the standard color if nothing else is set

bind

public void bind()
Description copied from interface: DockTitle
Called before this title is displayed. This method should connect the title with other objects such as its owner. If the title wants to show some DockActions (see the method DockController.listOffers(Dockable)), then this method should bind them too.
Clients should never call this method directly, they should call Dockable.bind(DockTitle). The DockController will call the bind-method, as soon as the Dockable knows the controller.

Specified by:
bind in interface DockTitle
Overrides:
bind in class AbstractDockTitle

setActive

public void setActive(boolean active)
Description copied from class: AbstractMultiDockTitle
Sets whether this title should be painted as focused or not.

Overrides:
setActive in class AbstractMultiDockTitle
Parameters:
active - true if the Dockable of this title has the focus.

setDisabled

protected void setDisabled(boolean disabled)
Description copied from class: AbstractMultiDockTitle
Tells this title whether it should be disabled or not. This method is called when the DisablingStrategy changes. A disabled title should react to any InputEvent, and should be painted differently than an enabled title.

Overrides:
setDisabled in class AbstractMultiDockTitle
Parameters:
disabled - whether this title is disabled
See Also:
AbstractMultiDockTitle.isDisabled()

updateAnimation

protected abstract void updateAnimation()
Called when the mouse entered or left this title, or when the active state changed. This method has to update the animation, it should call updateAnimation(String, String) for all animation-keys using the currently best fitting identifiers. Subclasses might want to call this method when some additional states changed which imply a change of the look of this title.


updateAnimation

protected void updateAnimation(String animationKey,
                               String colorId)
Starts an animation for changing the color of animationKey to colorId.

Parameters:
animationKey - One of ANIMATION_KEY_TEXT, ANIMATION_KEY_BACKGROUND_TOP, ANIMATION_KEY_BACKGROUND_BOTTOM or if this subclasses has its own painting algorithm some other keys can be used.
colorId - One of the identifiers used on addColor(String, Path, Color)

getColor

protected Color getColor(String animationKey)
Gets a color for an animation that was stared with updateAnimation().

Parameters:
animationKey - the key for the animation
Returns:
the current color or null if not present

pulse

protected void pulse()
Called every time when the colors of the animation have been changed.


getInnerInsets

protected Insets getInnerInsets()
Description copied from class: AbstractMultiDockTitle
Gets the insets that have to be applied between the border and the content (icon, text, actions) of this title. Subclasses may use this method to create free space in which they can paint additional items.

Overrides:
getInnerInsets in class AbstractMultiDockTitle
Returns:
the insets, not null

paintBackground

protected void paintBackground(Graphics g,
                               JComponent component)
Description copied from class: AbstractMultiDockTitle
Paints the whole background of this title. The default implementation just fills the background with the background color of component.

Overrides:
paintBackground in class AbstractMultiDockTitle
Parameters:
g - the graphics context used to paint
component - the Component which represents this title

doPaintBackground

protected void doPaintBackground(Graphics g,
                                 JComponent component)
Actually paints the background with a graphics context that has special settings.

Parameters:
g - the graphics context to use
component - the component that is painted

paintOverlay

public void paintOverlay(Graphics g)
Description copied from interface: PaintableComponent
Invokes the standard algorithm that paints an overlay over the children of the component. This method should be called at most once.

Specified by:
paintOverlay in interface PaintableComponent
Overrides:
paintOverlay in class BackgroundPanel
Parameters:
g - the graphics context to use, null to just inform this component that the background should not be painted automatically