From 85e8eaad9d2be96564aa32b7fd5182de0fbb4a6e Mon Sep 17 00:00:00 2001
From: jvergara <jvergara@localhost>
Date: Thu, 30 Jul 2009 10:54:56 +0000
Subject: [PATCH] Fix for issue 4157 (Control Panel does not display Mac OS menu bar in Browse Entries dialog)

---
 opends/src/guitools/org/opends/guitools/controlpanel/ControlPanel.java                    |    2 
 opends/src/guitools/org/opends/guitools/controlpanel/ui/AbstractBrowseEntriesPanel.java   |   12 +
 opends/src/guitools/org/opends/guitools/controlpanel/ui/BrowseGeneralMonitoringPanel.java |   12 +
 opends/src/guitools/org/opends/guitools/uninstaller/ui/LoginDialog.java                   |    5 
 opends/src/guitools/org/opends/guitools/controlpanel/ui/BrowseIndexPanel.java             |   12 +
 opends/src/guitools/org/opends/guitools/controlpanel/ui/ManageTasksPanel.java             |    3 
 opends/src/guitools/org/opends/guitools/controlpanel/ui/MainActionsPane.java              |   32 +-
 opends/src/guitools/org/opends/guitools/controlpanel/ui/StatusGenericPanel.java           |   21 +
 opends/src/guitools/org/opends/guitools/controlpanel/ui/BrowseEntriesPanel.java           |    9 
 opends/src/guitools/org/opends/guitools/controlpanel/ui/TaskToSchedulePanel.java          |    3 
 opends/src/guitools/org/opends/guitools/controlpanel/ui/GenericFrame.java                 |  386 ++++++++++++++++++++++++++++++++++++++
 opends/src/guitools/org/opends/guitools/controlpanel/ui/LDAPEntrySelectionPanel.java      |   12 
 opends/src/guitools/org/opends/guitools/controlpanel/ui/BrowseSchemaPanel.java            |   12 +
 opends/src/guitools/org/opends/guitools/controlpanel/ui/GenericDialog.java                |   11 
 opends/src/guitools/org/opends/guitools/controlpanel/util/Utilities.java                  |   11 +
 15 files changed, 488 insertions(+), 55 deletions(-)

diff --git a/opends/src/guitools/org/opends/guitools/controlpanel/ControlPanel.java b/opends/src/guitools/org/opends/guitools/controlpanel/ControlPanel.java
index 5651cf3..7b01cec 100644
--- a/opends/src/guitools/org/opends/guitools/controlpanel/ControlPanel.java
+++ b/opends/src/guitools/org/opends/guitools/controlpanel/ControlPanel.java
@@ -122,7 +122,7 @@
         // Create and set up the content pane.
         controlCenterPane = new ControlCenterMainPane(info);
         //  Create and set up the window.
