/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only * (the "License"). You may not use this file except in compliance * with the License. * * You can obtain a copy of the license at * trunk/opends/resource/legal-notices/OpenDS.LICENSE * or https://OpenDS.dev.java.net/OpenDS.LICENSE. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at * trunk/opends/resource/legal-notices/OpenDS.LICENSE. If applicable, * add the following below this CDDL HEADER, with the fields enclosed * by brackets "[]" replaced with your own identifying information: * Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END * * * Portions Copyright 2006-2007 Sun Microsystems, Inc. */ package org.opends.quicksetup.ui; import org.opends.quicksetup.CurrentInstallStatus; import org.opends.quicksetup.util.Utils; import javax.swing.*; import javax.swing.border.EmptyBorder; import java.awt.*; import java.util.HashMap; import java.util.HashSet; import java.util.Set; /** * This is the panel displayed when the user is uninstalling Open DS. It is * basically a panel with the text informing of the consequences of uninstalling * the server and asking for confirmation. * */ public class ConfirmUninstallPanel extends QuickSetupStepPanel { private static final long serialVersionUID = 81730510134697056L; private CurrentInstallStatus installStatus; private Set outsideDbs; private Set outsideLogs; private HashMap hmCbs = new HashMap(); /** * The constructor of this class. * @param application Application this panel represents * @param installStatus the object describing the current installation status. * */ public ConfirmUninstallPanel(GuiApplication application, CurrentInstallStatus installStatus) { super(application); this.installStatus = installStatus; } /** * {@inheritDoc} */ public Object getFieldValue(FieldName fieldName) { Object value = null; switch (fieldName) { case EXTERNAL_DB_DIRECTORIES: Set s1 = new HashSet(); if (outsideDbs.size() > 0) { if (getCheckBox(FieldName.EXTERNAL_DB_DIRECTORIES).isSelected()) { s1.addAll(outsideDbs); } } value = s1; break; case EXTERNAL_LOG_FILES: Set s2 = new HashSet(); 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"); } /** * {@inheritDoc} */ protected Component createInputPanel() { 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 0) { JPanel dbPanel = createDbPanel(); panel.add(dbPanel, gbc); } if (outsideLogs.size() > 0) { JPanel logPanel = createLogPanel(); panel.add(logPanel, gbc); } addVerticalGlue(panel); return panel; } /** * {@inheritDoc} */ protected String getInstructions() { 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.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.setSelected(true); hmCbs.put(FieldName.EXTERNAL_LOG_FILES, cbOutsideLogs); return createOutsidePathPanel(cbOutsideLogs, outsideLogs, "delete-outside-logs-msg"); } private JPanel createOutsidePathPanel(JCheckBox cb, Set 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; } }