Package org.pushingpixels.substance.internal.utils

# Class SubstanceTitlePane

java.lang.Object
java.awt.Component
java.awt.Container
javax.swing.JComponent
org.pushingpixels.substance.internal.utils.SubstanceTitlePane

All Implemented Interfaces:
  `ImageObserver`, `MenuContainer`, `Serializable`

public class SubstanceTitlePane extends JComponent
Title pane for Substance look and feel.

See Also:
  - Serialized Form

## Nested Class Summary

Nested Classes
Modifier and Type
Class
Description
`protected static enum`
`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

`JComponent.AccessibleJComponent`

## Nested classes/interfaces inherited from class java.awt.Container

`Container.AccessibleAWTContainer`

## Nested classes/interfaces inherited from class java.awt.Component

`Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy`

## Field Summary

Fields
Modifier and Type
Field
Description
`protected Image`
`appIcon`
The application icon to be displayed.
`protected JButton`
`closeButton`
Button used to close the frame.
`protected static final String`
`EXTRA_COMPONENT_KIND`
Client property to mark every child to be either leading or trailing.
`protected 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 JMenuBar`
`menuBar`
JMenuBar, typically renders the system menu items.
`protected JButton`
`minimizeButton`
Button used to minimize the frame
`protected PropertyChangeListener`
`propertyListener`
Listens on changes to `componentOrientation` and `SubstanceLookAndFeel.WINDOW_MODIFIED` properties.
`protected JRootPane`
`rootPane`
JRootPane rendering for.
`protected JButton`
`toggleButton`
Button used to maximize or restore the frame.
`protected Window`
`window`
Window we're currently in.

### 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`

## Constructor Summary

Constructors
Constructor
Description
`SubstanceTitlePane(JRootPane root, SubstanceRootPaneUI ui)`
Creates a new title pane.

## Method Summary

Modifier and Type
Method
Description
`void`
`addNotify()`
`protected LayoutManager`
`createLayout()`
Returns the `LayoutManager` that should be installed on the `SubstanceTitlePane`.
`protected JMenuBar`
`createMenuBar()`
Returns the `JMenuBar` displaying the appropriate system menu items.
`AbstractButton`
`getCloseButton()`
`JRootPane`
`getRootPane()`
Returns the `JRootPane` this was created for.
`DecorationAreaType`
`getThisDecorationType()`
`protected Rectangle`
`getTitleTextRectangle(int preferredWidth)`
Computes the rectangle of the title text.
`protected int`
`getWindowDecorationStyle()`
Returns the decoration style of the `JRootPane`.
`protected void`
`markExtraComponent(JComponent comp, SubstanceTitlePane.ExtraComponentKind kind)`
Marks the specified child component with the specified extra component kind.
`void`
`paintComponent(Graphics g)`
`void`
`removeNotify()`
`static void`
`setHeapStatusLogfileName(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, 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, getUI, getUIClassID, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, hide, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingOrigin, 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, getAccessibleContext, 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`

## Field Details

### menuBar

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

### toggleButton

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

### minimizeButton

protected JButton minimizeButton
Button used to minimize the frame

### closeButton

protected JButton closeButton
Button used to close the frame.

### window

protected Window window
Window we're currently in.

### rootPane

protected JRootPane rootPane
JRootPane rendering for.

### heapStatusPanel

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

### heapStatusMenuItem

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

### propertyListener

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

### EXTRA_COMPONENT_KIND

protected static final 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(int)`
  - Constant Field Values

### appIcon

protected Image appIcon
The application icon to be displayed.

## Constructor Details

### SubstanceTitlePane

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

Parameters:
  `root` - Root pane.
  `ui` - Root pane UI.

## Method Details

### uninstall

public void uninstall()
Uninstalls the necessary state.

### getRootPane

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

Overrides:
  `getRootPane` in class `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 `JComponent`

### removeNotify

public void removeNotify()

Overrides:
  `removeNotify` in class `JComponent`

### createMenuBar

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

Returns:
  `JMenuBar` displaying the appropriate system menu items.

### createLayout

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

Returns:
  Layout manager.

### getThisDecorationType

public DecorationAreaType getThisDecorationType()

### paintComponent

public void paintComponent(Graphics g)

Overrides:
  `paintComponent` in class `JComponent`

### getTitleTextRectangle

protected Rectangle getTitleTextRectangle(int preferredWidth)
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:
  `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(String heapStatusLogfileName)
Sets location for heap status logfile.

Parameters:
  `heapStatusLogfileName` - Logfile for the heap status panel.

### syncCloseButtonTooltip

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

### markExtraComponent

protected void markExtraComponent(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(int)`
  - `EXTRA_COMPONENT_KIND`

### getCloseButton

public AbstractButton getCloseButton()