bibliothek.extension.gui.dock.theme.flat
Class FlatTab

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.extension.gui.dock.theme.flat.FlatTab
All Implemented Interfaces:
DockElementRepresentative, DockableFocusListener, CombinedTab, Tab, TabPaneComponent, PaintableComponent, java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, javax.accessibility.Accessible

@ColorCodes(value={"stack.tab.border.out.selected","stack.tab.border.center.selected","stack.tab.border.out.focused","stack.tab.border.center.focused","stack.tab.border.out","stack.tab.border.center","stack.tab.border","stack.tab.background.top.selected","stack.tab.background.bottom.selected","stack.tab.background.top.focused","stack.tab.background.bottom.focused","stack.tab.background.top","stack.tab.background.bottom","stack.tab.background","stack.tab.foreground.selected","stack.tab.foreground.focused","stack.tab.foreground"})
public class FlatTab
extends BackgroundPanel
implements CombinedTab, DockableFocusListener

A small button which can be clicked by the user.

Author:
Benjamin Sigg
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.BltBufferStrategy, java.awt.Component.FlipBufferStrategy
 
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
FlatTab(FlatTabPane pane, Dockable dockable)
          Constructs a new button
 
Method Summary
 void addMouseInputListener(javax.swing.event.MouseInputListener listener)
          Adds a listener to this representative, it is not defined what to do with that listener, but most subclasses would just add the listener to their component.
 void dockableFocused(DockableFocusEvent event)
          Invoked when dockable has gained the focus.
 javax.swing.JComponent getComponent()
          Gets the Component which is to be painted.
 Dockable getDockable()
          Gets the element that is associated with this tab.
 DockElement getElement()
          Gets the element which is represented by this.
 FontModifier getFontModifier()
          Gets the font modifier of this tab.
 javax.swing.Icon getIcon()
          Gets the icon shown on this tab.
 java.awt.Dimension getMinimumSize()
          Gets the minimal size this component should have
 java.awt.Dimension getMinimumSize(Tab[] tabs)
          Gets the minimum size of this tab under the assumption that this tab is displayed together with tabs.
 TabPlacement getOrientation()
          Gets the orientation of this tab.
 java.awt.Insets getOverlap(TabPaneComponent other)
          Tells how much of this component may be overlapped by another component other.
 java.awt.Point getPopupLocation(java.awt.Point click, boolean popupTrigger)
          Tells whether a popup menu should be opened when the user clicks at click with the mouse.
 java.awt.Dimension getPreferredSize()
          Gets the preferred size of this component
 java.awt.Dimension getPreferredSize(Tab[] tabs)
          Gets the preferred size of this tab under the assumption that this tab is displayed together with tabs.
 TabPane getTabParent()
          Gets the parent of this component.
 java.lang.String getText()
          Gets the text shwon on this tab.
 int getZOrder()
          Gets the value of the z order.
 boolean isPaneVisible()
          Tells whether this component is visible or not.
 boolean isSelected()
          Determines whether this button is selected or not.
 boolean isUsedAsTitle()
          Tells whether this DockElementRepresentative is used as title.
 void paintBackground(java.awt.Graphics g)
          Invokes the standard algorithm that paints the background of the component.
 void removeMouseInputListener(javax.swing.event.MouseInputListener listener)
          Removes a listener from this representative.
 void setController(DockController controller)
          Connets this tab with controller.
 void setFontModifier(FontModifier modifier)
          Sets the modifier which modifies the font of this tab, this modifier may be replaced any time.
 void setIcon(javax.swing.Icon icon)
          Sets the image of this tab.
 void setOrientation(TabPlacement orientation)
          Tells this component how to paint itself.
 void setPaneVisible(boolean visible)
          Changes the visibility state of this component.
 void setText(java.lang.String text)
          Sets the text of this tab.
 void setTooltip(java.lang.String tooltip)
          Sets the tooltip of this tab.
 void setZOrder(int order)
          Sets the z order of this component.
 boolean shouldFocus()
          Tells whether a click onto this component should transfer the focus either to this component or to the Dockable.
 boolean shouldTransfersFocus()
          Tells whether a click onto this component should transfer the focus to the Dockable or not.
 void updateFonts()
           
 void updateForeground()
           
 
Methods inherited from class bibliothek.gui.dock.util.BackgroundPanel
getBackgroundAlgorithm, isSolid, isTransparent, paint, paintBorder, paintChildren, paintComponent, paintForeground, paintOverlay, setBackground, setSolid, setTransparent
 
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, 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
 
