net.infonode.tabbedpanel
Class Tab

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 net.infonode.tabbedpanel.Tab
All Implemented Interfaces:
java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, javax.accessibility.Accessible
Direct Known Subclasses:
TitledTab

public class Tab
extends javax.swing.JPanel

A Tab is a component that represents a tab in a TabbedPanel.

A tab can hold a content component. The content component will then be shown in the content area of the TabbedPanel that the tab is a member of when the tab is selected. If the tab doesn't have a content component, then the TabbedPanel will not show any content in the content area, i.e. it will be empty.

The tab is basically a JPanel with a BorderLayout. The layout manager can be changed using setLayout. Components and borders can be added and removed from the tab. The tab can also be subclassed to create other types of tabs, see TitledTab. In most cases TitledTab is the preferred tab type to use because TitledTab adds support for a text, icon, looks etc.

The tab component will be shown in the tab area of a TabbedPanel after the tab has become a member of that TabbedPanel by either adding or inserting it. A tab can only be a member of one TabbedPanel at the same time.

A tab can have different states when it is a member of a TabbedPanel:

Version:
$Revision: 1.33 $
Author:
$Author: jesper $
See Also:
TabListener, TabbedPanel, TitledTab, 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
private  javax.swing.JComponent contentComponent
           
private  DraggableComponent draggableComponent
           
private  javax.swing.JComponent focusableComponent
           
private  java.awt.event.KeyListener focusableKeyListener
           
private  java.util.ArrayList listeners
           
private  TabbedPanel tabbedPanel
           
private  TabListener tabbedPanelListener
           
 
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
Tab()
          Constructs a tab without a content component and this tab as event component
Tab(javax.swing.JComponent contentComponent)
          Constructs a tab with a content component and this tab as event component
 
Method Summary
 void addNotify()
           
 void addTabListener(TabListener listener)
          Adds a TabListener
private  void fireAddedEvent()
           
private  void fireDehighlightedEvent(TabStateChangedEvent event)
           
private  void fireDeselectedEvent(TabStateChangedEvent event)
           
private  void fireDraggedEvent(TabDragEvent event)
           
private  void fireDroppedEvent(TabDragEvent event)
           
private  void fireHighlightedEvent(TabStateChangedEvent event)
           
private  void fireMovedEvent()
           
private  void fireNotDroppedEvent()
           
private  void fireRemovedEvent(TabRemovedEvent event)
           
private  void fireSelectedEvent(TabStateChangedEvent event)
           
 javax.swing.JComponent getContentComponent()
          Gets the content component
(package private)  DraggableComponent getDraggableComponent()
           
 javax.swing.JComponent[] getEventComponents()
          Gets the event components for this Tab
 javax.swing.JComponent getFocusableComponent()
          Gets the component in this tab that is focusable
 int getIndex()
          Gets the index of this tab in the TabbedPanel.
 java.awt.Shape getShape()
          Gets the tab Shape.
 TabbedPanel getTabbedPanel()
          Gets the TabbedPanel that this tab is a member of
 boolean isHighlighted()
          Returns if this tab is highlighted in the TabbedPanel that it is a member of.
 boolean isSelected()
          Returns if this tab is selected in the TabbedPanel that it is a member of.
 void removeNotify()
           
 void removeTabListener(TabListener listener)
          Removes a TabListener
 void setEnabled(boolean enabled)
          Enable or disable this tab.
 void setEventComponent(javax.swing.JComponent eventComponent)
          Sets the event component.
 void setEventComponents(javax.swing.JComponent[] eventComponents)
          Sets a list of event components.
 void setFocusableComponent(javax.swing.JComponent focusableComponent)
          Sets the component in this tab that represents the focusable part of the tab.
 void setHighlighted(boolean highlighted)
          Highlights this tab.
 void setSelected(boolean selected)
          Selects this tab.
protected  void setTabbedPanel(TabbedPanel tabbedPanel)
          Called by the tabbed panel when the tab becomes a member or is no longer a member of the tabbed panel
 
Methods inherited from class javax.swing.JPanel
getAccessibleContext, getUI, getUIClassID, paramString, setUI, updateUI
 
Methods inherited from class javax.swing.JComponent
addAncestorListener, 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, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, 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

tabbedPanel

private TabbedPanel tabbedPanel

contentComponent

private javax.swing.JComponent contentComponent

focusableComponent

private javax.swing.JComponent focusableComponent

listeners

private java.util.ArrayList listeners

draggableComponent

private DraggableComponent draggableComponent

focusableKeyListener

private java.awt.event.KeyListener focusableKeyListener

tabbedPanelListener

private TabListener tabbedPanelListener
Constructor Detail

Tab

public Tab()
Constructs a tab without a content component and this tab as event component

See Also:
setEventComponent(javax.swing.JComponent)

Tab

public Tab(javax.swing.JComponent contentComponent)
Constructs a tab with a content component and this tab as event component

Parameters:
contentComponent - content component for this tab or null for no content component.
See Also:
setEventComponent(javax.swing.JComponent)
Method Detail

