From c96108b4530dde68a2613fd3f190c5b6cf9f37aa Mon Sep 17 00:00:00 2001
From: jvergara <jvergara@localhost>
Date: Mon, 04 Jan 2010 11:09:59 +0000
Subject: [PATCH] Fix for issue 4415 (Control panel connection chooser doesn't show in task bar) Use a JFrame instead of a JDialog for the initial login dialog.
---
opends/src/guitools/org/opends/guitools/controlpanel/ControlPanel.java | 70 +++++++++++++++++++++++++++++++----
1 files changed, 62 insertions(+), 8 deletions(-)
diff --git a/opends/src/guitools/org/opends/guitools/controlpanel/ControlPanel.java b/opends/src/guitools/org/opends/guitools/controlpanel/ControlPanel.java
index f80f386..778b8e8 100644
--- a/opends/src/guitools/org/opends/guitools/controlpanel/ControlPanel.java
+++ b/opends/src/guitools/org/opends/guitools/controlpanel/ControlPanel.java
@@ -22,7 +22,7 @@
* CDDL HEADER END
*
*
- * Copyright 2008-2009 Sun Microsystems, Inc.
+ * Copyright 2008-2010 Sun Microsystems, Inc.
*/
package org.opends.guitools.controlpanel;
@@ -32,17 +32,21 @@
import java.awt.Component;
import java.awt.Container;
+import java.awt.event.ComponentAdapter;
+import java.awt.event.ComponentEvent;
+import java.awt.event.ComponentListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JFrame;
+import javax.swing.RootPaneContainer;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.WindowConstants;
import org.opends.guitools.controlpanel.datamodel.ControlPanelInfo;
import org.opends.guitools.controlpanel.ui.ControlCenterMainPane;
-import org.opends.guitools.controlpanel.ui.GenericDialog;
+import org.opends.guitools.controlpanel.ui.GenericFrame;
import org.opends.guitools.controlpanel.ui.LocalOrRemotePanel;
import org.opends.guitools.controlpanel.ui.MainMenuBar;
import org.opends.guitools.controlpanel.util.BlindApplicationTrustManager;
@@ -129,8 +133,10 @@
*/
public void createAndDisplayGUI()
{
- GenericDialog localOrRemote =
- ControlCenterMainPane.getLocalOrRemoteDialog(info);
+ LocalOrRemotePanel localOrRemotePanel = new LocalOrRemotePanel();
+ localOrRemotePanel.setInfo(info);
+ final GenericFrame localOrRemote = new GenericFrame(localOrRemotePanel);
+ localOrRemote.pack();
Utilities.centerOnScreen(localOrRemote);
if (argParser.getBindPassword() != null)
@@ -140,17 +146,32 @@
setCallOKWhenVisible(true);
}
+ ComponentListener listener = new ComponentAdapter()
+ {
+ /**
+ * {@inheritDoc}
+ */
+ public void componentHidden(ComponentEvent e)
+ {
+ handleWindowClosed(localOrRemote, info);
+ }
+ };
+ localOrRemote.addComponentListener(listener);
localOrRemote.setVisible(true);
+ }
- getLocalOrRemotePanel(localOrRemote.getContentPane()).
- setCallOKWhenVisible(false);
-
+ private void handleWindowClosed(GenericFrame localOrRemote,
+ final ControlPanelInfo info)
+ {
if (info.getServerDescriptor() == null)
{
MainMenuBar menuBar = new MainMenuBar(info);
// Assume that the user decided to quit the application
menuBar.quitClicked();
}
+
+ updateSharedLocalOrRemotePanel(localOrRemote, info);
+
// To be sure that the dialog receives the new configuration event before
// calling pack.
SwingUtilities.invokeLater(new Runnable()
@@ -216,7 +237,7 @@
}
}
- private void updateLocalOrRemotePanel(GenericDialog localOrRemote)
+ private void updateLocalOrRemotePanel(RootPaneContainer localOrRemote)
{
LocalOrRemotePanel panel =
getLocalOrRemotePanel(localOrRemote.getContentPane());
@@ -243,6 +264,39 @@
}
}
+ /**
+ * A method used to update the contents of the dialog displayed when the user
+ * selects 'Server To Administer...'. This is done because this class
+ * displays a GenericFrame and in the rest of the UI a GenericDialog is
+ * shown.
+ * @param localOrRemote the frame displayed by this class.
+ * @param info the generic info.
+ */
+ private void updateSharedLocalOrRemotePanel(RootPaneContainer localOrRemote,
+ ControlPanelInfo info)
+ {
+ LocalOrRemotePanel panel =
+ getLocalOrRemotePanel(localOrRemote.getContentPane());
+ LocalOrRemotePanel panelToUpdate = getLocalOrRemotePanel(
+ ControlCenterMainPane.getLocalOrRemoteDialog(info));
+ if (panel != null && panelToUpdate != null)
+ {
+ panelToUpdate.setRemote(panel.isRemote());
+ if (panel.getHostName() != null)
+ {
+ panelToUpdate.setHostName(panel.getHostName());
+ }
+ if (panel.getPort() != -1)
+ {
+ panelToUpdate.setPort(panel.getPort());
+ }
+ if (panel.getBindDN() != null)
+ {
+ panelToUpdate.setBindDN(panel.getBindDN());
+ }
+ }
+ }
+
private LocalOrRemotePanel getLocalOrRemotePanel(Container c)
{
LocalOrRemotePanel panel = null;
--
Gitblit v1.10.0