-        dlg = new JFrame();
+        dlg = Utilities.createFrame();
         dlg.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
         final MainMenuBar menuBar = new MainMenuBar(info);
         dlg.addWindowListener(new WindowAdapter() {
diff --git a/opends/src/guitools/org/opends/guitools/controlpanel/ui/AbstractBrowseEntriesPanel.java b/opends/src/guitools/org/opends/guitools/controlpanel/ui/AbstractBrowseEntriesPanel.java
index 2c06dd8..c4f269f 100644
--- a/opends/src/guitools/org/opends/guitools/controlpanel/ui/AbstractBrowseEntriesPanel.java
+++ b/opends/src/guitools/org/opends/guitools/controlpanel/ui/AbstractBrowseEntriesPanel.java
@@ -35,6 +35,7 @@
 import java.awt.GridBagConstraints;
 import java.awt.GridBagLayout;
 import java.awt.Insets;
+import java.awt.Window;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
 import java.awt.event.ItemEvent;
@@ -269,8 +270,15 @@
   public void toBeDisplayed(boolean visible)
   {
     super.toBeDisplayed(visible);
-    ((GenericDialog)Utilities.getParentDialog(this)).getRootPane().
-    setDefaultButton(null);
+    Window w = Utilities.getParentDialog(this);
+    if (w instanceof GenericDialog)
+    {
+      ((GenericDialog)w).getRootPane().setDefaultButton(null);
+    }
+    else if (w instanceof GenericFrame)
+    {
+      ((GenericFrame)w).getRootPane().setDefaultButton(null);
+    }
   }
 
   /**
diff --git a/opends/src/guitools/org/opends/guitools/controlpanel/ui/BrowseEntriesPanel.java b/opends/src/guitools/org/opends/guitools/controlpanel/ui/BrowseEntriesPanel.java
index 10aafc4..b056345 100644
--- a/opends/src/guitools/org/opends/guitools/controlpanel/ui/BrowseEntriesPanel.java
+++ b/opends/src/guitools/org/opends/guitools/controlpanel/ui/BrowseEntriesPanel.java
@@ -22,7 +22,7 @@
  * CDDL HEADER END
  *
  *
- *      Copyright 2008 Sun Microsystems, Inc.
+ *      Copyright 2008-2009 Sun Microsystems, Inc.
  */
 
 package org.opends.guitools.controlpanel.ui;
@@ -1017,12 +1017,11 @@
     BrowseEntriesPanel panel = new BrowseEntriesPanel();
     panel.setDisposeOnClose(true);
     panel.setInfo(getInfo());
-    GenericDialog dlg = new GenericDialog(Utilities.getFrame(this),
-        panel);
+    GenericFrame frame = new GenericFrame(panel);
 
-    Utilities.centerGoldenMean(dlg, Utilities.getFrame(this));
+    Utilities.centerGoldenMean(frame, Utilities.getFrame(this));
 
-    dlg.setVisible(true);
+    frame.setVisible(true);
   }
 
   /**
diff --git a/opends/src/guitools/org/opends/guitools/controlpanel/ui/BrowseGeneralMonitoringPanel.java b/opends/src/guitools/org/opends/guitools/controlpanel/ui/BrowseGeneralMonitoringPanel.java
index 581c8f7..3404e29 100644
--- a/opends/src/guitools/org/opends/guitools/controlpanel/ui/BrowseGeneralMonitoringPanel.java
+++ b/opends/src/guitools/org/opends/guitools/controlpanel/ui/BrowseGeneralMonitoringPanel.java
@@ -33,6 +33,7 @@
 import java.awt.GridBagConstraints;
 import java.awt.GridBagLayout;
 import java.awt.Insets;
+import java.awt.Window;
 import java.util.HashMap;
 
 import javax.swing.ImageIcon;
@@ -167,8 +168,15 @@
   @Override
   public void toBeDisplayed(boolean visible)
   {
-    ((GenericDialog)Utilities.getParentDialog(this)).getRootPane().
-    setDefaultButton(null);
+    Window w = Utilities.getParentDialog(this);
+    if (w instanceof GenericDialog)
+    {
+      ((GenericDialog)w).getRootPane().setDefaultButton(null);
+    }
+    else if (w instanceof GenericFrame)
+    {
+      ((GenericFrame)w).getRootPane().setDefaultButton(null);
+    }
   }
 
   /**
diff --git a/opends/src/guitools/org/opends/guitools/controlpanel/ui/BrowseIndexPanel.java b/opends/src/guitools/org/opends/guitools/controlpanel/ui/BrowseIndexPanel.java
index 3bc4754..a9baf5c 100644
--- a/opends/src/guitools/org/opends/guitools/controlpanel/ui/BrowseIndexPanel.java
+++ b/opends/src/guitools/org/opends/guitools/controlpanel/ui/BrowseIndexPanel.java
@@ -34,6 +34,7 @@
 import java.awt.GridBagConstraints;
 import java.awt.Insets;
 import java.awt.Point;
+import java.awt.Window;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
 import java.awt.event.ItemEvent;
@@ -159,8 +160,15 @@
   public void toBeDisplayed(boolean visible)
   {
     super.toBeDisplayed(visible);
-    ((GenericDialog)Utilities.getParentDialog(this)).
-      getRootPane().setDefaultButton(null);
+    Window w = Utilities.getParentDialog(this);
+    if (w instanceof GenericDialog)
+    {
+      ((GenericDialog)w).getRootPane().setDefaultButton(null);
+    }
+    else if (w instanceof GenericFrame)
+    {
+      ((GenericFrame)w).getRootPane().setDefaultButton(null);
+    }
   }
 
   /**
diff --git a/opends/src/guitools/org/opends/guitools/controlpanel/ui/BrowseSchemaPanel.java b/opends/src/guitools/org/opends/guitools/controlpanel/ui/BrowseSchemaPanel.java
index 77afb19..7acec30 100644
--- a/opends/src/guitools/org/opends/guitools/controlpanel/ui/BrowseSchemaPanel.java
+++ b/opends/src/guitools/org/opends/guitools/controlpanel/ui/BrowseSchemaPanel.java
@@ -35,6 +35,7 @@
 import java.awt.GridBagLayout;
 import java.awt.Insets;
 import java.awt.Point;
+import java.awt.Window;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
 import java.awt.event.KeyAdapter;
@@ -229,8 +230,15 @@
   @Override
   public void toBeDisplayed(boolean visible)
   {
-    ((GenericDialog)Utilities.getParentDialog(this)).getRootPane().
-      setDefaultButton(null);
+    Window w = Utilities.getParentDialog(this);
+    if (w instanceof GenericDialog)
+    {
+      ((GenericDialog)w).getRootPane().setDefaultButton(null);
+    }
+    else if (w instanceof GenericFrame)
+    {
+      ((GenericFrame)w).getRootPane().setDefaultButton(null);
+    }
   }
 
   /**
diff --git a/opends/src/guitools/org/opends/guitools/controlpanel/ui/GenericDialog.java b/opends/src/guitools/org/opends/guitools/controlpanel/ui/GenericDialog.java
index f67dc20..db0b982 100644
--- a/opends/src/guitools/org/opends/guitools/controlpanel/ui/GenericDialog.java
+++ b/opends/src/guitools/org/opends/guitools/controlpanel/ui/GenericDialog.java
@@ -22,7 +22,7 @@
  * CDDL HEADER END
  *
  *
- *      Copyright 2008 Sun Microsystems, Inc.
+ *      Copyright 2008-2009 Sun Microsystems, Inc.
  */
 
 package org.opends.guitools.controlpanel.ui;
@@ -130,15 +130,10 @@
     JMenuBar menu = panel.getMenuBar();
     if (menu != null)
     {
-      setJMenuBar(menu);
+      parentFrame.setJMenuBar(menu);
     }
+    setResizable(true);
     JScrollPane scroll = Utilities.createScrollPane(panel);
-    /*
-    CardLayout cardLayout = new CardLayout();
-    contentPanel = new JPanel(cardLayout);
-    contentPanel.setOpaque(false);
-    setContentPane(contentPanel);
-  */
     JPanel inputPanel = new JPanel(new GridBagLayout());
     setContentPane(inputPanel);
     GridBagConstraints gbc = new GridBagConstraints();
diff --git a/opends/src/guitools/org/opends/guitools/controlpanel/ui/GenericFrame.java b/opends/src/guitools/org/opends/guitools/controlpanel/ui/GenericFrame.java
new file mode 100644
index 0000000..e939335
--- /dev/null
+++ b/opends/src/guitools/org/opends/guitools/controlpanel/ui/GenericFrame.java
@@ -0,0 +1,386 @@
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License, Version 1.0 only
+ * (the "License").  You may not use this file except in compliance
+ * with the License.
+ *
+ * You can obtain a copy of the license at
+ * trunk/opends/resource/legal-notices/OpenDS.LICENSE
+ * or https://OpenDS.dev.java.net/OpenDS.LICENSE.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ *
+ * When distributing Covered Code, include this CDDL HEADER in each
+ * file and include the License file at
+ * trunk/opends/resource/legal-notices/OpenDS.LICENSE.  If applicable,
+ * add the following below this CDDL HEADER, with the fields enclosed
+ * by brackets "[]" replaced with your own identifying information:
+ *      Portions Copyright [yyyy] [name of copyright owner]
+ *
+ * CDDL HEADER END
+ *
+ *
+ *      Copyright 2009 Sun Microsystems, Inc.
+ */
+
+package org.opends.guitools.controlpanel.ui;
+
+import static org.opends.messages.AdminToolMessages.*;
+
+import java.awt.Color;
+import java.awt.Component;
+import java.awt.Container;
+import java.awt.GridBagConstraints;
+import java.awt.GridBagLayout;
+import java.awt.Insets;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.FocusAdapter;
+import java.awt.event.FocusEvent;
+import java.awt.event.FocusListener;
+import java.awt.event.KeyEvent;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+
+import javax.swing.AbstractButton;
+import javax.swing.BorderFactory;
+import javax.swing.Box;
+import javax.swing.JButton;
+import javax.swing.JComboBox;
+import javax.swing.JComponent;
+import javax.swing.JFrame;
+import javax.swing.JList;
+import javax.swing.JMenuBar;
+import javax.swing.JPanel;
+import javax.swing.JScrollPane;
+import javax.swing.JTable;
+import javax.swing.JViewport;
+import javax.swing.KeyStroke;
+import javax.swing.SwingUtilities;
+import javax.swing.border.EmptyBorder;
+import javax.swing.text.JTextComponent;
+
+import org.opends.guitools.controlpanel.ui.GenericDialog.ButtonType;
+import org.opends.guitools.controlpanel.util.Utilities;
+
+/**
+ * The generic frame of the Control Panel.  It contains a StatusGenericPanel.
+ *
+ */
+public class GenericFrame extends JFrame
+{
+  private static final long serialVersionUID = -2643144936460484112L;
+  private final static Color buttonPanelBackground =
+    ColorAndFontConstants.greyBackground;
+  private JButton okButton;
+
+  /**
+   * The close button.
+   */
+  protected JButton closeButton;
+  private JButton cancelButton;
+  //private JPanel contentPanel;
+  /**
+   * The panel contained in the frame.
+   */
+  protected StatusGenericPanel panel;
+  //private ProgressPanel progressPanel;
+  //private boolean displayInputInNextVisible;
+  private Component lastComponentWithFocus;
+
+  /**
+   * Constructor of the frame.
+   * @param panel the panel contained in this frame.
+   */
+  public GenericFrame(StatusGenericPanel panel)
+  {
+    super();
+    this.panel = panel;
+    if (panel.requiresBorder())
+    {
+      setDefaultBorder(panel);
+    }
+    JMenuBar menu = panel.getMenuBar();
+    if (menu != null)
+    {
+      setJMenuBar(menu);
+    }
+    setResizable(true);
+    JScrollPane scroll = Utilities.createScrollPane(panel);
+    JPanel inputPanel = new JPanel(new GridBagLayout());
+    setContentPane(inputPanel);
+    GridBagConstraints gbc = new GridBagConstraints();
+    gbc.weightx = 1.0;
+    gbc.weighty = 1.0;
+    gbc.gridx = 0;
+    gbc.gridy = 0;
+    gbc.fill = GridBagConstraints.BOTH;
+    if (panel.requiresScroll())
+    {
+      inputPanel.add(scroll, gbc);
+    }
+    else
+    {
+      inputPanel.add(panel, gbc);
+    }
+    if (panel.getButtonType() != ButtonType.NO_BUTTON)
+    {
+      gbc.gridy ++;
+      gbc.weighty = 0.0;
+      inputPanel.add(createButtonsPanel(panel), gbc);
+    }
+
+    KeyStroke stroke = KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0);
+    ActionListener actionListener = new ActionListener()
+    {
+      /**
+       * {@inheritDoc}
+       */
+      public void actionPerformed(ActionEvent ev)
+      {
+        setVisible(false);
+      }
+    };
+    getRootPane().registerKeyboardAction(actionListener, stroke,
+        JComponent.WHEN_IN_FOCUSED_WINDOW);
+
+    FocusListener focusListener = new FocusAdapter()
+    {
+      /**
+       * {@inheritDoc}
+       */
+      public void focusGained(FocusEvent ev)
+      {
+        lastComponentWithFocus = ev.getComponent();
+      }
+    };
+    addFocusListener(focusListener, panel);
+
+    addWindowListener(new WindowAdapter() {
+      /**
+       * {@inheritDoc}
+       */
+      public void windowClosing(WindowEvent e) {
+        GenericFrame.this.panel.closeClicked();
+      }
+    });
+
+    pack();
+    if (!SwingUtilities.isEventDispatchThread())
+    {
+      Thread.dumpStack();
+    }
+  }
+
+  /**
+   * Method used to add a focus listeners to all the components in the panel.
+   * This is done to recover the focus on an item when the frame is closed
+   * and then opened again.
+   * @param focusListener the focus listener.
+   * @param container the container where the components are layed out.
+   */
+  private void addFocusListener(FocusListener focusListener,
+      Container container)
+  {
+    for (int i=0; i < container.getComponentCount(); i++)
+    {
+      Component comp = container.getComponent(i);
+      if ((comp instanceof AbstractButton) ||
+          (comp instanceof JTextComponent) ||
+          (comp instanceof JList) ||
+          (comp instanceof JComboBox) ||
+          (comp instanceof JTable))
+      {
+        comp.addFocusListener(focusListener);
+      }
+      else if ((comp instanceof JPanel) || (comp instanceof JScrollPane)
+          || (comp instanceof JViewport))
+      {
+        addFocusListener(focusListener, (Container)comp);
+      }
+    }
+  }
+
+  /**
+   * {@inheritDoc}
+   */
+  public void setVisible(boolean visible)
+  {
+    if (lastComponentWithFocus == null)
+    {
+      lastComponentWithFocus = panel.getPreferredFocusComponent();
+    }
+    if (visible && (lastComponentWithFocus != null))
+    {
+      lastComponentWithFocus.requestFocusInWindow();
+    }
+    updateDefaultButton(panel);
+    panel.toBeDisplayed(visible);
+    updateTitle();
+    super.setVisible(visible);
+  }
+
+  /**
+   * Sets the enable state of the OK button.
+   * @param enable whether the OK button must be enabled or not.
+   */
+  public void setEnabledOK(boolean enable)
+  {
+    okButton.setEnabled(enable);
+  }
+
+  /**
+   * Sets the enable state of the Cancel button.
+   * @param enable whether the Cancel button must be enabled or not.
+   */
+  public void setEnabledCancel(boolean enable)
+  {
+    cancelButton.setEnabled(enable);
+  }
+
+  /**
+   * Sets the enable state of the Close button.
+   * @param enable whether the Close button must be enabled or not.
+   */
+  public void setEnabledClose(boolean enable)
+  {
+    closeButton.setEnabled(enable);
+  }
+
+  /**
+   * Updates the title of the frame using the title of the panel.
+   *
+   */
+  public void updateTitle()
+  {
+    if (panel.getTitle() != null)
+    {
+      setTitle(INFO_CTRL_PANEL_GENERIC_TITLE.get(
+              panel.getTitle().toString()).toString());
+    }
+  }
+
+  private void setDefaultBorder(JComponent comp)
+  {
+    Utilities.setBorder(comp, new EmptyBorder(20, 20, 20, 20));
+  }
+
+
+  private JPanel createButtonsPanel(final StatusGenericPanel panel)
+  {
+    JPanel buttonsPanel = new JPanel(new GridBagLayout());
+    GridBagConstraints gbc = new GridBagConstraints();
+    ButtonType buttonType = panel.getButtonType();
+    gbc.gridx = 0;
+    gbc.weightx = 1.0;
+    gbc.fill = GridBagConstraints.HORIZONTAL;
+    buttonsPanel.add(Box.createHorizontalGlue(), gbc);
+    buttonsPanel.setOpaque(true);
+    buttonsPanel.setBackground(buttonPanelBackground);
+    gbc.insets = new Insets(10, 0, 10, 0);
+    gbc.insets.left = 5;
+
+    if (buttonType == ButtonType.OK_CANCEL)
+    {
+      gbc.gridx ++;
+      gbc.weightx = 0.0;
+      okButton = Utilities.createButton(
+          INFO_CTRL_PANEL_OK_BUTTON_LABEL.get());
+      okButton.setOpaque(false);
+      buttonsPanel.add(okButton, gbc);
+      okButton.addActionListener(new ActionListener()
+      {
+        public void actionPerformed(ActionEvent ev)
+        {
+          panel.okClicked();
+        }
+      });
+      okButton.setEnabled(panel.isEnableOK());
+
+      gbc.gridx ++;
+      cancelButton = Utilities.createButton(
+          INFO_CTRL_PANEL_CANCEL_BUTTON_LABEL.get());
+      cancelButton.setOpaque(false);
+      cancelButton.addActionListener(new ActionListener()
+      {
+        public void actionPerformed(ActionEvent ev)
+        {
+          panel.cancelClicked();
+        }
+      });
+      cancelButton.setEnabled(panel.isEnableCancel());
+      gbc.insets.right = 10;
+      buttonsPanel.add(cancelButton, gbc);
+    }
+
+    if (buttonType == ButtonType.OK)
+    {
+      gbc.gridx ++;
+      gbc.weightx = 0.0;
+      okButton = Utilities.createButton(
+          INFO_CTRL_PANEL_OK_BUTTON_LABEL.get());
+      okButton.setOpaque(false);
+      gbc.insets.right = 10;
+      buttonsPanel.add(okButton, gbc);
+      okButton.addActionListener(new ActionListener()
+      {
+        public void actionPerformed(ActionEvent ev)
+        {
+          panel.okClicked();
+        }
+      });
+      okButton.setEnabled(panel.isEnableOK());
+    }
+
+    if (buttonType == ButtonType.CLOSE)
+    {
+      gbc.gridx ++;
+      gbc.weightx = 0.0;
+      closeButton = Utilities.createButton(
+          INFO_CTRL_PANEL_CLOSE_BUTTON_LABEL.get());
+      closeButton.setOpaque(false);
+      gbc.insets.right = 10;
+      buttonsPanel.add(closeButton, gbc);
+      closeButton.addActionListener(new ActionListener()
+      {
+        public void actionPerformed(ActionEvent ev)
+        {
+          panel.closeClicked();
+        }
+      });
+      closeButton.setEnabled(panel.isEnableClose());
+    }
+
+
+
+    buttonsPanel.setBorder(BorderFactory.createMatteBorder(1, 0, 0, 0,
+        ColorAndFontConstants.defaultBorderColor));
+    return buttonsPanel;
+  }
+
+  /**
+   * Updates the default button of the frame, depending on the type of
+   * generic panel that it contains.
+   * @param panel the generic panel contained in this frame.
+   */
+  private void updateDefaultButton(StatusGenericPanel panel)
+  {
+    ButtonType buttonType = panel.getButtonType();
+
+    if (buttonType == ButtonType.OK_CANCEL)
+    {
+      getRootPane().setDefaultButton(okButton);
+    }
+    else if (buttonType == ButtonType.OK)
+    {
+      getRootPane().setDefaultButton(okButton);
+    }
+    else if (buttonType == ButtonType.CLOSE)
+    {
+      getRootPane().setDefaultButton(closeButton);
+    }
+  }
+}
+
diff --git a/opends/src/guitools/org/opends/guitools/controlpanel/ui/LDAPEntrySelectionPanel.java b/opends/src/guitools/org/opends/guitools/controlpanel/ui/LDAPEntrySelectionPanel.java
index 27e48b4..56d8c07 100644
--- a/opends/src/guitools/org/opends/guitools/controlpanel/ui/LDAPEntrySelectionPanel.java
+++ b/opends/src/guitools/org/opends/guitools/controlpanel/ui/LDAPEntrySelectionPanel.java
@@ -22,13 +22,14 @@
  * CDDL HEADER END
  *
  *