addTabListener

public void addTabListener(TabListener listener)
Adds a TabListener

Parameters:
listener - the TabListener to add

removeTabListener

public void removeTabListener(TabListener listener)
Removes a TabListener

Parameters:
listener - the TabListener to remove

getContentComponent

public javax.swing.JComponent getContentComponent()
Gets the content component

Returns:
the content component for this tab or null if this Tab doesn't have a content component

getTabbedPanel

public TabbedPanel getTabbedPanel()
Gets the TabbedPanel that this tab is a member of

Returns:
the TabbedPanel or null if this tab is not a member of any TabbedPanel

setEnabled

public void setEnabled(boolean enabled)

Enable or disable this tab.

If the tab is disabled, then the tab will not signal any events until it is enabled again.

Overrides:
setEnabled in class javax.swing.JComponent
Parameters:
enabled - true for enabled, otherwise false

setSelected

public void setSelected(boolean selected)

Selects this tab. A tab can only have the selected state if it is a member of a TabbedPanel.

Setting selected to true means that this tab will be the selected tab in the TabbedPanel it is a member of. If this tab is the selected tab in the TabbedPanel then setting selected to false means there will be no selected tab in the TabbedPanel until another tab is selected.

Parameters:
selected - True for selected, otherwise false

isSelected

public boolean isSelected()
Returns if this tab is selected in the TabbedPanel that it is a member of.

Returns:
true if selected, false if not selected or this tab is not member of a TabbedPanel

setHighlighted

public void setHighlighted(boolean highlighted)
Highlights this tab. This tab will be the highlighted tab in the TabbedPanel that it is member of.

Parameters:
highlighted - true for highlight, otherwise false

isHighlighted

public boolean isHighlighted()
Returns if this tab is highlighted in the TabbedPanel that it is a member of.

Returns:
true if highlighted, false if not highlighted or this tab is not member of a TabbedPanel

setEventComponent

public void setEventComponent(javax.swing.JComponent eventComponent)

Sets the event component. An event component is a component in the tab that is used for internal listening to mouse events on the tab.

Note: The event component must be part of this Tab

Parameters:
eventComponent - a component in this tab that should be used for mouse event listening

setEventComponents

public void setEventComponents(javax.swing.JComponent[] eventComponents)

Sets a list of event components. An event component is a component in the tab that is used for internal listening to mouse events on the tab. This method makes it possible to use several components in the tab as event components.

Note: The event components must be part of this Tab

Parameters:
eventComponents - a list of components in this tab that should be used for mouse event listening

getEventComponents

public javax.swing.JComponent[] getEventComponents()
Gets the event components for this Tab

Returns:
a list of all event components for this tab

getIndex

public int getIndex()
Gets the index of this tab in the TabbedPanel.

Returns:
the tab index, -1 if this tab is not a member of a TabbedPanel.

getFocusableComponent

public javax.swing.JComponent getFocusableComponent()
Gets the component in this tab that is focusable

Returns:
focusable component or null if this tab doesn't have any focusable component

setFocusableComponent

public void setFocusableComponent(javax.swing.JComponent focusableComponent)

Sets the component in this tab that represents the focusable part of the tab.

Note: The focusable component must be part of this Tab

Parameters:
focusableComponent - a component in this tab or null if no component should be focusable

getShape

public java.awt.Shape getShape()

Gets the tab Shape.

This returns the shape of the tab. This can be be used by for example content borders in the tabbed panel so they can skip a gap where the tab intersects the tabbed panel content area.

Returns:
the tab Shape, null if the tab has the normal component rectangle shape
Since:
ITP 1.2.0

setTabbedPanel

protected void setTabbedPanel(TabbedPanel tabbedPanel)
Called by the tabbed panel when the tab becomes a member or is no longer a member of the tabbed panel

Parameters:
tabbedPanel - tabbed panel that this tab is a member of or null if this tab is no longer a member o a tabbed panel

getDraggableComponent

DraggableComponent getDraggableComponent()

fireHighlightedEvent

private void fireHighlightedEvent(TabStateChangedEvent event)

fireDehighlightedEvent

private void fireDehighlightedEvent(TabStateChangedEvent event)

fireSelectedEvent

private void fireSelectedEvent(TabStateChangedEvent event)

fireDeselectedEvent

private void fireDeselectedEvent(TabStateChangedEvent event)

fireDraggedEvent

private void fireDraggedEvent(TabDragEvent event)

fireDroppedEvent

private void fireDroppedEvent(TabDragEvent event)

fireNotDroppedEvent

private void fireNotDroppedEvent()

fireMovedEvent

private void fireMovedEvent()

fireAddedEvent

private void fireAddedEvent()

fireRemovedEvent

private void fireRemovedEvent(TabRemovedEvent event)

addNotify

public void addNotify()
Overrides:
addNotify in class javax.swing.JComponent

removeNotify

public void removeNotify()
Overrides:
removeNotify in class javax.swing.JComponent