From 77a17e4cb35b6232e8fab371bdd735e6f53bd7a1 Mon Sep 17 00:00:00 2001
From: jvergara <jvergara@localhost>
Date: Thu, 19 Apr 2007 18:55:16 +0000
Subject: [PATCH] The following changes are targetted to extend the Graphical Setup and provide the possibility of configuring SSL and Start TLS.

---
 opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/ui/ServerSettingsPanel.java |  160 ++++++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 146 insertions(+), 14 deletions(-)

diff --git a/opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/ui/ServerSettingsPanel.java b/opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/ui/ServerSettingsPanel.java
index 0bdbf53..8681077 100644
--- a/opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/ui/ServerSettingsPanel.java
+++ b/opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/ui/ServerSettingsPanel.java
@@ -30,6 +30,8 @@
 import java.awt.Component;
 import java.awt.GridBagConstraints;
 import java.awt.GridBagLayout;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
 import java.awt.event.FocusEvent;
 import java.awt.event.FocusListener;
 import java.io.File;
@@ -37,12 +39,14 @@
 
 import javax.swing.Box;
 import javax.swing.JButton;
+import javax.swing.JFrame;
 import javax.swing.JLabel;
 import javax.swing.JPanel;
 import javax.swing.text.JTextComponent;
 
 import org.opends.quicksetup.event.BrowseActionListener;
 import org.opends.quicksetup.util.Utils;
