/* * 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 Sun Microsystems, Inc. */ package org.opends.quicksetup.ui; import java.awt.Component; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.util.HashMap; import javax.swing.JCheckBox; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.text.JTextComponent; import org.opends.quicksetup.installer.DataOptions; import org.opends.quicksetup.installer.FieldName; import org.opends.quicksetup.installer.LabelFieldDescriptor; import org.opends.quicksetup.installer.UserInstallData; /** * This is the panel that contains the Review Panel. * */ class ReviewPanel extends QuickSetupStepPanel { private static final long serialVersionUID = -7356174829193265699L; private boolean displayServerLocation; private UserInstallData defaultUserData; private JCheckBox checkBox; private HashMap hmLabels = new HashMap(); private HashMap hmFields = new HashMap(); /** * Constructor of the panel. * @param defaultUserData the default values that must be used to initialize * the fields of the panel. */ public ReviewPanel(UserInstallData defaultUserData) { this.defaultUserData = defaultUserData; this.displayServerLocation = isWebStart(); populateLabelAndFieldsMap(); createLayout(); } /** * {@inheritDoc} */ public void beginDisplay(UserInstallData userData) { if (displayServerLocation) { setFieldValue(FieldName.SERVER_LOCATION, userData.getServerLocation()); } setFieldValue(FieldName.SERVER_PORT, String.valueOf(userData .getServerPort())); setFieldValue(FieldName.DIRECTORY_MANAGER_DN, userData .getDirectoryManagerDn()); setFieldValue(FieldName.DIRECTORY_BASE_DN, userData.getDataOptions() .getBaseDn()); setFieldValue(FieldName.DATA_OPTIONS, getDisplayString(userData .getDataOptions())); } /** * {@inheritDoc} */ public Object getFieldValue(FieldName fieldName) { Object value = null; if (fieldName == FieldName.SERVER_START) { value = new Boolean(getCheckBox().isSelected()); } return value; } /** * {@inheritDoc} */ protected Component createInputPanel() { JPanel panel = new JPanel(new GridBagLayout()); panel.setOpaque(false); GridBagConstraints gbc = new GridBagConstraints(); gbc.insets = UIFactory.getEmptyInsets(); gbc.gridwidth = GridBagConstraints.REMAINDER; gbc.weightx = 1.0; gbc.fill = GridBagConstraints.HORIZONTAL; panel.add(createFieldsPanel(), gbc); addVerticalGlue(panel); gbc.insets.top = UIFactory.TOP_INSET_PRIMARY_FIELD; gbc.weighty = 0.0; gbc.fill = GridBagConstraints.HORIZONTAL; panel.add(getCheckBox(), gbc); return panel; } /** * {@inheritDoc} */ protected String getInstructions() { return getMsg("review-panel-instructions"); } /** * {@inheritDoc} */ protected String getTitle() { return getMsg("review-panel-title"); } /** * Create the components and populate the Maps. */ private void populateLabelAndFieldsMap() { HashMap hm = new HashMap(); if (displayServerLocation) { hm.put(FieldName.SERVER_LOCATION, new LabelFieldDescriptor( getMsg("server-location-label"), getMsg("server-port-tooltip"), LabelFieldDescriptor.FieldType.READ_ONLY, LabelFieldDescriptor.LabelType.PRIMARY, 0)); } hm.put(FieldName.SERVER_PORT, new LabelFieldDescriptor( getMsg("server-port-label"), getMsg("server-port-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"), LabelFieldDescriptor.FieldType.READ_ONLY, LabelFieldDescriptor.LabelType.PRIMARY, 0)); hm.put(FieldName.DIRECTORY_BASE_DN, new LabelFieldDescriptor( getMsg("base-dn-label"), getMsg("base-dn-tooltip"), LabelFieldDescriptor.FieldType.READ_ONLY, LabelFieldDescriptor.LabelType.PRIMARY, 0)); hm.put(FieldName.DATA_OPTIONS, new LabelFieldDescriptor( getMsg("directory-data-label"), null, LabelFieldDescriptor.FieldType.READ_ONLY, LabelFieldDescriptor.LabelType.PRIMARY, 0)); for (FieldName fieldName : hm.keySet()) { LabelFieldDescriptor desc = hm.get(fieldName); JTextComponent field = makeJTextComponent(desc, null); field.setOpaque(false); JLabel label = makeJLabel(desc); hmFields.put(fieldName, field); label.setLabelFor(field); hmLabels.put(fieldName, label); } } /** * 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. */ private JLabel getLabel(FieldName fieldName) { return hmLabels.get(fieldName); } /** * Returns the JTextComponent associated with the given field name. * @param fieldName the field name for which we want to retrieve the * JTextComponent. * @return the JTextComponent associated with the given field name. */ private JTextComponent getField(FieldName fieldName) { return hmFields.get(fieldName); } /** * Updates the JTextComponent associated with a FieldName with a text value. * @param fieldName the field name of the JTextComponent that we want to * update. * @param value the value to be set. */ private void setFieldValue(FieldName fieldName, String value) { getField(fieldName).setText(value); } /** * Returns the localized string describing the DataOptions chosen by the user. * @param options the DataOptions of the user. * @return the localized string describing the DataOptions chosen by the user. */ private String getDisplayString(DataOptions options) { String msg; switch (options.getType()) { case CREATE_BASE_ENTRY: msg = getMsg("review-create-base-entry-label", new String[] { options.getBaseDn() }); break; case LEAVE_DATABASE_EMPTY: msg = getMsg("review-leave-database-empty-label"); break; case IMPORT_FROM_LDIF_FILE: msg = getMsg("review-import-ldif", new String[] { options.getLDIFPath() }); break; case IMPORT_AUTOMATICALLY_GENERATED_DATA: msg = getMsg("review-import-automatically-generated", new String[] { String.valueOf(options.getNumberEntries()) }); break; default: throw new IllegalArgumentException("Unknow type: " + options.getType()); } return msg; } /** * Returns the start server check box. * If it does not exist creates the start server check box. * @return the start server check box. */ private JCheckBox getCheckBox() { if (checkBox == null) { checkBox = UIFactory.makeJCheckBox(getMsg("start-server-label"), getMsg("start-server-tooltip"), UIFactory.TextStyle.CHECKBOX); checkBox.setOpaque(false); checkBox.setSelected(defaultUserData.getStartServer()); } return checkBox; } /** * Returns and creates the fields panel. * @return the fields panel. */ private JPanel createFieldsPanel() { JPanel panel = new JPanel(new GridBagLayout()); panel.setOpaque(false); GridBagConstraints gbc = new GridBagConstraints(); FieldName[] fieldNames; if (displayServerLocation) { fieldNames = new FieldName[] { FieldName.SERVER_LOCATION, FieldName.SERVER_PORT, FieldName.DIRECTORY_MANAGER_DN, FieldName.DIRECTORY_BASE_DN, FieldName.DATA_OPTIONS }; } else { fieldNames = new FieldName[] { FieldName.SERVER_PORT, FieldName.DIRECTORY_MANAGER_DN, FieldName.DIRECTORY_BASE_DN, FieldName.DATA_OPTIONS }; } for (int i = 0; i < fieldNames.length; i++) { gbc.gridwidth = GridBagConstraints.RELATIVE; gbc.weightx = 0.0; if (i > 0) { gbc.insets.top = UIFactory.TOP_INSET_PRIMARY_FIELD; } else { gbc.insets.top = 0; } gbc.insets.left = 0; gbc.anchor = GridBagConstraints.NORTHWEST; panel.add(getLabel(fieldNames[i]), gbc); JPanel auxPanel = new JPanel(new GridBagLayout()); auxPanel.setOpaque(false); gbc.weightx = 1.0; gbc.fill = GridBagConstraints.HORIZONTAL; if (i > 0) { gbc.insets.top = UIFactory.TOP_INSET_PRIMARY_FIELD; } else { gbc.insets.top = 0; } gbc.insets.left = UIFactory.LEFT_INSET_PRIMARY_FIELD; gbc.gridwidth = GridBagConstraints.REMAINDER; panel.add(auxPanel, gbc); gbc.insets = UIFactory.getEmptyInsets(); gbc.gridwidth = GridBagConstraints.REMAINDER; gbc.weightx = 1.0; auxPanel.add(getField(fieldNames[i]), gbc); } return panel; } }