ca.sqlpower.wabit.swingui
Class StackedTabComponent

java.lang.Object
  extended by java.awt.Component
      extended by java.awt.Container
          extended by javax.swing.JComponent
              extended by ca.sqlpower.wabit.swingui.StackedTabComponent
All Implemented Interfaces:
java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable

public class StackedTabComponent
extends javax.swing.JComponent

A custom JComponent to implement the idea of a 'stack' of tabs. The idea is similar to the JTabbedPane, except the tabs are stacked on top of each other vertically. When a 'tab' is selected, its component is painted in between the tab and the next tab (or at the every bottom if it's the last tab). The API is only a subset of the JTabbedPane API, so it's not yet a full drop-in replacement for JTabbedPane. It currently only implements the subset of methods that are called from WabitSwingSessionContextImpl, so that it can be used in the Wabit.

See Also:
Serialized Form

Nested Class Summary
 class StackedTabComponent.StackedTab
          Represents an individual 'tab'.
 
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
 
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
StackedTabComponent()
           
 
Method Summary
 void addChangeListener(javax.swing.event.ChangeListener tabChangeListener)
          Add a ChangeListener to listen for state changes to the tab
 StackedTabComponent.StackedTab addTab(java.lang.String title, java.awt.Component comp, boolean closeable)
          Adds a new tab to the bottom of the stack.
 int getSelectedIndex()
          Returns the index of the current selected tab.
 StackedTabComponent.StackedTab getSelectedTab()
          Returns the StackedTab representing the currently selected tab.
 int getTabCount()
          Returns the current number of tabs
 int indexAtLocation(int x, int y)
          Returns the index of the tab that contains the given set of co-ordinates
 int indexOfTab(StackedTabComponent.StackedTab tab)
          Returns the index of the given tab in this component's tab order.
 int indexOfTab(java.lang.String string)
          Returns the index of the first tab which has a title that matches the given string
 void removeTabAt(int i)
          Removes the tab at the given index
 void setSelectedIndex(int i)
          Set the selected tab to the one at the given index.
 void setTitleAt(int index, java.lang.String newValue)
          Sets the title of a given tab.
 
Methods inherited from class javax.swing.JComponent
addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getAccessibleContext, 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, getUIClassID, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintComponent, paintImmediately, paintImmediately, paramString, 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, updateUI
 
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

StackedTabComponent

public StackedTabComponent()
Method Detail

addTab

public StackedTabComponent.StackedTab addTab(java.lang.String title,
                                             java.awt.Component comp,
                                             boolean closeable)
Adds a new tab to the bottom of the stack.

Parameters:
title - The label to display on the tab itself.
comp - The component to display beneath the tab when the tab is selected.
closeable - Whether or not the new tab will have a functioning close button.
Returns:
The newly created tab object.

setSelectedIndex

public void setSelectedIndex(int i)
Set the selected tab to the one at the given index. If the index is outside the range of the current list of tabs, then selected tab is set to null.


getTabCount

public int getTabCount()
Returns the current number of tabs


setTitleAt

public void setTitleAt(int index,
                       java.lang.String newValue)
Sets the title of a given tab.

Parameters:
index - The index of the tab that we're changing the title for
newValue - The new title for tab at the given index

addChangeListener

public void addChangeListener(javax.swing.event.ChangeListener tabChangeListener)
Add a ChangeListener to listen for state changes to the tab


indexOfTab

public int indexOfTab(java.lang.String string)
Returns the index of the first tab which has a title that matches the given string

Parameters:
string - A string to match with a tab's title
Returns:
The index of the first tab that has a title that matches the given string. If no such tab exists, returns -1.

indexOfTab

public int indexOfTab(StackedTabComponent.StackedTab tab)
Returns the index of the given tab in this component's tab order.

Parameters:
tab - the tab to find the index of.
Returns:
The index of the given tab in this component's tab list, which matches the visually displayed order of the tabs. If the tab is not presently associated with this component, returns -1.

getSelectedIndex

public int getSelectedIndex()
Returns the index of the current selected tab. If no tab is selected, then returns -1


removeTabAt

public void removeTabAt(int i)
Removes the tab at the given index

Parameters:
i - The index of the tab to remove
Throws:
java.lang.IndexOutOfBoundsException - if i < 0 or i >= to tabs.size()

indexAtLocation

public int indexAtLocation(int x,
                           int y)
Returns the index of the tab that contains the given set of co-ordinates

Parameters:
x - The x co-ordinate to check
y - The y co-ordinate to check
Returns:
The index of the tab containing the x and y co-ordinates

getSelectedTab

public StackedTabComponent.StackedTab getSelectedTab()
Returns the StackedTab representing the currently selected tab.



Copyright © 2009. All Rights Reserved.