Class DetachableTabbedPane

  • All Implemented Interfaces:
    java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, javax.accessibility.Accessible, javax.swing.SwingConstants

    public class DetachableTabbedPane
    extends javax.swing.JTabbedPane
    JTabbedPane implementation which allows tabbs to be 'torn off' as their own window. When the DetachableTabbedPane is set not visible using the 'setVisible' method, any detached tabs are also hidden. When set visible by the same means, previously detached, yet hidden tabs, are re-shown.
    See Also:
    Serialized Form
    • Nested Class Summary

      Nested Classes 
      Modifier and Type Class Description
      class  DetachableTabbedPane.Detachable
      Class to maintain info for panels as they are added and removed, detached and attached from the DetachableTabPane.
      • 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.BaselineResizeBehavior, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy
    • Field Summary

      Fields 
      Modifier and Type Field Description
      protected boolean detachable
      Indicates whether the tabs in this TabbedPane are actually detachable, or just behave normally
      protected java.awt.Image detachedIconImage
      Prettify the detached tabbs
      protected java.util.HashMap<java.awt.Component,​DetachableTabbedPane.Detachable> panelToDetMap  
      (package private) java.lang.String titleSuffix  
      • Fields inherited from class javax.swing.JTabbedPane

        changeEvent, changeListener, model, SCROLL_TAB_LAYOUT, tabPlacement, WRAP_TAB_LAYOUT
      • Fields inherited from class javax.swing.JComponent

        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

        accessibleContext, 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
      • 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
    • Constructor Summary

      Constructors 
      Constructor Description
      DetachableTabbedPane()
      Creates an empty DetachableTabbedPane with a default tab placement of JTabbedPane.TOP and detachability on.
      DetachableTabbedPane​(int tabPlacement, boolean detachable)
      Creates an empty DetachableTabbedPane with the specified tab placement of either: JTabbedPane.TOP, JTabbedPane.BOTTOM, JTabbedPane.LEFT, or JTabbedPane.RIGHT, and specified detachability.
      DetachableTabbedPane​(int tabPlacement, int tabLayoutPolicy, boolean detachable)
      Creates an empty DetachableTabbedPane with the specified tab placement and tab layout policy.
      DetachableTabbedPane​(java.lang.String titleSuffix)  
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      protected DetachableTabbedPane.Detachable createDetachable​(java.lang.String title, javax.swing.Icon icon, java.awt.Component comp, java.lang.String tip, int index, java.lang.String titleSuffix)
      Returns the default Detachable.
      protected DetachableTabbedPane.Detachable getDetachable​(java.awt.Component comp)
      Lookup the Detachable for the specified component, which must have been added as a tab.
      protected DetachableTabbedPane.Detachable[] getDetachables()
      Return Detachables which have been added as Tabs or Detached Frames.
      java.awt.Image getDetachedIconImage()  
      void insertTab​(java.lang.String title, javax.swing.Icon icon, java.awt.Component comp, java.lang.String tip, int index)
      Overridden to add our 'detach' icon.
      void remove​(int index)
      Overridden to remove the comopnent from the possible list of components this pane displays
      void remove​(java.awt.Component comp)  
      void setDetachable​(boolean detachable)  
      void setDetachedIconImage​(java.awt.Image image)  
      void setVisible​(boolean show)
      Overridden to hide or show the detached tabs as well.
      • Methods inherited from class javax.swing.JTabbedPane

        add, add, add, add, add, addChangeListener, addTab, addTab, addTab, createChangeListener, fireStateChanged, getAccessibleContext, getBackgroundAt, getBoundsAt, getChangeListeners, getComponentAt, getDisabledIconAt, getDisplayedMnemonicIndexAt, getForegroundAt, getIconAt, getMnemonicAt, getModel, getSelectedComponent, getSelectedIndex, getTabComponentAt, getTabCount, getTabLayoutPolicy, getTabPlacement, getTabRunCount, getTitleAt, getToolTipText, getToolTipTextAt, getUI, getUIClassID, indexAtLocation, indexOfComponent, indexOfTab, indexOfTab, indexOfTabComponent, isEnabledAt, paramString, removeAll, removeChangeListener, removeTabAt, setBackgroundAt, setComponentAt, setDisabledIconAt, setDisplayedMnemonicIndexAt, setEnabledAt, setForegroundAt, setIconAt, setMnemonicAt, setModel, setSelectedComponent, setSelectedIndex, setTabComponentAt, setTabLayoutPolicy, setTabPlacement, setTitleAt, 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, 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, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, hide, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingOrigin, 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, 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, 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, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, 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, requestFocus, requestFocus, requestFocusInWindow, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setMixingCutoutShape, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    • Constructor Detail

      • DetachableTabbedPane

        public DetachableTabbedPane()
        Creates an empty DetachableTabbedPane with a default tab placement of JTabbedPane.TOP and detachability on.
      • DetachableTabbedPane

        public DetachableTabbedPane​(int tabPlacement,
                                    boolean detachable)
        Creates an empty DetachableTabbedPane with the specified tab placement of either: JTabbedPane.TOP, JTabbedPane.BOTTOM, JTabbedPane.LEFT, or JTabbedPane.RIGHT, and specified detachability.
      • DetachableTabbedPane

        public DetachableTabbedPane​(int tabPlacement,
                                    int tabLayoutPolicy,
                                    boolean detachable)
        Creates an empty DetachableTabbedPane with the specified tab placement and tab layout policy.
    • Method Detail

      • createDetachable

        protected DetachableTabbedPane.Detachable createDetachable​(java.lang.String title,
                                                                   javax.swing.Icon icon,
                                                                   java.awt.Component comp,
                                                                   java.lang.String tip,
                                                                   int index,
                                                                   java.lang.String titleSuffix)
        Returns the default Detachable.
      • getDetachable

        protected DetachableTabbedPane.Detachable getDetachable​(java.awt.Component comp)
        Lookup the Detachable for the specified component, which must have been added as a tab. Returns null if not already added.
      • insertTab

        public void insertTab​(java.lang.String title,
                              javax.swing.Icon icon,
                              java.awt.Component comp,
                              java.lang.String tip,
                              int index)
        Overridden to add our 'detach' icon. All the add and addTab methods are cover methods for insertTab.
        Overrides:
        insertTab in class javax.swing.JTabbedPane
      • remove

        public void remove​(int index)
        Overridden to remove the comopnent from the possible list of components this pane displays
        Overrides:
        remove in class javax.swing.JTabbedPane
      • remove

        public void remove​(java.awt.Component comp)
        Overrides:
        remove in class javax.swing.JTabbedPane
      • setVisible

        public void setVisible​(boolean show)
        Overridden to hide or show the detached tabs as well. State is retained, so that if you hide this TabbedPane, the detached panels will be hidden, but when you re-show this TabbedPane, the detached panels will be re-shown in their last positions.
        Overrides:
        setVisible in class javax.swing.JComponent
      • setDetachable

        public void setDetachable​(boolean detachable)