Class RadianceRootPaneUI

All Implemented Interfaces:
PropertyChangeListener, EventListener
Direct Known Subclasses:
RadianceRibbonRootPaneUI

public class RadianceRootPaneUI extends BasicRootPaneUI
UI for root panes in Radiance look and feel.
  • Field Details

    • CORNER_DRAG_WIDTH

      private static final int CORNER_DRAG_WIDTH
      The amount of space (in pixels) that the cursor is changed on.
      See Also:
    • BORDER_DRAG_THICKNESS

      private static final int BORDER_DRAG_THICKNESS
      Region from edges that dragging is active from.
      See Also:
    • window

      private Window window
      Window the JRootPane is in.
    • titlePane

      private RadianceTitlePane titlePane
      JComponent providing window decorations. This will be null if not providing window decorations.
    • isContentExtendingIntoTitlePane

      private boolean isContentExtendingIntoTitlePane
    • radianceMouseInputListener

      private MouseInputListener radianceMouseInputListener
      MouseInputListener that is added to the parent Window the JRootPane is contained in.
    • radianceTitleMouseInputListener

      private MouseInputListener radianceTitleMouseInputListener
      Mouse listener on the title pane (dragging).
    • layoutManager

      private LayoutManager layoutManager
      The LayoutManager that is set on the JRootPane.
    • savedOldLayout

      private LayoutManager savedOldLayout
      LayoutManager of the JRootPane before we replaced it.
    • root

      private JRootPane root
      JRootPane providing the look and feel for.
    • radianceWindowListener

      private WindowListener radianceWindowListener
      Window listener that stops all Radiance threads when the last frame is disposed.
    • radianceCurrentWindow

      private Window radianceCurrentWindow
      The current window.
    • radianceHierarchyListener

      private HierarchyListener radianceHierarchyListener
      Hierarchy listener to keep track of the associated top-level window.
    • radianceWindowComponentListener

      private ComponentListener radianceWindowComponentListener
      Component listener to keep track of the primary graphics configuration (for recomputing the maximized bounds) - fix for defect 213.
    • currentRootPaneGC

      private GraphicsConfiguration currentRootPaneGC
      The graphics configuration that contains the top-left corner of the window (fix for defect 213).
    • radiancePropertyChangeListener

      private PropertyChangeListener radiancePropertyChangeListener
    • lastCursor

      private Cursor lastCursor
      Cursor used to track the cursor set by the user. This is initially Cursor.DEFAULT_CURSOR.
    • rootPanesWithCustomSkin

      private static int rootPanesWithCustomSkin
      Optimization to speed up the RadianceCoreUtilities.getSkin(Component) implementation.
    • themingWidgets

      private Set<RadianceThemingWidget<JComponent>> themingWidgets
    • cursorMapping

      private static final int[] cursorMapping
      Maps from positions to cursor type. Refer to calculateCorner and calculatePosition for details of this.
  • Constructor Details

    • RadianceRootPaneUI

      protected RadianceRootPaneUI()
  • Method Details

    • createUI

      public static ComponentUI createUI(JComponent comp)
      Creates a UI for a JRootPane.
      Parameters:
      comp - the JRootPane the RootPaneUI will be created for
      Returns:
      the RootPaneUI implementation for the passed in JRootPane
    • installUI

      public void installUI(JComponent c)
      Invokes supers implementation of installUI to install the necessary state onto the passed in JRootPane to render the metal look and feel implementation of RootPaneUI. If the windowDecorationStyle property of the JRootPane is other than JRootPane.NONE, this will add a custom Component to render the widgets to JRootPane, as well as installing a custom Border and LayoutManager on the JRootPane.
      Overrides:
      installUI in class BasicRootPaneUI
      Parameters:
      c - the JRootPane to install state onto
    • uninstallUI

      public void uninstallUI(JComponent c)
      Invokes super implementation to uninstall any of its state. This will also reset the LayoutManager of the JRootPane. If a Component has been added to the JRootPane to render the window decoration style, this method will remove it. Similarly, this will revert the Border and LayoutManager of the JRootPane to what it was before installUI was invoked.
      Overrides:
      uninstallUI in class BasicRootPaneUI
      Parameters:
      c - the JRootPane to uninstall state from
    • installBorder

      public void installBorder(JRootPane root)
      Installs the appropriate Border onto the JRootPane.
      Parameters:
      root - Root pane.
    • uninstallBorder

      private void uninstallBorder(JRootPane root)
      Removes any border that may have been installed.
      Parameters:
      root - Root pane.
    • installDefaults

      protected void installDefaults(JRootPane c)
      Overrides:
      installDefaults in class BasicRootPaneUI
    • uninstallDefaults

      protected void uninstallDefaults(JRootPane root)
      Overrides:
      uninstallDefaults in class BasicRootPaneUI
    • update

      public void update(Graphics g, JComponent c)
      Overrides:
      update in class ComponentUI
    • installWindowListeners

      private void installWindowListeners(JRootPane root, Component parent)
      Installs the necessary Listeners on the parent Window, if there is one.

      This takes the parent so that cleanup can be done from removeNotify, at which point the parent hasn't been reset yet.

      Parameters:
      root - Root pane.
      parent - The parent of the JRootPane
    • uninstallWindowListeners

      private void uninstallWindowListeners()
      Uninstalls the necessary Listeners on the Window the Listeners were last installed on.
      Parameters:
      root - Root pane.
    • installLayout

      private void installLayout(JRootPane root)
      Installs the appropriate LayoutManager on the JRootPane to render the window decorations.
      Parameters:
      root - Root pane.
    • installListeners

      protected void installListeners(JRootPane root)
      Overrides:
      installListeners in class BasicRootPaneUI
    • uninstallListeners

      protected void uninstallListeners(JRootPane root)
      Overrides:
      uninstallListeners in class BasicRootPaneUI
    • installComponents

      protected void installComponents(JRootPane root)
      Overrides:
      installComponents in class BasicRootPaneUI
    • uninstallComponents

      protected void uninstallComponents(JRootPane root)
      Overrides:
      uninstallComponents in class BasicRootPaneUI
    • uninstallLayout

      private void uninstallLayout(JRootPane root)
      Uninstalls the previously installed LayoutManager.
      Parameters:
      root - Root pane.
    • installClientDecorations

      private void installClientDecorations(JRootPane root)
      Installs the necessary state onto the JRootPane to render client decorations. This is ONLY invoked if the JRootPane has a decoration style other than JRootPane.NONE.
      Parameters:
      root - Root pane.
    • uninstallClientDecorations

      private void uninstallClientDecorations(JRootPane root)
      Uninstalls any state that installClientDecorations has installed.

      NOTE: This may be called if you haven't installed client decorations yet (ie before installClientDecorations has been invoked).

      Parameters:
      root - Root pane.
    • createTitlePane

      protected RadianceTitlePane createTitlePane(JRootPane root)
      Returns the JComponent to render the window decoration style.
      Parameters:
      root - Root pane.
      Returns:
      The title pane component.
    • createWindowMouseInputListener

      private MouseInputListener createWindowMouseInputListener()
      Returns a MouseListener that will be added to the Window containing the JRootPane.
      Returns:
      Window mouse listener.
    • createLayoutManager

      protected LayoutManager createLayoutManager()
      Returns a LayoutManager that will be set on the JRootPane.
      Returns:
      Layout manager.
    • setTitlePane

      private void setTitlePane(JRootPane root, RadianceTitlePane titlePane)
      Sets the window title pane -- the JComponent used to provide a plaf a way to override the native operating system's window title pane with one whose look and feel are controlled by the plaf. The plaf creates and sets this value; the default is null, implying a native operating system window title pane.
      Parameters:
      root - Root pane
      titlePane - The JComponent to use for the window title pane.
    • getTitlePane

      public JComponent getTitlePane()
      Returns the JComponent rendering the title pane. If this returns null, it implies there is no need to render window decorations. This method is for internal use only.
      Returns:
      Title pane.
      See Also:
    • createTitlePaneControlButton

      public JButton createTitlePaneControlButton()
    • getTitlePaneControlInsets

      public Insets getTitlePaneControlInsets()
    • extendContentIntoTitlePane

      public void extendContentIntoTitlePane()
    • setPreferredTitlePaneHeight

      public void setPreferredTitlePaneHeight(int preferredTitlePaneHeight)
    • getRootPane

      protected JRootPane getRootPane()
      Returns the JRootPane we're providing the look and feel for.
      Returns:
      The associated root pane.
    • propertyChange

      public void propertyChange(PropertyChangeEvent e)
      Specified by:
      propertyChange in interface PropertyChangeListener
      Overrides:
      propertyChange in class BasicRootPaneUI
    • propagateModificationState

      private void propagateModificationState()
    • hasCustomSkinOnAtLeastOneRootPane

      public static boolean hasCustomSkinOnAtLeastOneRootPane()
    • isMouseEventInExtendedTitlePane

      private boolean isMouseEventInExtendedTitlePane(MouseEvent ev)