eu.beesoft.gaia.swing
Class JCloseableTabbedPane

java.lang.Object
  extended by java.awt.Component
      extended by java.awt.Container
          extended by javax.swing.JComponent
              extended by javax.swing.JTabbedPane
                  extended by eu.beesoft.gaia.swing.JCloseableTabbedPane
All Implemented Interfaces:
java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, java.util.EventListener, javax.accessibility.Accessible, javax.swing.event.ChangeListener, javax.swing.SwingConstants

public class JCloseableTabbedPane
extends javax.swing.JTabbedPane
implements javax.swing.event.ChangeListener

This component solves a close-buttons for tabs of the tabbed pane.

From JDK 1.6 you can use any component to paint tab, but this is impossible in version 1.5. This component paints a small close button behind the tab title, so you can use this close-tab feature in version 1.5.

The component is closeable (paints the close button) by default. You can change this by calling setCloseable(boolean) method.

The component notifies about the mouse click on te close button all registered action listeners. You can accomplish also automatic close of the tab after the listeners are notified. Set property autoClose to true via method setAutoClose(boolean).

See Also:
Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from class javax.swing.JTabbedPane
javax.swing.JTabbedPane.AccessibleJTabbedPane, javax.swing.JTabbedPane.ModelListener
 
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.JTabbedPane
changeEvent, changeListener, model, SCROLL_TAB_LAYOUT, tabPlacement, WRAP_TAB_LAYOUT
 
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 javax.swing.SwingConstants
BOTTOM, CENTER, EAST, HORIZONTAL, LEADING, LEFT, NEXT, NORTH, NORTH_EAST, NORTH_WEST, PREVIOUS, RIGHT, SOUTH, SOUTH_EAST, SOUTH_WEST, TOP, TRAILING, VERTICAL, WEST
 
Fields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
 
Constructor Summary
JCloseableTabbedPane()
          Creates a new instance of JCloseableTabbedPane with state closeable = true.
 
Method Summary
 void addActionListener(java.awt.event.ActionListener listener)
          Adds the given listener to the action listeners of this component.
protected  void fireCloseTab(int index)
          Invoked when an user close a tab (clicks on the tab close button).
 void insertTab(java.lang.String title, javax.swing.Icon icon, java.awt.Component component, java.lang.String tip, int index)
          Inserts a component, at index, represented by a title and/or icon, either of which may be null.
 boolean isAutoClose()
          Returns a value of the property 'autoClose'.
 boolean isCloseable()
          Returns true if tabs of this component displays button for close.
 void paint(java.awt.Graphics g)
          Paints this component.
 void removeActionListener(java.awt.event.ActionListener listener)
          Removes the given listener from the action listeners of this component.
 void setAutoClose(boolean autoClose)
          Sets a new value for property 'autoClose'.
 void setCloseable(boolean closeable)
          Sets a new value for property 'closeable'.
 void setTitleAt(int index, java.lang.String title)
          Sets the title at index to title which can be null.
 void stateChanged(javax.swing.event.ChangeEvent e)
          Implements the ChangeListener interface.
 
Methods inherited from class javax.swing.JTabbedPane
add, add, add, add, add, addChangeListener, addTab, addTab, addTab, createChangeListener, fireStateChanged, getAccessibleContext, getBackgroundAt, getBoundsAt, getComponentAt, getDisabledIconAt, getDisplayedMnemonicIndexAt, getForegroundAt, getChangeListeners, getIconAt, getMnemonicAt, getModel, getSelectedComponent, getSelectedIndex, getTabCount, getTabLayoutPolicy, getTabPlacement, getTabRunCount, getTitleAt, getToolTipText, getToolTipTextAt, getUI, getUIClassID, indexAtLocation, indexOfComponent, indexOfTab, indexOfTab, isEnabledAt, paramString, remove, remove, removeAll, removeChangeListener, removeTabAt, setBackgroundAt, setComponentAt, setDisabledIconAt, setDisplayedMnemonicIndexAt, setEnabledAt, setForegroundAt, setIconAt, setMnemonicAt, setModel, setSelectedComponent, setSelectedIndex, setTabLayoutPolicy, setTabPlacement, setToolTipTextAt, 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, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paintBorder, paintComponent, paintChildren, paintImmediately, paintImmediately, print, printAll, printBorder, printComponent, printChildren, 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
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, 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, 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, checkImage, checkImage, 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

JCloseableTabbedPane

public JCloseableTabbedPane()
Creates a new instance of JCloseableTabbedPane with state closeable = true.

Method Detail

isCloseable

public boolean isCloseable()
Returns true if tabs of this component displays button for close.

Returns:
state of property 'closeable'

setCloseable

public void setCloseable(boolean closeable)
Sets a new value for property 'closeable'. If it is true, tabs of this component will display button for close.

Parameters:
closeable - - a new value to set

isAutoClose

public boolean isAutoClose()
Returns a value of the property 'autoClose'.

Returns:
a value of the auto-close

setAutoClose

public void setAutoClose(boolean autoClose)
Sets a new value for property 'autoClose'. If it is true, each tab will be after an user click on the close button automatically closed and removed from tabbed pane. If it is false, action listener is notified only.

Parameters:
autoClose - - a new value to set

fireCloseTab

protected void fireCloseTab(int index)
Invoked when an user close a tab (clicks on the tab close button). Notifies all registered action listeners. If is the auto-close set to true, removes tab with given index.

Parameters:
index - - the index of a tab to close

addActionListener

public void addActionListener(java.awt.event.ActionListener listener)
Adds the given listener to the action listeners of this component.

Parameters:
listener - - a new listener to add

removeActionListener

public void removeActionListener(java.awt.event.ActionListener listener)
Removes the given listener from the action listeners of this component.

Parameters:
listener - - a listener to remove

setTitleAt

public void setTitleAt(int index,
                       java.lang.String title)
Sets the title at index to title which can be null. An IndexOutOfBoundsException is raised if there is no tab at that index.

Overrides:
setTitleAt in class javax.swing.JTabbedPane
Parameters:
index - - the tab index where the title should be set
title - - the title to be displayed in the tab

insertTab

public void insertTab(java.lang.String title,
                      javax.swing.Icon icon,
                      java.awt.Component component,
                      java.lang.String tip,
                      int index)
Inserts a component, at index, represented by a title and/or icon, either of which may be null. Uses java.util.Vector internally, see insertElementAt for details of insertion conventions.

Overrides:
insertTab in class javax.swing.JTabbedPane
Parameters:
title - - the title to be displayed in this tab
icon - - the icon to be displayed in this tab
component - - The component to be displayed when this tab is clicked.
tip - - the tooltip to be displayed for this tab
index - - the position to insert this new tab

stateChanged

public void stateChanged(javax.swing.event.ChangeEvent e)
Implements the ChangeListener interface.

Specified by:
stateChanged in interface javax.swing.event.ChangeListener
Parameters:
e - - change event

paint

public void paint(java.awt.Graphics g)
Paints this component.

Overrides:
paint in class javax.swing.JComponent
Parameters:
g - - the graphics context to use for painting