- *      Copyright 2008 Sun Microsystems, Inc.
+ *      Copyright 2008-2009 Sun Microsystems, Inc.
  */
 
 package org.opends.guitools.controlpanel.ui;
 
 import java.awt.Component;
 import java.awt.Dimension;
+import java.awt.Window;
 import java.awt.event.MouseAdapter;
 import java.awt.event.MouseEvent;
 import java.awt.event.MouseListener;
@@ -271,9 +272,14 @@
   public void setTitle(Message title)
   {
     this.title = title;
-    if (Utilities.getParentDialog(this) instanceof GenericDialog)
+    Window w = Utilities.getParentDialog(this);
+    if (w instanceof GenericDialog)
     {
-      ((GenericDialog)Utilities.getParentDialog(this)).updateTitle();
+      ((GenericDialog)w).updateTitle();
+    }
+    else if (w instanceof GenericFrame)
+    {
+      ((GenericFrame)w).updateTitle();
     }
   }
 }
diff --git a/opends/src/guitools/org/opends/guitools/controlpanel/ui/MainActionsPane.java b/opends/src/guitools/org/opends/guitools/controlpanel/ui/MainActionsPane.java
index 3f9f2a3..696d0e1 100644
--- a/opends/src/guitools/org/opends/guitools/controlpanel/ui/MainActionsPane.java
+++ b/opends/src/guitools/org/opends/guitools/controlpanel/ui/MainActionsPane.java
@@ -80,8 +80,8 @@
     ArrayList<Category> categories = createCategories();
     ButtonGroup group = new ButtonGroup();
     int maxWidth = 0;
