org.jvnet.substance.utils
Class SubstanceTitlePane

java.lang.Object
  extended by java.awt.Component
      extended by java.awt.Container
          extended by javax.swing.JComponent
              extended by org.jvnet.substance.utils.SubstanceTitlePane
All Implemented Interfaces:
java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable

public class SubstanceTitlePane
extends javax.swing.JComponent

Title pane for Substance look and feel.

Author:
Kirill Grouchnikov
See Also:
Serialized Form

Nested Class Summary
protected static class SubstanceTitlePane.ExtraComponentKind
          Enumerates the types of children components.
static class SubstanceTitlePane.HeapStatusPanel
          Panel that shows heap status and allows running the garbage collector.
static class SubstanceTitlePane.HeapStatusThread
          Thread for heap status panel.
 class SubstanceTitlePane.SubstanceMenuBar
          Class responsible for drawing the system menu.
protected  class SubstanceTitlePane.TitlePaneLayout
          Layout manager for the title pane.
 
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  java.awt.Image appIcon
          The application icon to be displayed.
protected  javax.swing.JButton closeButton
          Button used to close the frame.
protected static java.lang.String EXTRA_COMPONENT_KIND
          Client property to mark every child to be either leading or trailing.
protected  javax.swing.JCheckBoxMenuItem heapStatusMenuItem
          The heap status toggle menu item of this title pane.
protected  SubstanceTitlePane.HeapStatusPanel heapStatusPanel
          The heap status panel of this title pane.
protected  javax.swing.JMenuBar menuBar
          JMenuBar, typically renders the system menu items.
protected  javax.swing.JButton minimizeButton
          Button used to minimize the frame
protected  java.beans.PropertyChangeListener propertyListener
          Listens on changes to componentOrientation and SubstanceLookAndFeel.WINDOW_MODIFIED properties.
protected  javax.swing.JRootPane rootPane
          JRootPane rendering for.
protected  javax.swing.JButton toggleButton
          Button used to maximize or restore the frame.
protected  java.awt.Window window
          Window we're currently in.
 
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
SubstanceTitlePane(javax.swing.JRootPane root, SubstanceRootPaneUI ui)
          Creates a new title pane.
 
Method Summary
 void addNotify()
           
protected  java.awt.LayoutManager createLayout()
          Returns the LayoutManager that should be installed on the SubstanceTitlePane.
protected  javax.swing.JMenuBar createMenuBar()
          Returns the JMenuBar displaying the appropriate system menu items.
 javax.swing.JRootPane getRootPane()
          Returns the JRootPane this was created for.
protected  java.awt.Rectangle getTitleTextRectangle()
          Computes the rectangle of the title text.
protected  int getWindowDecorationStyle()
          Returns the decoration style of the JRootPane.
protected  void markExtraComponent(javax.swing.JComponent comp, SubstanceTitlePane.ExtraComponentKind kind)
          Marks the specified child component with the specified extra component kind.
 void paintComponent(java.awt.Graphics g)
           
 void removeNotify()
           
static void setHeapStatusLogfileName(java.lang.String heapStatusLogfileName)
          Sets location for heap status logfile.
protected  void syncCloseButtonTooltip()
          Synchronizes the tooltip of the close button.
 void uninstall()
          Uninstalls the necessary state.
 
Methods inherited from class javax.swing.JComponent
addAncestorListener, 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, 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, paintImmediately, paintImmediately, paramString, 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, 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, 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, transferFocusBackward, transferFocusUpCycle
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

menuBar

protected javax.swing.JMenuBar menuBar
JMenuBar, typically renders the system menu items.


toggleButton

protected javax.swing.JButton toggleButton
Button used to maximize or restore the frame.


minimizeButton

protected javax.swing.JButton minimizeButton
Button used to minimize the frame


closeButton

protected javax.swing.JButton closeButton
Button used to close the frame.


window

protected java.awt.Window window
Window we're currently in.


rootPane

protected javax.swing.JRootPane rootPane
JRootPane rendering for.


heapStatusPanel

protected SubstanceTitlePane.HeapStatusPanel heapStatusPanel
The heap status panel of this title pane.


heapStatusMenuItem

protected javax.swing.JCheckBoxMenuItem heapStatusMenuItem
The heap status toggle menu item of this title pane.


propertyListener

protected java.beans.PropertyChangeListener propertyListener
Listens on changes to componentOrientation and SubstanceLookAndFeel.WINDOW_MODIFIED properties.


EXTRA_COMPONENT_KIND

protected static final java.lang.String EXTRA_COMPONENT_KIND
Client property to mark every child to be either leading or trailing. The value must be one of SubstanceTitlePane.ExtraComponentKind.

See Also:
markExtraComponent(JComponent, ExtraComponentKind), getTitleTextRectangle(), Constant Field Values

appIcon

protected java.awt.Image appIcon
The application icon to be displayed.

Constructor Detail

SubstanceTitlePane

public SubstanceTitlePane(javax.swing.JRootPane root,
                          SubstanceRootPaneUI ui)
Creates a new title pane.

Parameters:
root - Root pane.
ui - Root pane UI.
Method Detail

uninstall

public void uninstall()
Uninstalls the necessary state.


getRootPane

public javax.swing.JRootPane getRootPane()
Returns the JRootPane this was created for.

Overrides:
getRootPane in class javax.swing.JComponent

getWindowDecorationStyle

protected int getWindowDecorationStyle()
Returns the decoration style of the JRootPane.

Returns:
Decoration style of the JRootPane.

addNotify

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

removeNotify

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

createMenuBar

protected javax.swing.JMenuBar createMenuBar()
Returns the JMenuBar displaying the appropriate system menu items.

Returns:
JMenuBar displaying the appropriate system menu items.

createLayout

protected java.awt.LayoutManager createLayout()
Returns the LayoutManager that should be installed on the SubstanceTitlePane.

Returns:
Layout manager.

paintComponent

public void paintComponent(java.awt.Graphics g)
Overrides:
paintComponent in class javax.swing.JComponent

getTitleTextRectangle

protected java.awt.Rectangle getTitleTextRectangle()
Computes the rectangle of the title text. This method looks at all the children components of the title pane, grouping them by leading and trailing (based on EXTRA_COMPONENT_KIND client property). The title text rectangle is the space between the leading group and the trailing group.

Returns:
Rectangle of the title text.
Throws:
java.lang.IllegalStateException - If at least one child component of this title pane is not marked with the EXTRA_COMPONENT_KIND client property.
See Also:
markExtraComponent(JComponent, ExtraComponentKind), EXTRA_COMPONENT_KIND

setHeapStatusLogfileName

public static void setHeapStatusLogfileName(java.lang.String heapStatusLogfileName)
Sets location for heap status logfile. Relevant if #setCanHaveHeapStatusPanel(boolean) was called with true.

Parameters:
heapStatusLogfileName - Logfile for the heap status panel.

syncCloseButtonTooltip

protected void syncCloseButtonTooltip()
Synchronizes the tooltip of the close button.


markExtraComponent

protected void markExtraComponent(javax.swing.JComponent comp,
                                  SubstanceTitlePane.ExtraComponentKind kind)
Marks the specified child component with the specified extra component kind.

Parameters:
comp - Child component.
kind - Extra kind.
See Also:
getTitleTextRectangle(), EXTRA_COMPONENT_KIND