From 01215c7c49f7e8fd70ac42c489c214aa09c68309 Mon Sep 17 00:00:00 2001
From: jvergara <jvergara@localhost>
Date: Thu, 19 Feb 2009 16:18:48 +0000
Subject: [PATCH] Fix for issue 3813 (Minor enhancements for the Control Panel authentication)
---
opendj-sdk/opends/src/guitools/org/opends/guitools/controlpanel/ui/ControlCenterMainPane.java | 142 ++++++++++++++++++++++++++++++++++++++---------
1 files changed, 114 insertions(+), 28 deletions(-)
diff --git a/opendj-sdk/opends/src/guitools/org/opends/guitools/controlpanel/ui/ControlCenterMainPane.java b/opendj-sdk/opends/src/guitools/org/opends/guitools/controlpanel/ui/ControlCenterMainPane.java
index 53d1da6..e70d462 100644
--- a/opendj-sdk/opends/src/guitools/org/opends/guitools/controlpanel/ui/ControlCenterMainPane.java
+++ b/opendj-sdk/opends/src/guitools/org/opends/guitools/controlpanel/ui/ControlCenterMainPane.java
@@ -22,23 +22,33 @@
* CDDL HEADER END
*
*
- * Copyright 2008 Sun Microsystems, Inc.
+ * Copyright 2008-2009 Sun Microsystems, Inc.
*/
package org.opends.guitools.controlpanel.ui;
-import java.awt.Dimension;
+import static org.opends.messages.AdminToolMessages.*;
+import java.awt.Dimension;
+import java.awt.GridBagConstraints;
+import java.awt.GridBagLayout;
+import java.awt.Insets;
+
+import javax.swing.BorderFactory;
+import javax.swing.Box;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import javax.swing.SwingUtilities;
-import javax.swing.border.EmptyBorder;
+import org.opends.admin.ads.util.ConnectionUtils;
import org.opends.guitools.controlpanel.datamodel.ControlPanelInfo;
import org.opends.guitools.controlpanel.datamodel.ServerDescriptor;
import org.opends.guitools.controlpanel.event.ConfigChangeListener;
import org.opends.guitools.controlpanel.event.ConfigurationChangeEvent;
import org.opends.guitools.controlpanel.util.Utilities;
+import org.opends.messages.Message;
/**
* The main panel of the control panel. It contains a split pane. On the left
@@ -46,77 +56,122 @@
* server.
*
*/
-public class ControlCenterMainPane extends JSplitPane
+public class ControlCenterMainPane extends JPanel
{
private static final long serialVersionUID = -8939025523701408656L;
private StatusPanel statusPane;
+ private JLabel lAuthenticatedAs =
+ Utilities.createInlineHelpLabel(Message.EMPTY);
+
/**
* Constructor.
* @param info the control panel info.
*/
public ControlCenterMainPane(ControlPanelInfo info)
{
- super(JSplitPane.HORIZONTAL_SPLIT);
+ super(new GridBagLayout());
setOpaque(true); //content panes must be opaque
-
- //setBorder(BorderFactory.createMatteBorder(0, 0, 0, 1,
- // AccordionElementBorder.bottomColor));
+ JSplitPane split = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT);
+ split.setOpaque(true); //content panes must be opaque
statusPane = new StatusPanel();
- statusPane.setBorder(new EmptyBorder(10, 10, 30, 10));
statusPane.setInfo(info);
- //statusPane.setBorder(BorderFactory.createCompoundBorder(
- // BorderFactory.createMatteBorder(0, 0, 0, 0,
- // AccordionElementBorder.bottomColor),
- // new EmptyBorder(10, 10, 30, 10)));
MainActionsPane mainActionsPane = new MainActionsPane();
mainActionsPane.setInfo(info);
JScrollPane accordionScroll = Utilities.createScrollPane(mainActionsPane);
accordionScroll.getViewport().setBackground(
ColorAndFontConstants.greyBackground);
- JScrollPane statusScroll = Utilities.createScrollPane(statusPane);
// Create a split pane with the two scroll panes in it.
- setLeftComponent(accordionScroll);
+ split.setLeftComponent(accordionScroll);
- setRightComponent(statusScroll);
- setResizeWeight(0.0);
+ split.setRightComponent(statusPane);
+ split.setResizeWeight(0.0);
- setDividerLocation(accordionScroll.getPreferredSize().width + 2);
+ split.setDividerLocation(accordionScroll.getPreferredSize().width + 2);
- setPreferredSize(
- new Dimension(getPreferredSize().width + 4, getPreferredSize().height));
+ split.setPreferredSize(
+ new Dimension(split.getPreferredSize().width + 4,
+ split.getPreferredSize().height));
info.addConfigChangeListener(new ConfigChangeListener()
{
private boolean lastStatusStopped;
/**
* {@inheritDoc}
*/
- public void configurationChanged(ConfigurationChangeEvent ev)
+ public void configurationChanged(final ConfigurationChangeEvent ev)
{
+ final boolean displayLogin;
if (ev.getNewDescriptor().getStatus() !=
ServerDescriptor.ServerStatus.STARTED)
{
lastStatusStopped = true;
+ displayLogin = false;
}
else if (lastStatusStopped && !ev.getNewDescriptor().isAuthenticated())
{
lastStatusStopped = false;
- SwingUtilities.invokeLater(new Runnable()
+ displayLogin = true;
+ }
+ else
+ {
+ displayLogin = false;
+ }
+ SwingUtilities.invokeLater(new Runnable()
+ {
+ /**
+ * {@inheritDoc}
+ */
+ public void run()
{
- /**
- * {@inheritDoc}
- */
- public void run()
+ updateAuthenticationLabel(ev.getNewDescriptor());
+ if (displayLogin)
{
getLoginDialog().setVisible(true);
getLoginDialog().toFront();
}
- });
- }
+ }
+ });
}
});
+
+ GridBagConstraints gbc = new GridBagConstraints();
+ gbc.gridx = 0;
+ gbc.gridy = 0;
+ gbc.weightx = 1.0;
+ gbc.weighty = 1.0;
+ gbc.fill = GridBagConstraints.BOTH;
+ add(split, gbc);
+
+ JPanel infoPanel = new JPanel(new GridBagLayout());
+ gbc.gridy = 1;
+ gbc.weighty = 0.0;
+ add(infoPanel, gbc);
+
+ infoPanel.setOpaque(false);
+ infoPanel.setBorder(BorderFactory.createMatteBorder(1, 0, 0, 0,
+ ColorAndFontConstants.defaultBorderColor));
+ gbc.weightx = 0.0;
+ gbc.weighty = 0.0;
+ gbc.insets = new Insets(5, 5, 5, 5);
+ infoPanel.add(lAuthenticatedAs, gbc);
+ gbc.gridx = 1;
+ gbc.weightx = 1.0;
+ gbc.insets.left = 0;
+ gbc.insets.right = 0;
+ lAuthenticatedAs.setText("Qjlabel");
+ infoPanel.add(
+ Box.createVerticalStrut(lAuthenticatedAs.getPreferredSize().height),
+ gbc);
+ if (info.getServerDescriptor() != null)
+ {
+ updateAuthenticationLabel(info.getServerDescriptor());
+ }
+ else
+ {
+ lAuthenticatedAs.setText("");
+ }
}
/**
@@ -127,4 +182,35 @@
{
return statusPane.getLoginDialog();
}
+
+ private void updateAuthenticationLabel(ServerDescriptor server)
+ {
+ if (server.getStatus() ==
+ ServerDescriptor.ServerStatus.STARTED)
+ {
+ if (server.isAuthenticated())
+ {
+ try
+ {
+ String bindDN = ConnectionUtils.getBindDN(
+ statusPane.getInfo().getDirContext());
+ lAuthenticatedAs.setText(
+ INFO_CTRL_PANEL_AUTHENTICATED_AS.get(bindDN).toString());
+ }
+ catch (Throwable t)
+ {
+ }
+ }
+ else
+ {
+ lAuthenticatedAs.setText(
+ INFO_CTRL_PANEL_NOT_AUTHENTICATED.get().toString());
+ }
+ }
+ else
+ {
+ lAuthenticatedAs.setText(
+ INFO_CTRL_PANEL_NOT_AUTHENTICATED_SERVER_NOT_RUNNING.get().toString());
+ }
+ }
}
--
Gitblit v1.10.0