Methods inherited from interface bibliothek.gui.dock.station.stack.tab.TabPaneComponent
getBounds, getMaximumSize, setBounds
 

Constructor Detail

FlatTab

public FlatTab(FlatTabPane pane,
               Dockable dockable)
Constructs a new button

Parameters:
pane - the owner of this tab
dockable - the Dockable for which this tab is displayed
Method Detail

updateForeground

public void updateForeground()

updateFonts

public void updateFonts()

setFontModifier

public void setFontModifier(FontModifier modifier)
Sets the modifier which modifies the font of this tab, this modifier may be replaced any time.

Parameters:
modifier - the modifer

getFontModifier

public FontModifier getFontModifier()
Gets the font modifier of this tab.

Returns:
the modifier

setIcon

public void setIcon(javax.swing.Icon icon)
Description copied from interface: CombinedTab
Sets the image of this tab.

Specified by:
setIcon in interface CombinedTab
Parameters:
icon - an icon that should be shown, can be null

getIcon

public javax.swing.Icon getIcon()
Gets the icon shown on this tab.

Returns:
the icon

setText

public void setText(java.lang.String text)
Description copied from interface: CombinedTab
Sets the text of this tab.

Specified by:
setText in interface CombinedTab
Parameters:
text - the text to display

getText

public java.lang.String getText()
Gets the text shwon on this tab.

Returns:
the text

setController

public void setController(DockController controller)
Connets this tab with controller.

Parameters:
controller - the controller in whose realm this tab is used, can be null

getPopupLocation

public java.awt.Point getPopupLocation(java.awt.Point click,
                                       boolean popupTrigger)
Description copied from interface: DockElementRepresentative
Tells whether a popup menu should be opened when the user clicks at click with the mouse. If yes, then the top left edge of the popup should be returned, otherwise null should be returned.

Specified by:
getPopupLocation in interface DockElementRepresentative
Parameters:
click - the location where the user clicked with the mouse
popupTrigger - whether the invocation is the systems popup trigger or not. Many implementations of this method will return click in case of true, and null in case of false
Returns:
the preferred location of a popup or null if no popup-menu should be opened

dockableFocused

public void dockableFocused(DockableFocusEvent event)
Description copied from interface: DockableFocusListener
Invoked when dockable has gained the focus.

Specified by:
dockableFocused in interface DockableFocusListener
Parameters:
event - an event that contains the new owner of the focus

getTabParent

public TabPane getTabParent()
Description copied from interface: TabPaneComponent
Gets the parent of this component.

Specified by:
getTabParent in interface TabPaneComponent
Returns:
the parent

getDockable

public Dockable getDockable()
Description copied from interface: Tab
Gets the element that is associated with this tab.

Specified by:
getDockable in interface Tab
Returns:
the element

getComponent

public javax.swing.JComponent getComponent()
Description copied from interface: PaintableComponent
Gets the Component which is to be painted.

Specified by:
getComponent in interface DockElementRepresentative
Specified by:
getComponent in interface CombinedTab
Specified by:
getComponent in interface PaintableComponent
Overrides:
getComponent in class BackgroundPanel
Returns:
the item to paint

getElement

public DockElement getElement()
Description copied from interface: DockElementRepresentative
Gets the element which is represented by this. The result of this method must not change.

Specified by:
getElement in interface DockElementRepresentative
Returns:
the element, never null

isUsedAsTitle

public boolean isUsedAsTitle()
Description copied from interface: DockElementRepresentative
Tells whether this DockElementRepresentative is used as title.
Some modules grant more rights to titles than to non-titles, i.e. a DockRelocator can allow drag & drop only for titles.
Normally a Dockable should have only one element that is a title, so if in doubt return false.

Specified by:
isUsedAsTitle in interface DockElementRepresentative
Returns:
true if this representative should be seen as title

shouldFocus

public boolean shouldFocus()
Description copied from interface: DockElementRepresentative
Tells whether a click onto this component should transfer the focus either to this component or to the Dockable.

Specified by:
shouldFocus in interface DockElementRepresentative
Returns:
true if clicking this component should influence focus

shouldTransfersFocus

public boolean shouldTransfersFocus()
Description copied from interface: DockElementRepresentative
Tells whether a click onto this component should transfer the focus to the Dockable or not. If this object is a Dockable, then a result of true might change the currently focused item of itself. This property is ignored if DockElementRepresentative.shouldFocus() returns false.

Specified by:
shouldTransfersFocus in interface DockElementRepresentative
Returns:
whether to change the focused component or not

addMouseInputListener

