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