-    final Map<Action, GenericDialog> dialogs =
-      new HashMap<Action, GenericDialog>();
+    final Map<Action, GenericFrame> frames =
+      new HashMap<Action, GenericFrame>();
     ArrayList<ActionButton> actions = new ArrayList<ActionButton>();
     for(Category category: categories)
     {
@@ -104,8 +104,8 @@
           {
             // Constructs the panels using reflection.
             Action action = b.getActionObject();
-            GenericDialog dlg = dialogs.get(action);
-            if (dlg == null)
+            GenericFrame frame = frames.get(action);
+            if (frame == null)
             {
               Class<? extends StatusGenericPanel> panelClass =
                 action.getAssociatedPanelClass();
@@ -118,10 +118,10 @@
                 {
                   panel.setInfo(getInfo());
                 }
-                dlg = createDialog(panel);
+                frame = createFrame(panel);
 
-                dialogs.put(action, dlg);
-                Utilities.centerGoldenMean(dlg,
+                frames.put(action, frame);
+                Utilities.centerGoldenMean(frame,
                     Utilities.getFrame(MainActionsPane.this));
               }
               catch (Throwable t)
@@ -130,13 +130,13 @@
                 t.printStackTrace();
               }
             }
-            if (!dlg.isVisible())
+            if (!frame.isVisible())
             {
-              dlg.setVisible(true);
+              frame.setVisible(true);
             }
             else
             {
-              dlg.toFront();
+              frame.toFront();
             }
           }
         });
