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/StatusGenericPanel.java | 10 +
opendj-sdk/opends/src/guitools/org/opends/guitools/controlpanel/ui/StatusPanel.java | 117 ++++++++++++++--------
opendj-sdk/opends/src/guitools/org/opends/guitools/controlpanel/ui/ControlCenterMainPane.java | 142 ++++++++++++++++++++++-----
3 files changed, 196 insertions(+), 73 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());
+ }
+ }
}
diff --git a/opendj-sdk/opends/src/guitools/org/opends/guitools/controlpanel/ui/StatusGenericPanel.java b/opendj-sdk/opends/src/guitools/org/opends/guitools/controlpanel/ui/StatusGenericPanel.java
index e46029d..5fe7cb3 100644
--- a/opendj-sdk/opends/src/guitools/org/opends/guitools/controlpanel/ui/StatusGenericPanel.java
+++ b/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);
}
/**
diff --git a/opendj-sdk/opends/src/guitools/org/opends/guitools/controlpanel/ui/StatusPanel.java b/opendj-sdk/opends/src/guitools/org/opends/guitools/controlpanel/ui/StatusPanel.java
index 43cfbb8..cc8f23c 100644
--- a/opendj-sdk/opends/src/guitools/org/opends/guitools/controlpanel/ui/StatusPanel.java
+++ b/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);
--
Gitblit v1.10.0