From c40f084a6d3e897785f2fbff3ddb97545644cddc Mon Sep 17 00:00:00 2001
From: jvergara <jvergara@localhost>
Date: Mon, 11 Dec 2006 15:34:39 +0000
Subject: [PATCH] The following modifications include the comments from Neil and Brian (thanks to both for your help):
---
opends/src/quicksetup/org/opends/quicksetup/ui/ConfirmUninstallPanel.java | 266 ++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 262 insertions(+), 4 deletions(-)
diff --git a/opends/src/quicksetup/org/opends/quicksetup/ui/ConfirmUninstallPanel.java b/opends/src/quicksetup/org/opends/quicksetup/ui/ConfirmUninstallPanel.java
index 1085350..80a868d 100644
--- a/opends/src/quicksetup/org/opends/quicksetup/ui/ConfirmUninstallPanel.java
+++ b/opends/src/quicksetup/org/opends/quicksetup/ui/ConfirmUninstallPanel.java
@@ -28,6 +28,23 @@
package org.opends.quicksetup.ui;
import java.awt.Component;
+import java.awt.GridBagConstraints;
+import java.awt.GridBagLayout;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Set;
+
+import javax.swing.Box;
+import javax.swing.DefaultListModel;
+import javax.swing.JCheckBox;
+import javax.swing.JList;
+import javax.swing.JPanel;
+import javax.swing.JScrollPane;
+import javax.swing.border.EmptyBorder;
+
+import org.opends.quicksetup.CurrentInstallStatus;
+import org.opends.quicksetup.installer.FieldName;
+import org.opends.quicksetup.util.Utils;
/**
* This is the panel displayed when the user is uninstalling Open DS. It is
@@ -39,18 +56,66 @@
{
private static final long serialVersionUID = 81730510134697056L;
+ private CurrentInstallStatus installStatus;
+ private Set<String> outsideDbs;
+ private Set<String> outsideLogs;
+
+ private HashMap<FieldName, JCheckBox> hmCbs =
+ new HashMap<FieldName, JCheckBox>();
+
/**
- * Default constructor.
+ * The constructor of this class.
+ * @param installStatus the object describing the current installation status.
*
*/
- public ConfirmUninstallPanel()
+ public ConfirmUninstallPanel(CurrentInstallStatus installStatus)
{
+ this.installStatus = installStatus;
createLayout();
}
/**
* {@inheritDoc}
*/
+ public Object getFieldValue(FieldName fieldName)
+ {
+ Object value = null;
+ switch (fieldName)
+ {
+ case EXTERNAL_DB_DIRECTORIES:
+ Set<String> s1 = new HashSet<String>();
+ if (outsideDbs.size() > 0)
+ {
+ if (getCheckBox(FieldName.EXTERNAL_DB_DIRECTORIES).isSelected())
+ {
+ s1.addAll(outsideDbs);
+ }
+ }
+ value = s1;
+ break;
+
+ case EXTERNAL_LOG_FILES:
+ Set<String> s2 = new HashSet<String>();
+ if (outsideLogs.size() > 0)
+ {
+ if (getCheckBox(FieldName.EXTERNAL_LOG_FILES).isSelected())
+ {
+ s2.addAll(outsideLogs);
+ }
+ }
+ value = s2;
+ break;
+ default:
+ JCheckBox cb = getCheckBox(fieldName);
+ value = new Boolean(cb.isSelected());
+ break;
+ }
+ return value;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
protected String getTitle()
{
return getMsg("confirm-uninstall-panel-title");
@@ -61,8 +126,111 @@
*/
protected Component createInputPanel()
{
- // No input in this panel
- return null;
+ FieldName[] fieldNames = {
+ FieldName.REMOVE_LIBRARIES_AND_TOOLS,
+ FieldName.REMOVE_DATABASES,
+ FieldName.REMOVE_LOGS,
+ FieldName.REMOVE_CONFIGURATION_AND_SCHEMA,
+ FieldName.REMOVE_BACKUPS,
+ FieldName.REMOVE_LDIFS,
+ };
+
+ String[] labels = {
+ getMsg("remove-libraries-and-tools-label"),
+ getMsg("remove-databases-label"),
+ getMsg("remove-logs-label"),
+ getMsg("remove-schema-and-configuration-label"),
+ getMsg("remove-backups-label"),
+ getMsg("remove-ldifs-label"),
+ };
+
+ String[] tooltips = {
+ getMsg("remove-libraries-and-tools-tooltip"),
+ getMsg("remove-databases-tooltip"),
+ getMsg("remove-logs-tooltip"),
+ getMsg("remove-schema-and-configuration-tooltip"),
+ getMsg("remove-backups-tooltip"),
+ getMsg("remove-ldifs-tooltip"),
+ };
+
+ for (int i=0; i<fieldNames.length; i++)
+ {
+ JCheckBox cb = UIFactory.makeJCheckBox(labels[i], tooltips[i],
+ UIFactory.TextStyle.INSTRUCTIONS);
+ cb.setOpaque(false);
+ cb.setSelected(true);
+ hmCbs.put(fieldNames[i], cb);
+ }
+
+
+ JPanel panel = new JPanel(new GridBagLayout());
+ panel.setOpaque(false);
+
+ GridBagConstraints gbc = new GridBagConstraints();
+ gbc.insets = UIFactory.getEmptyInsets();
+
+ JPanel p = new JPanel(new GridBagLayout());
+ p.setOpaque(false);
+ gbc.weightx = 0.0;
+ gbc.gridwidth = GridBagConstraints.RELATIVE;
+ gbc.anchor = GridBagConstraints.WEST;
+ p.add(UIFactory.makeJLabel(UIFactory.IconType.NO_ICON,
+ getMsg("server-path-label"),
+ UIFactory.TextStyle.PRIMARY_FIELD_VALID), gbc);
+ gbc.gridwidth = GridBagConstraints.REMAINDER;
+ gbc.insets.left = UIFactory.LEFT_INSET_SECONDARY_FIELD;
+ p.add(UIFactory.makeJLabel(UIFactory.IconType.NO_ICON,
+ Utils.getInstallPathFromClasspath(), UIFactory.TextStyle.INSTRUCTIONS),
+ gbc);
+
+ FieldName[] names = {
+ FieldName.REMOVE_LIBRARIES_AND_TOOLS,
+ FieldName.REMOVE_DATABASES,
+ FieldName.REMOVE_LOGS,
+ FieldName.REMOVE_CONFIGURATION_AND_SCHEMA,
+ FieldName.REMOVE_BACKUPS,
+ FieldName.REMOVE_LDIFS
+ };
+
+ for (int i=0; i<names.length; i++)
+ {
+ gbc.gridwidth = GridBagConstraints.RELATIVE;
+ p.add(Box.createHorizontalGlue(), gbc);
+ gbc.insets.left = 0;
+ gbc.gridwidth = GridBagConstraints.REMAINDER;
+ gbc.insets.left = UIFactory.LEFT_INSET_SECONDARY_FIELD;
+ p.add(getCheckBox(names[i]), gbc);
+ }
+
+ gbc.weightx = 1.0;
+ gbc.fill = GridBagConstraints.NONE;
+ gbc.gridwidth = GridBagConstraints.REMAINDER;
+ gbc.anchor = GridBagConstraints.WEST;
+ gbc.insets.left = 0;
+
+ panel.add(p, gbc);
+
+ outsideDbs = Utils.getOutsideDbs(installStatus);
+ outsideLogs = Utils.getOutsideLogs(installStatus);
+
+ gbc.insets.top = UIFactory.TOP_INSET_PRIMARY_FIELD;
+ gbc.fill = GridBagConstraints.HORIZONTAL;
+ gbc.weightx = 1.0;
+ if (outsideDbs.size() > 0)
+ {
+ JPanel dbPanel = createDbPanel();
+ panel.add(dbPanel, gbc);
+ }
+
+ if (outsideLogs.size() > 0)
+ {
+ JPanel logPanel = createLogPanel();
+ panel.add(logPanel, gbc);
+ }
+
+ addVerticalGlue(panel);
+
+ return panel;
}
/**
@@ -72,4 +240,94 @@
{
return getMsg("confirm-uninstall-panel-instructions");
}
+
+ /**
+ * Creates a panel to ask the user if (s)he wants to remove the databases
+ * located outside the installation path.
+ * @return a panel to ask the user if (s)he wants to remove the databases
+ * located outside the installation path.
+ */
+ private JPanel createDbPanel()
+ {
+ JCheckBox cbOutsideDbs = UIFactory.makeJCheckBox(
+ getMsg("delete-outside-dbs-label"),
+ getMsg("delete-outside-dbs-tooltip"), UIFactory.TextStyle.INSTRUCTIONS);
+ cbOutsideDbs.setOpaque(false);
+ cbOutsideDbs.setSelected(true);
+ hmCbs.put(FieldName.EXTERNAL_DB_DIRECTORIES, cbOutsideDbs);
+
+ return createOutsidePathPanel(cbOutsideDbs, outsideDbs,
+ "delete-outside-dbs-msg");
+ }
+
+ /**
+ * Creates a panel to ask the user if (s)he wants to remove the logs located
+ * outside the installation path.
+ * @return a panel to ask the user if (s)he wants to remove the logs located
+ * outside the installation path.
+ */
+ private JPanel createLogPanel()
+ {
+ JCheckBox cbOutsideLogs = UIFactory.makeJCheckBox(
+ getMsg("delete-outside-logs-label"),
+ getMsg("delete-outside-logs-tooltip"),
+ UIFactory.TextStyle.INSTRUCTIONS);
+ cbOutsideLogs.setOpaque(false);
+ cbOutsideLogs.setSelected(true);
+ hmCbs.put(FieldName.EXTERNAL_LOG_FILES, cbOutsideLogs);
+
+ return createOutsidePathPanel(cbOutsideLogs, outsideLogs,
+ "delete-outside-logs-msg");
+ }
+
+ private JPanel createOutsidePathPanel(JCheckBox cb, Set<String> paths,
+ String msgKey)
+ {
+ JPanel panel = new JPanel(new GridBagLayout());
+ panel.setOpaque(false);
+
+ GridBagConstraints gbc = new GridBagConstraints();
+ gbc.insets = UIFactory.getEmptyInsets();
+ gbc.weightx = 1.0;
+ gbc.gridwidth = GridBagConstraints.REMAINDER;
+ gbc.anchor = GridBagConstraints.WEST;
+ gbc.fill = GridBagConstraints.HORIZONTAL;
+
+ panel.add(UIFactory.makeJLabel(UIFactory.IconType.NO_ICON, getMsg(msgKey),
+ UIFactory.TextStyle.INSTRUCTIONS), gbc);
+ DefaultListModel listModel = new DefaultListModel();
+ for (String path : paths)
+ {
+ listModel.addElement(path);
+ }
+ JList list = UIFactory.makeJList(UIFactory.TextStyle.INSTRUCTIONS);
+ list.setModel(listModel);
+ list.setBackground(UIFactory.CURRENT_STEP_PANEL_BACKGROUND);
+ list.setVisibleRowCount(Math.min(3, listModel.getSize()));
+ JScrollPane scroll = new JScrollPane(list);
+ scroll.setViewportBorder(new EmptyBorder(0, 0, 0, 0));
+ gbc.insets.left = UIFactory.LEFT_INSET_RADIO_SUBORDINATE;
+ panel.add(scroll, gbc);
+
+ gbc.insets.left = 0;
+ panel.add(cb, gbc);
+
+ return panel;
+ }
+
+ /**
+ * Returns the checkbox corresponding to the provided FieldName.
+ * @param fieldName the FieldName object.
+ * @return the checkbox corresponding to the provided FieldName.
+ */
+ private JCheckBox getCheckBox(FieldName fieldName)
+ {
+ JCheckBox cb = hmCbs.get(fieldName);
+ if (cb == null)
+ {
+ throw new IllegalArgumentException("The FieldName "+fieldName+
+ " has no checkbox associated.");
+ }
+ return cb;
+ }
}
--
Gitblit v1.10.0