public void addMouseInputListener(javax.swing.event.MouseInputListener listener)
Description copied from interface: DockElementRepresentative
Adds a listener to this representative, it is not defined what to do with that listener, but most subclasses would just add the listener to their component. It is valid to do nothing.

Specified by:
addMouseInputListener in interface DockElementRepresentative
Parameters:
listener - the new listener

removeMouseInputListener

public void removeMouseInputListener(javax.swing.event.MouseInputListener listener)
Description copied from interface: DockElementRepresentative
Removes a listener from this representative.

Specified by:
removeMouseInputListener in interface DockElementRepresentative
Parameters:
listener - the listener to remove

getPreferredSize

public java.awt.Dimension getPreferredSize(Tab[] tabs)
Description copied from interface: Tab
Gets the preferred size of this tab under the assumption that this tab is displayed together with tabs.

Specified by:
getPreferredSize in interface Tab
Parameters:
tabs - the displayed tabs, exactly one entry is this and no entry is null
Returns:
the preferred size of this tab

getPreferredSize

public java.awt.Dimension getPreferredSize()
Description copied from interface: TabPaneComponent
Gets the preferred size of this component

Specified by:
getPreferredSize in interface TabPaneComponent
Overrides:
getPreferredSize in class javax.swing.JComponent
Returns:
the preferred size

getMinimumSize

public java.awt.Dimension getMinimumSize(Tab[] tabs)
Description copied from interface: Tab
Gets the minimum size of this tab under the assumption that this tab is displayed together with tabs.

Specified by:
getMinimumSize in interface Tab
Parameters:
tabs - the displayed tabs, exactly one entry is this and no entry is null
Returns:
the minimum size of this tab

getMinimumSize

public java.awt.Dimension getMinimumSize()
Description copied from interface: TabPaneComponent
Gets the minimal size this component should have

Specified by:
getMinimumSize in interface TabPaneComponent
Overrides:
getMinimumSize in class javax.swing.JComponent
Returns:
the minimal size

setTooltip

public void setTooltip(java.lang.String tooltip)
Description copied from interface: CombinedTab
Sets the tooltip of this tab.

Specified by:
setTooltip in interface CombinedTab
Parameters:
tooltip - the tooltip text, can be null

setPaneVisible

public void setPaneVisible(boolean visible)
Description copied from interface: TabPaneComponent
Changes the visibility state of this component. Invisible components should be removed from any parent.

Specified by:
setPaneVisible in interface TabPaneComponent
Parameters:
visible - the new state

isPaneVisible

public boolean isPaneVisible()
Description copied from interface: TabPaneComponent
Tells whether this component is visible or not.

Specified by:
isPaneVisible in interface TabPaneComponent
Returns:
true if visible, false otherwise

isSelected

public boolean isSelected()
Determines whether this button is selected or not.

Returns:
true if the button is selected

setZOrder

public void setZOrder(int order)
Description copied from interface: TabPaneComponent
Sets the z order of this component. The z order tells which component to paint first, as lower the order as earlier a component is to be painted. If two components overlap, then the one with the higher z order appears in front of the one with the lower z order. If two components have the same z order, then it is unspecified which component is painted first.
A z-order is at least 0 and must not exceed the number of TabPaneComponents on the parent TabPane. The implementation may increase or decrease z-orders to prevent collisions between components with the same order.

Specified by:
setZOrder in interface TabPaneComponent
Parameters:
order - the order, can be any integer.

getZOrder

public int getZOrder()
Description copied from interface: TabPaneComponent
Gets the value of the z order.

Specified by:
getZOrder in interface TabPaneComponent
Returns:
the z order
See Also:
TabPaneComponent.setZOrder(int)

getOverlap

public java.awt.Insets getOverlap(TabPaneComponent other)
Description copied from interface: TabPaneComponent
Tells how much of this component may be overlapped by another component other.

Specified by:
getOverlap in interface TabPaneComponent
Parameters:
other - another component which may be painted over this component
Returns:
the border of this component that may not be visible, not null

setOrientation

public void setOrientation(TabPlacement orientation)
Description copied from interface: TabPaneComponent
Tells this component how to paint itself.

Specified by:
setOrientation in interface TabPaneComponent
Parameters:
orientation - the orientation, not null

getOrientation

public TabPlacement getOrientation()
Gets the orientation of this tab.

Returns:
the orientation, not null

paintBackground

public void paintBackground(java.awt.Graphics g)
Description copied from interface: PaintableComponent
Invokes the standard algorithm that paints the background of the component. This method should be called at most once.

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