simtools.ui
Class SplitTabPane

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 simtools.ui.SplitTabPane
All Implemented Interfaces:
java.awt.event.MouseListener, java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, java.util.EventListener, javax.accessibility.Accessible, NamedElementContainer
Direct Known Subclasses:
SourcePanel, SplitTabPaneTest

public class SplitTabPane
extends javax.swing.JPanel
implements java.awt.event.MouseListener, NamedElementContainer

A split tab pane is a JPanel in charge of the layout of several sub panel elements 3 kind of layouts are available TAB mode : a JTabbedPane is used to display the elements and a card with the element name allows to select it SPLIT mode : the element is displayed under the JTabbedPane (it one element uses this mode) and JSplitPane are used to separate the elements using this mode and thus the user can define the split location DETACHED mode : the element is not displayed in this panel but in a "detached" dialog. When the user closes the dialog the element comes back in this panel with its previous mode (TAB or SPLIT) layout All the layout parameters are saved and restore in/from the UserProperties

See Also:
Serialized Form

Nested Class Summary
protected  class SplitTabPane.Element
          Element is the internal structure describing the managed components
 class SplitTabPane.PopupMenu
          The default popup used to provide control on the layout mode
protected  class SplitTabPane.SplitBorder
          The default wrapper for the components when in SPLIT mode A JPanel with a TitledBorder containing the element name This panel has also a mouse listener for the popup menu
 
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
protected  boolean allowDetached
          allow to detach components
protected  boolean allowSplit
          allow to split/unsplit if not allowed then components stay in their intial mode or can be detached
static int DETACHED
          The DETACHED mode id
protected  java.util.ArrayList elements
          The elements list
protected  SplitTabPane.SplitBorder firstSplitBorder
          The wrapper for the first element in SPLIT mode
protected  int orientation
          define the panel orientation, i.e.
protected  java.awt.Frame owner
          the Frame owner used as the owner of the created dialogs in detached mode
static MenuResourceBundle resources
          The resources used for the popup menu
static int SPLIT
          The SPLIT mode id
protected  SplitTabPane.PopupMenu splitPopup
          the popup to "split" a "tab" element
static int TAB
          The TAB mode id
protected  javax.swing.JTabbedPane tabPane
          The tab pane, null if no element currently in this mode
protected  javax.swing.JSplitPane tabSplit
          The split used between the elements in SPLIT mode and the element in TAB mode
protected  SplitTabPane.PopupMenu unsplitPopup
          the popup to "tab" a "split" element
 
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
SplitTabPane(java.awt.Frame owner, int orientation, boolean allowSplit, boolean allowDetached)
          Creates a new panel without elements
 
Method Summary
 void addElement(java.awt.Component comp, java.lang.String name)
          Add a component into this container and provide its name
 void addElement(java.awt.Component c, java.lang.String name, int mode)
          Add a new element at the last index
protected  void addElement(java.awt.Component c, java.lang.String name, int mode, int index)
          Add a new element at the given index
 void changeElement(java.awt.Component c, int newMode)
          Change the display mode of one element
protected  javax.swing.JDialog createDialog(java.awt.Component c, java.lang.String name)
          Create the dialog used in DETACHED mode To be oveverridden if needed !
protected  SplitTabPane.Element createElement(java.awt.Component c, java.lang.String n, java.awt.Container o, SplitTabPane.SplitBorder b)
          Create the Element, the internal structure describing the managed components To be oveverridden if needed !
protected  void createPopups()
          Create the popups that allows the user to change elements layout mode To be oveverridden if needed !
protected  SplitTabPane.SplitBorder createSplitBorder(java.awt.Component c, java.lang.String name)
          Create the panel used in SPLIT mode to display the component inside JSplitPane.
 SplitTabPane.Element getElement(java.awt.Component c)
          Gets the element knowing the displayed component
 int getElementIndex(java.awt.Component c)
          Gets the element index knowing the displayed component
 boolean isVisible(java.lang.String name)
          Checks if an element is visible
 void load(UserProperties up, java.lang.String suffix)
           
 void mouseClicked(java.awt.event.MouseEvent e)
           
 void mouseEntered(java.awt.event.MouseEvent e)
           
 void mouseExited(java.awt.event.MouseEvent e)
           
 void mousePressed(java.awt.event.MouseEvent e)
           
 void mouseReleased(java.awt.event.MouseEvent e)
           
protected  void removeElement(SplitTabPane.Element e)
          Remove an element from the list The removed element is not foreseen to be reused
 void save(UserProperties up, java.lang.String suffix)
           
 
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, 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, 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
 

Field Detail

resources

public static MenuResourceBundle resources
The resources used for the popup menu


SPLIT

public static final int SPLIT
The SPLIT mode id

See Also:
Constant Field Values

TAB

public static final int TAB
The TAB mode id

See Also:
Constant Field Values

DETACHED

public static final int DETACHED
The DETACHED mode id

See Also:
Constant Field Values

