mirror of https://github.com/OpenIdentityPlatform/OpenDJ.git

jvergara
19.18.2009 01215c7c49f7e8fd70ac42c489c214aa09c68309
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());
    }
  }
}