@@ -173,15 +173,13 @@
   }
 
   /**
-   * Creates the dialog to be displayed using the provided panel.
-   * @param panel the panel that will be contained in the dialog.
-   * @return the dialog to be displayed using the provided panel.
+   * Creates the frame to be displayed using the provided panel.
+   * @param panel the panel that will be contained in the frame.
+   * @return the frame to be displayed using the provided panel.
    */
-  protected GenericDialog createDialog(StatusGenericPanel panel)
+  protected GenericFrame createFrame(StatusGenericPanel panel)
   {
-    return new GenericDialog(
-        Utilities.getFrame(MainActionsPane.this),
-        panel);
+    return new GenericFrame(panel);
   }
 
   /**
diff --git a/opends/src/guitools/org/opends/guitools/controlpanel/ui/ManageTasksPanel.java b/opends/src/guitools/org/opends/guitools/controlpanel/ui/ManageTasksPanel.java
index 0d0fabf..b1e223e 100644
--- a/opends/src/guitools/org/opends/guitools/controlpanel/ui/ManageTasksPanel.java
+++ b/opends/src/guitools/org/opends/guitools/controlpanel/ui/ManageTasksPanel.java
@@ -50,7 +50,6 @@
 
 import javax.swing.Box;
 import javax.swing.JButton;
-import javax.swing.JFrame;
 import javax.swing.JLabel;
 import javax.swing.JMenu;
 import javax.swing.JMenuBar;
@@ -789,7 +788,7 @@
     SwingUtilities.invokeLater(new Runnable(){
       public void run()
       {
-        GenericDialog dlg = new GenericDialog(new JFrame(), p);
+        GenericDialog dlg = new GenericDialog(Utilities.createFrame(), p);
         dlg.setModal(true);
         dlg.pack();
         dlg.setVisible(true);
diff --git a/opends/src/guitools/org/opends/guitools/controlpanel/ui/StatusGenericPanel.java b/opends/src/guitools/org/opends/guitools/controlpanel/ui/StatusGenericPanel.java
index 0104171..7267f12 100644
--- a/opends/src/guitools/org/opends/guitools/controlpanel/ui/StatusGenericPanel.java
+++ b/opends/src/guitools/org/opends/guitools/controlpanel/ui/StatusGenericPanel.java
@@ -62,7 +62,6 @@
 import javax.swing.DefaultComboBoxModel;
 import javax.swing.JComboBox;
 import javax.swing.JComponent;
-import javax.swing.JDialog;
 import javax.swing.JEditorPane;
 import javax.swing.JLabel;
 import javax.swing.JMenuBar;
@@ -412,10 +411,14 @@
    */
   protected void setEnabledOK(boolean enable)
   {
-    Window parent = Utilities.getParentDialog(this);
-    if ((parent != null) && (parent instanceof GenericDialog))
+    Window w = Utilities.getParentDialog(this);
+    if (w instanceof GenericDialog)
     {
-      ((GenericDialog)parent).setEnabledOK(enable);
+      ((GenericDialog)w).setEnabledOK(enable);
+    }
+    else if (w instanceof GenericFrame)
+    {
+      ((GenericFrame)w).setEnabledOK(enable);
     }
     enableOK = enable;
   }
