Hi,

I added the missing methods in BasicRootPaneUI.

2005-10-06  Roman Kennke  <[EMAIL PROTECTED]>

        * javax/swing/plaf/basic/BasicRootPaneUI.java
        (installUI): Call new hook methods.
        (installDefaults): New hook method.
        (installComponents): New hook method.
        (installListeners): New hook method.
        (installKeyboardActions): New hook method.
        (uninstallUI): New method.
        (uninstallDefaults): New hook method.
        (uninstallComponents): New hook method.
        (uninstallListeners): New hook method.
        (uninstallKeyboardActions): New hook method.

/Roman
Index: javax/swing/plaf/basic/BasicRootPaneUI.java
===================================================================
RCS file: /cvsroot/classpath/classpath/javax/swing/plaf/basic/BasicRootPaneUI.java,v
retrieving revision 1.8
diff -u -r1.8 BasicRootPaneUI.java
--- javax/swing/plaf/basic/BasicRootPaneUI.java	2 Jul 2005 20:32:50 -0000	1.8
+++ javax/swing/plaf/basic/BasicRootPaneUI.java	6 Oct 2005 13:49:56 -0000
@@ -42,6 +42,7 @@
 import java.beans.PropertyChangeListener;
 
 import javax.swing.JComponent;
+import javax.swing.JRootPane;
 import javax.swing.UIManager;
 import javax.swing.plaf.ComponentUI;
 import javax.swing.plaf.RootPaneUI;
@@ -56,11 +57,126 @@
 
   public void installUI(JComponent c)
   {
-    c.setBackground(UIManager.getColor("control"));
     super.installUI(c);
+    if (c instanceof JRootPane)
+      {
+        JRootPane rp = (JRootPane) c;
+        installDefaults(rp);
+        installComponents(rp);
+        installListeners(rp);
+        installKeyboardActions(rp);
+      }
+  }
+
+  /**
+   * Installs the look and feel defaults for JRootPane.
+   *
+   * @param rp the root pane to install the defaults to
+   */
+  protected void installDefaults(JRootPane rp)
+  {
+    // Is this ok?
+    rp.setBackground(UIManager.getColor("control"));
+  }
+
+  /**
+   * Installs additional look and feel components to the root pane.
+   *
+   * @param rp the root pane to install the components to
+   */
+  protected void installComponents(JRootPane rp)
+  {
+    // All components are initialized in the JRootPane constructor, and since
+    // the createXXXPane methods are protected, I see no reasonable way,
+    // and no need to initialize them here. This method is here anyway
+    // for compatibility and to provide the necessary hooks to subclasses.
+  }
+
+  /**
+   * Installs any look and feel specific listeners on the root pane.
+   *
+   * @param rp the root pane to install the listeners to
+   */
+  protected void installListeners(JRootPane rp)
+  {
+    rp.addPropertyChangeListener(this);
+  }
+
+  /**
+   * Installs look and feel keyboard actions on the root pane.
+   *
+   * @param rp the root pane to install the keyboard actions to
+   */
+  protected void installKeyboardActions(JRootPane rp)
+  {
+    // We currently do not install any keyboard actions here.
+    // This method is here anyway for compatibility and to provide
+    // the necessary hooks to subclasses.
   }
 
   public void propertyChange(PropertyChangeEvent event)
   {
+  }
+
+  /**
+   * Uninstalls this UI from the root pane. This calls
+   * [EMAIL PROTECTED] #uninstallDefaults}, [EMAIL PROTECTED] #uninstallComponents},
+   * [EMAIL PROTECTED] #uninstallListeners}, [EMAIL PROTECTED] #uninstallKeyboardActions}
+   * in this order.
+   *
+   * @param c the root pane to uninstall the UI from
+   */
+  public void uninstallUI(JComponent c)
+  {
+    super.uninstallUI(c);
+    if (c instanceof JRootPane)
+      {
+        JRootPane rp = (JRootPane) c;
+        uninstallDefaults(rp);
+        uninstallComponents(rp);
+        uninstallListeners(rp);
+        uninstallKeyboardActions(rp);
+      }
+  }
+
+  /**
+   * Uninstalls the look and feel defaults that have been installed in
+   * [EMAIL PROTECTED] #installDefaults}.
+   *
+   * @param rp the root pane to uninstall the defaults from
+   */
+  protected void uninstallDefaults(JRootPane rp)
+  {
+    // We do nothing here.
+  }
+
+  /**
+   * Uninstalls look and feel components from the root pane.
+   *
+   * @param rp the root pane to uninstall the components from
+   */
+  protected void uninstallComponents(JRootPane rp)
+  {
+    // We do nothing here.
+  }
+
+  /**
+   * Uninstalls any look and feel specific listeners from the root pane.
+   *
+   * @param rp the root pane to uninstall the listeners from
+   */
+  protected void uninstallListeners(JRootPane rp)
+  {
+    rp.removePropertyChangeListener(this);
+  }
+
+  /**
+   * Uninstalls look and feel keyboard actions from the root pane.
+   *
+   * @param rp the root pane to uninstall the keyboard actions from
+   */
+  protected void uninstallKeyboardActions(JRootPane rp)
+  {
+    // We do nothing here.
   }
 }
_______________________________________________
Classpath-patches mailing list
Classpath-patches@gnu.org
http://lists.gnu.org/mailman/listinfo/classpath-patches

Reply via email to