+import org.opends.quicksetup.SecurityOptions;
 import org.opends.quicksetup.UserData;
 
 /**
@@ -56,10 +60,18 @@
 
   private Component lastFocusComponent;
 
+  private JLabel lSecurity;
+
+  private JButton secureAccessButton;
+
   private JButton browseButton;
 
   private boolean displayServerLocation;
 
+  private boolean canUpdateSecurity;
+
+  private SecurityOptions securityOptions;
+
   private HashMap<FieldName, JLabel> hmLabels =
       new HashMap<FieldName, JLabel>();
 
@@ -72,6 +84,8 @@
 
   private JLabel lServerLocation;
 
+  private SecurityOptionsDialog dlg;
+
   private static final long serialVersionUID = -15911406930993035L;
 
   /**
@@ -84,6 +98,9 @@
     super(application);
     this.defaultUserData = application.getUserData();
     this.displayServerLocation = isWebStart();
+    canUpdateSecurity =
+      org.opends.server.util.CertificateManager.mayUseCertificateManager();
+    securityOptions = defaultUserData.getSecurityOptions();
     populateLabelAndFieldMaps();
     addFocusListeners();
   }
@@ -114,7 +131,12 @@
         }
       }
 
-    } else
+    }
+    else if (fieldName == FieldName.SECURITY_OPTIONS)
+    {
+      value = securityOptions;
+    }
+    else
     {
       JTextComponent field = getField(fieldName);
       if (field != null)
@@ -157,9 +179,13 @@
     GridBagConstraints gbc = new GridBagConstraints();
 
     FieldName[] fieldNames =
-          { FieldName.SERVER_PORT, FieldName.DIRECTORY_MANAGER_DN,
-              FieldName.DIRECTORY_MANAGER_PWD,
-              FieldName.DIRECTORY_MANAGER_PWD_CONFIRM };
+    {
+        FieldName.SERVER_PORT,
+        FieldName.SECURITY_OPTIONS,
+        FieldName.DIRECTORY_MANAGER_DN,
+        FieldName.DIRECTORY_MANAGER_PWD,
+        FieldName.DIRECTORY_MANAGER_PWD_CONFIRM
+    };
 
     JPanel auxPanel;
     // Add the server location widgets
@@ -211,7 +237,21 @@
       gbc.weightx = 0.0;
       gbc.insets.top = UIFactory.TOP_INSET_PRIMARY_FIELD;
       gbc.insets.left = 0;
-      gbc.anchor = GridBagConstraints.WEST;
+      boolean isSecurityField = fieldName == FieldName.SECURITY_OPTIONS;
+
+      int securityInsetsTop = Math.abs(
+          getLDAPSecureAccessButton().getPreferredSize().height -
+          getLabel(fieldName).getPreferredSize().height) / 2;
+
+      if (isSecurityField)
+      {
+        gbc.anchor = GridBagConstraints.NORTHWEST;
+        gbc.insets.top += securityInsetsTop;
+      }
+      else
+      {
+        gbc.anchor = GridBagConstraints.WEST;
+      }
       panel.add(getLabel(fieldName), gbc);
 
       auxPanel = new JPanel(new GridBagLayout());
@@ -221,18 +261,41 @@
       gbc.insets.top = UIFactory.TOP_INSET_PRIMARY_FIELD;
       gbc.insets.left = UIFactory.LEFT_INSET_PRIMARY_FIELD;
       gbc.gridwidth = GridBagConstraints.REMAINDER;
+
       panel.add(auxPanel, gbc);
 
       boolean isPortField = fieldName == FieldName.SERVER_PORT;
       gbc.insets = UIFactory.getEmptyInsets();
-      if (isPortField) {
+      if (isPortField || (isSecurityField && canUpdateSecurity))
+      {
         gbc.gridwidth = 3;
-      } else {
+      }
+      else
+      {
         gbc.gridwidth = GridBagConstraints.RELATIVE;
       }
       gbc.weightx = 0.0;
-      auxPanel.add(getField(fieldName), gbc);
-      if (isPortField) {
+      if (isSecurityField)
+      {
+        gbc.insets.top = securityInsetsTop;
+        if (canUpdateSecurity)
+        {
+          auxPanel.add(lSecurity, gbc);
+        }
+        else
+        {
+          auxPanel.add(UIFactory.makeJLabel(UIFactory.IconType.WARNING,
+              getMsg("cannot-update-security-warning"),
+              UIFactory.TextStyle.SECONDARY_FIELD_VALID), gbc);
+        }
+      }
+      else
+      {
+        auxPanel.add(getField(fieldName), gbc);
+      }
+
+      if (isPortField)
+      {
         JLabel l =
                 UIFactory.makeJLabel(UIFactory.IconType.NO_ICON,
                         getPortHelpMessage(),
@@ -241,9 +304,17 @@
         gbc.insets.left = UIFactory.LEFT_INSET_SECONDARY_FIELD;
         auxPanel.add(l, gbc);
       }
-
+      else if (isSecurityField && canUpdateSecurity)
+      {
+        gbc.gridwidth = GridBagConstraints.RELATIVE;
+        gbc.insets.left = UIFactory.LEFT_INSET_BROWSE;
+        gbc.anchor = GridBagConstraints.NORTHWEST;
+        gbc.insets.top = 0;
+        auxPanel.add(getLDAPSecureAccessButton(), gbc);
+      }
       gbc.gridwidth = GridBagConstraints.REMAINDER;
       gbc.weightx = 1.0;
+      gbc.fill = GridBagConstraints.HORIZONTAL;
       auxPanel.add(Box.createHorizontalGlue(), gbc);
     }
     addVerticalGlue(panel);
@@ -304,7 +375,8 @@
       if (defaultUserData.getServerPort() > 0)
       {
         value = String.valueOf(defaultUserData.getServerPort());
-      } else
+      }
+      else
       {
         value = "";
       }
@@ -322,6 +394,11 @@
       value = defaultUserData.getDirectoryManagerPwd();
       break;
 
+    case SECURITY_OPTIONS:
+      value = getSecurityOptionsString(defaultUserData.getSecurityOptions(),
+          true);
+      break;
+
     default:
       throw new IllegalArgumentException("Unknown field name: " +
           fieldName);
@@ -343,6 +420,11 @@
         LabelFieldDescriptor.FieldType.TEXTFIELD,
         LabelFieldDescriptor.LabelType.PRIMARY, UIFactory.PORT_FIELD_SIZE));
 
+    hm.put(FieldName.SECURITY_OPTIONS, new LabelFieldDescriptor(
+        getMsg("server-security-label"), getMsg("server-security-tooltip"),
+        LabelFieldDescriptor.FieldType.READ_ONLY,
+        LabelFieldDescriptor.LabelType.PRIMARY, 0));
+
     hm.put(FieldName.DIRECTORY_MANAGER_DN, new LabelFieldDescriptor(
         getMsg("server-directory-manager-dn-label"),
         getMsg("server-directory-manager-dn-tooltip"),
@@ -367,11 +449,20 @@
     {
       LabelFieldDescriptor desc = hm.get(fieldName);
       String defaultValue = getDefaultValue(fieldName);
-      JTextComponent field = UIFactory.makeJTextComponent(desc, defaultValue);
+
       JLabel label = makeJLabel(desc);
 
-      hmFields.put(fieldName, field);
-      label.setLabelFor(field);
+      if (fieldName != FieldName.SECURITY_OPTIONS)
+      {
+        JTextComponent field = UIFactory.makeJTextComponent(desc, defaultValue);
+        hmFields.put(fieldName, field);
+        label.setLabelFor(field);
+      }
+      else
+      {
+        lSecurity = UIFactory.makeJLabel(UIFactory.IconType.NO_ICON,
+            defaultValue, UIFactory.TextStyle.SECONDARY_FIELD_VALID);
+      }
 
       hmLabels.put(fieldName, label);
     }
@@ -431,6 +522,36 @@
   }
 
   /**
+   * Returns the configure secure access button.
+   * If it does not exist creates the secure access button.
+   * @return the secure access button.
+   */
+  private JButton getLDAPSecureAccessButton()
+  {
+    if (secureAccessButton == null)
+    {
+      secureAccessButton =
+          UIFactory.makeJButton(getMsg("server-security-button-label"),
+              getMsg("server-security-button-tooltip"));
+
+      secureAccessButton.addActionListener(new ActionListener()
+      {
+        public void actionPerformed(ActionEvent ev)
+        {
+          getConfigureSecureAccessDialog().display(securityOptions);
+          if (!getConfigureSecureAccessDialog().isCancelled())
+          {
+            securityOptions =
+              getConfigureSecureAccessDialog().getSecurityOptions();
+            lSecurity.setText(getSecurityOptionsString(securityOptions, true));
+          }
+        }
+      });
+    }
+    return secureAccessButton;
+  }
+
+  /**
    * Returns the label associated with the given field name.
    * @param fieldName the field name for which we want to retrieve the JLabel.
    * @return the label associated with the given field name.
@@ -472,6 +593,7 @@
     {
       tf.addFocusListener(l);
     }
+    getLDAPSecureAccessButton().addFocusListener(l);
     getBrowseButton().addFocusListener(l);
     if (Utils.isWebStart())
     {
@@ -498,4 +620,14 @@
     }
     return s;
   }
+
+  private SecurityOptionsDialog getConfigureSecureAccessDialog()
+  {
+    if (dlg == null)
+    {
+      dlg = new SecurityOptionsDialog((JFrame)getMainWindow(), securityOptions);
+      dlg.setModal(true);
+    }
+    return dlg;
+  }
 }

--
Gitblit v1.10.0