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

jvergara
19.18.2009 01215c7c49f7e8fd70ac42c489c214aa09c68309
Fix for issue 3813 (Minor enhancements for the Control Panel authentication)
3 files modified
269 ■■■■ changed files
opendj-sdk/opends/src/guitools/org/opends/guitools/controlpanel/ui/ControlCenterMainPane.java 142 ●●●● patch | view | raw | blame | history
opendj-sdk/opends/src/guitools/org/opends/guitools/controlpanel/ui/StatusGenericPanel.java 10 ●●●●● patch | view | raw | blame | history
opendj-sdk/opends/src/guitools/org/opends/guitools/controlpanel/ui/StatusPanel.java 117 ●●●●● patch | view | raw | blame | history
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());
    }
  }
}
opendj-sdk/opends/src/guitools/org/opends/guitools/controlpanel/ui/StatusGenericPanel.java
@@ -331,6 +331,15 @@
    {
      gbc.insets = new Insets(20, 20, 0, 20);
    }
    createErrorPane();
    p.add(errorPane, gbc);
  }
  /**
   * Creates the error pane.
   */
  protected void createErrorPane()
  {
    errorPane = Utilities.makeHtmlPane("", ColorAndFontConstants.progressFont);
    errorPane.setOpaque(false);
    errorPane.setEditable(false);
@@ -351,7 +360,6 @@
      }
    });
    errorPane.setEditorKit(htmlEditor);
    p.add(errorPane, gbc);
  }
  /**
opendj-sdk/opends/src/guitools/org/opends/guitools/controlpanel/ui/StatusPanel.java
@@ -61,6 +61,7 @@
import org.opends.guitools.controlpanel.datamodel.ConnectionHandlerTableModel;
import org.opends.guitools.controlpanel.datamodel.ServerDescriptor;
import org.opends.guitools.controlpanel.event.ConfigurationChangeEvent;
import org.opends.guitools.controlpanel.event.ScrollPaneBorderListener;
import org.opends.guitools.controlpanel.ui.components.LabelWithHelpIcon;
import org.opends.guitools.controlpanel.ui.renderer.BaseDNCellRenderer;
import org.opends.guitools.controlpanel.ui.renderer.CustomCellRenderer;
@@ -104,8 +105,6 @@
  private ConnectionHandlerTableModel connectionHandlerTableModel;
  private JTable connectionHandlersTable;
  private JButton authenticate;
  /**
   * Default constructor.
   *
@@ -117,50 +116,46 @@
    gbc.gridx = 0;
    gbc.gridy = 0;
    gbc.gridwidth = 1;
    addErrorPane(gbc);
    gbc.gridy ++;
    gbc.fill = GridBagConstraints.HORIZONTAL;
    gbc.insets = new Insets(0, 0, 0, 0);
    createErrorPane();
    gbc.insets = new Insets(20, 20, 10, 20);
    gbc.fill = GridBagConstraints.BOTH;
    gbc.weightx = 1.0;
    add(createServerStatusPanel(), gbc);
    add(errorPane, gbc);
    JPanel inScrollPanel = new JPanel(new GridBagLayout());
    inScrollPanel.setOpaque(false);
    gbc.gridy ++;
    gbc.weighty = 1.0;
    JScrollPane scroll = Utilities.createBorderLessScrollBar(inScrollPanel);
    gbc.insets = new Insets(0, 0, 0, 0);
    add(scroll, gbc);
    ScrollPaneBorderListener.createFullBorderListener(scroll);
    gbc.insets.top = 15;
    gbc.gridy = 0;
    gbc.gridx = 0;
    gbc.fill = GridBagConstraints.HORIZONTAL;
    gbc.weightx = 1.0;
    gbc.insets = new Insets(15, 10, 0, 10);
    gbc.weighty = 0.0;
    inScrollPanel.add(createServerStatusPanel(), gbc);
    gbc.gridy ++;
    add(createServerDetailsPanel(), gbc);
    inScrollPanel.add(createServerDetailsPanel(), gbc);
    // To compensate titled border.
    gbc.insets.left = 3;
    gbc.insets.right = 3;
//  To compensate titled border.
    gbc.insets.left += 3;
    gbc.insets.right += 3;
    gbc.gridy ++;
    add(createListenersPanel(), gbc);
    inScrollPanel.add(createListenersPanel(), gbc);
    gbc.gridy ++;
    add(createBackendsPanel(), gbc);
    addBottomGlue(gbc);
    gbc.insets.bottom = 20;
    inScrollPanel.add(createBackendsPanel(), gbc);
    gbc.gridy ++;
    gbc.anchor = GridBagConstraints.EAST;
    authenticate = Utilities.createButton(
        INFO_AUTHENTICATE_BUTTON_LABEL.get());
    authenticate.setToolTipText(
        INFO_AUTHENTICATE_CONTROL_PANEL_BUTTON_TOOLTIP.get().toString());
    authenticate.setOpaque(false);
    gbc.fill = GridBagConstraints.NONE;
    gbc.insets.bottom = 0;
    authenticate.setOpaque(false);
    authenticate.addActionListener(new ActionListener()
    {
      /**
       * {@inheritDoc}
       */
      public void actionPerformed(ActionEvent ev)
      {
        authenticate();
      }
    });
    add(authenticate, gbc);
    gbc.weighty = 1.0;
    gbc.insets = new Insets(0, 0, 0, 0);
    gbc.fill = GridBagConstraints.VERTICAL;
    inScrollPanel.add(Box.createVerticalGlue(), gbc);
  }
  /**
@@ -168,11 +163,7 @@
   */
  public Component getPreferredFocusComponent()
  {
    if (authenticate.isVisible())
    {
      return authenticate;
    }
    else if (startButton.isVisible())
    if (startButton.isVisible())
    {
      return startButton;
    }
@@ -182,6 +173,15 @@
    }
  }
  /**
   * {@inheritDoc}
   */
  public boolean requiresBorder()
  {
    return false;
  }
  private void recalculateSizes()
  {
    Utilities.updateTableSizes(replicationBaseDNsTable);
@@ -248,7 +248,28 @@
    Collection<OpenDsException> exceptions = desc.getExceptions();
    if (exceptions.size() == 0)
    {
      errorPane.setVisible(false);
      boolean errorPaneVisible = false;
      if (desc.getStatus() == ServerDescriptor.ServerStatus.STARTED)
      {
        if (!desc.isAuthenticated())
        {
          errorPaneVisible = true;
          MessageBuilder mb = new MessageBuilder();
          mb.append(
              INFO_CTRL_PANEL_AUTH_REQUIRED_TO_BROWSE_MONITORING_SUMMARY.
              get());
          mb.append("<br><br>"+getAuthenticateHTML());
          Message title =
            INFO_CTRL_PANEL_AUTHENTICATION_REQUIRED_SUMMARY.get();
          updateErrorPane(errorPane, title,
              ColorAndFontConstants.errorTitleFont,
              mb.toMessage(), ColorAndFontConstants.defaultFont);
        }
      }
      if (errorPane.isVisible() != errorPaneVisible)
      {
        errorPane.setVisible(errorPaneVisible);
      }
    }
    else
    {
@@ -267,6 +288,16 @@
        }
        mb.append(error);
      }
      if (desc.getStatus() == ServerDescriptor.ServerStatus.STARTED)
      {
        if (!desc.isAuthenticated())
        {
          mb.append(
     INFO_CTRL_PANEL_AUTH_REQUIRED_TO_BROWSE_MONITORING_SUMMARY.
     get());
          mb.append("<br><br>"+getAuthenticateHTML());
        }
      }
      updateErrorPane(errorPane, title, ColorAndFontConstants.errorTitleFont,
          mb.toMessage(), ColorAndFontConstants.defaultFont);
@@ -422,8 +453,6 @@
    connectionHandlersTable.getTableHeader().setVisible(hasConnectionHandlers);
    connectionHandlerTableEmpty.setVisible(!hasConnectionHandlers);
    authenticate.setVisible(!isAuthenticated && isRunning);
    recalculateSizes();
    Utilities.updateViewPositions(pos);