elements

protected java.util.ArrayList elements
The elements list


tabPane

protected javax.swing.JTabbedPane tabPane
The tab pane, null if no element currently in this mode


firstSplitBorder

protected SplitTabPane.SplitBorder firstSplitBorder
The wrapper for the first element in SPLIT mode


tabSplit

protected javax.swing.JSplitPane tabSplit
The split used between the elements in SPLIT mode and the element in TAB mode


orientation

protected int orientation
define the panel orientation, i.e. VERTICAL or horizontal


splitPopup

protected SplitTabPane.PopupMenu splitPopup
the popup to "split" a "tab" element


unsplitPopup

protected SplitTabPane.PopupMenu unsplitPopup
the popup to "tab" a "split" element


allowSplit

protected boolean allowSplit
allow to split/unsplit if not allowed then components stay in their intial mode or can be detached


allowDetached

protected boolean allowDetached
allow to detach components


owner

protected java.awt.Frame owner
the Frame owner used as the owner of the created dialogs in detached mode

Constructor Detail

SplitTabPane

public SplitTabPane(java.awt.Frame owner,
                    int orientation,
                    boolean allowSplit,
                    boolean allowDetached)
Creates a new panel without elements

Parameters:
owner - used as the owner of the created dialogs in detached mode
orientation - JSplitPane.HORIZONTAL_SPLIT or JSplitPane.VERICAL_SPLIT
allowSplit -
allowDetached -
Method Detail

isVisible

public boolean isVisible(java.lang.String name)
Checks if an element is visible

Parameters:
name - the element name
Returns:
true if it is visible

getElement

public SplitTabPane.Element getElement(java.awt.Component c)
Gets the element knowing the displayed component

Parameters:
c - the component
Returns:
the element

getElementIndex

public int getElementIndex(java.awt.Component c)
Gets the element index knowing the displayed component

Parameters:
c - the component
Returns:
the element index

changeElement

public void changeElement(java.awt.Component c,
                          int newMode)
Change the display mode of one element

Parameters:
c - the component to change
newMode - the new mode

addElement

public void addElement(java.awt.Component comp,
                       java.lang.String name)
Description copied from interface: NamedElementContainer
Add a component into this container and provide its name

Specified by:
addElement in interface NamedElementContainer
Parameters:
comp - the component
name - the component name

addElement

public void addElement(java.awt.Component c,
                       java.lang.String name,
                       int mode)
Add a new element at the last index

Parameters:
c - the component to be displayed
name - its name
mode - the mode to be used

addElement

protected void addElement(java.awt.Component c,
                          java.lang.String name,
                          int mode,
                          int index)
Add a new element at the given index

Parameters:
c - the component to be displayed
name - its name
mode - the mode to be used
index - the index in the list of exisiting elements

removeElement

protected void removeElement(SplitTabPane.Element e)
Remove an element from the list The removed element is not foreseen to be reused

Parameters:
e - the element to be removed

createPopups

protected void createPopups()
Create the popups that allows the user to change elements layout mode To be oveverridden if needed !


createDialog

protected javax.swing.JDialog createDialog(java.awt.Component c,
                                           java.lang.String name)
Create the dialog used in DETACHED mode To be oveverridden if needed !

Parameters:
c - the component to be displayed
name - the name used as a dialog title
Returns:
the dialog

save

public void save(UserProperties up,
                 java.lang.String suffix)

load

public void load(UserProperties up,
                 java.lang.String suffix)

mouseClicked

public void mouseClicked(java.awt.event.MouseEvent e)
Specified by:
mouseClicked in interface java.awt.event.MouseListener

mouseEntered

public void mouseEntered(java.awt.event.MouseEvent e)
Specified by:
mouseEntered in interface java.awt.event.MouseListener

mouseExited

public void mouseExited(java.awt.event.MouseEvent e)
Specified by:
mouseExited in interface java.awt.event.MouseListener

mouseReleased

public void mouseReleased(java.awt.event.MouseEvent e)
Specified by:
mouseReleased in interface java.awt.event.MouseListener

mousePressed

public void mousePressed(java.awt.event.MouseEvent e)
Specified by:
mousePressed in interface java.awt.event.MouseListener

createSplitBorder

protected SplitTabPane.SplitBorder createSplitBorder(java.awt.Component c,
                                                     java.lang.String name)
Create the panel used in SPLIT mode to display the component inside JSplitPane. To be oveverridden if needed !

Parameters:
c - the component to be displayed
name - the name used as a dialog title
Returns:
the panel

createElement

protected SplitTabPane.Element createElement(java.awt.Component c,
                                             java.lang.String n,
                                             java.awt.Container o,
                                             SplitTabPane.SplitBorder b)
Create the Element, the internal structure describing the managed components To be oveverridden if needed !

Parameters:
c - the component to be displayed
n - the name of the component
o - the container owner of this component (a JSplitPane, a JDialog, a JTabbedPane or this)
Returns:
the element