@@ -426,10 +429,14 @@
    */
   protected void setEnabledCancel(boolean enable)
   {
-    JDialog parent = (JDialog)Utilities.getParentDialog(this);
-    if ((parent != null) && (parent instanceof GenericDialog))
+    Window w = Utilities.getParentDialog(this);
+    if (w instanceof GenericDialog)
     {
-      ((GenericDialog)parent).setEnabledCancel(enable);
+      ((GenericDialog)w).setEnabledCancel(enable);
+    }
+    else if (w instanceof GenericFrame)
+    {
+      ((GenericFrame)w).setEnabledCancel(enable);
     }
     enableCancel = enable;
   }
diff --git a/opends/src/guitools/org/opends/guitools/controlpanel/ui/TaskToSchedulePanel.java b/opends/src/guitools/org/opends/guitools/controlpanel/ui/TaskToSchedulePanel.java
index d4cccab..2e8c801 100644
--- a/opends/src/guitools/org/opends/guitools/controlpanel/ui/TaskToSchedulePanel.java
+++ b/opends/src/guitools/org/opends/guitools/controlpanel/ui/TaskToSchedulePanel.java
@@ -46,7 +46,6 @@
 import javax.swing.JCheckBox;
 import javax.swing.JComboBox;
 import javax.swing.JEditorPane;
-import javax.swing.JFrame;
 import javax.swing.JLabel;
 import javax.swing.JPanel;
 import javax.swing.JTextField;
@@ -1170,7 +1169,7 @@
     while (true)
     {
       TaskToSchedulePanel p = new TaskToSchedulePanel("TEST TASK");
-      GenericDialog dlg = new GenericDialog(new JFrame(), p);
+      GenericDialog dlg = new GenericDialog(Utilities.createFrame(), p);
       dlg.setModal(true);
       dlg.setVisible(true);
     }
diff --git a/opends/src/guitools/org/opends/guitools/controlpanel/util/Utilities.java b/opends/src/guitools/org/opends/guitools/controlpanel/util/Utilities.java
index 4618842..745e713 100644
--- a/opends/src/guitools/org/opends/guitools/controlpanel/util/Utilities.java
+++ b/opends/src/guitools/org/opends/guitools/controlpanel/util/Utilities.java
@@ -168,6 +168,17 @@
   }
 
   /**
+   * Creates a frame.
+   * @return a frame.
+   */
+  public static JFrame createFrame()
+  {
+    JFrame frame = new JFrame();
+    frame.setResizable(true);
+    return frame;
+  }
+
+  /**
    * Returns <CODE>true</CODE> if an attribute value must be obfuscated because
    * it contains sensitive information (like passwords) and <CODE>false</CODE>
    * otherwise.
diff --git a/opends/src/guitools/org/opends/guitools/uninstaller/ui/LoginDialog.java b/opends/src/guitools/org/opends/guitools/uninstaller/ui/LoginDialog.java
index d975696..cd7be62 100644
--- a/opends/src/guitools/org/opends/guitools/uninstaller/ui/LoginDialog.java
+++ b/opends/src/guitools/org/opends/guitools/uninstaller/ui/LoginDialog.java
@@ -22,7 +22,7 @@
  * CDDL HEADER END
  *
  *
- *      Copyright 2008 Sun Microsystems, Inc.
+ *      Copyright 2008-2009 Sun Microsystems, Inc.
  */
 
 package org.opends.guitools.uninstaller.ui;
@@ -717,7 +717,8 @@
   {
     try
     {
-      LoginDialog dlg = new LoginDialog(new JFrame(),
+      LoginDialog dlg = new LoginDialog(
+          org.opends.guitools.controlpanel.util.Utilities.createFrame(),
           new ApplicationTrustManager(null));
       dlg.pack();
       dlg.setVisible(true);

--
Gitblit v1.10.0