mirror of https://github.com/OpenIdentityPlatform/OpenDJ.git

jcduff
22.32.2008 7d2698d372148b72f317bd9ff4d16c34e522c96d
Implement support for click-thru license approval in quicksetup.
A new panel will show up to present the license if the license
file Legal/license_to_accept.txt exists in the layout. Otherwise,
quicksetup will have the same behavior as before.
2 files added
6 files modified
361 ■■■■■ changed files
opendj-sdk/opends/src/messages/messages/quicksetup.properties 8 ●●●●● patch | view | raw | blame | history
opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/LicenseFile.java 140 ●●●●● patch | view | raw | blame | history
opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/Step.java 12 ●●●●● patch | view | raw | blame | history
opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/WizardStep.java 7 ●●●●● patch | view | raw | blame | history
opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/installer/Installer.java 10 ●●●●● patch | view | raw | blame | history
opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/installer/ui/InstallLicensePanel.java 170 ●●●●● patch | view | raw | blame | history
opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/ui/ButtonsPanel.java 6 ●●●●● patch | view | raw | blame | history
opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/upgrader/UpgradeWizardStep.java 8 ●●●●● patch | view | raw | blame | history
opendj-sdk/opends/src/messages/messages/quicksetup.properties
@@ -1328,6 +1328,14 @@
 href="https://www.opends.org/wiki/page/OverviewOfTheQuickSetupTool"> OpenDS \
 documentation wiki</a>.
INFO_WELCOME_STEP=Welcome
INFO_LICENSE_PANEL_OFFLINE_INSTRUCTIONS=Please read the following important \
 information before continuing.
INFO_LICENSE_PANEL_TITLE=License
INFO_LICENSE_PANEL_WEBSTART_INSTRUCTIONS=bla bla
INFO_LICENSE_STEP=License
INFO_LICENSE_DETAILS_LABEL=Please read the following License Agreement.\n\
 You must accept the terms of the agreement before continuing with the installation.
INFO_LICENSE_CLICK_LABEL=Click to accept
INFO_CONFIRM_UNINSTALL_STEP=Uninstall Options
INFO_ZIP_FILES_DESCRIPTION=OpenDS Installation Package (.zip)
SEVERE_ERR_COULD_NOT_FIND_REPLICATIONID=Could not find a remote peer to \
opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/LicenseFile.java
New file
@@ -0,0 +1,140 @@
/*
 * 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
 *
 *
 *      Copyright 2006-2008 Sun Microsystems, Inc.
 */
package org.opends.quicksetup;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
/**
 * Represents information about the license file.
 */
public class LicenseFile {
  /**
   * The File object related to the license file.
   */
  static private File licFile = null;
  /**
   * The license file approval state.
   */
  static private boolean approved = false;
  /**
   * Returns the license file name.
   */
  static private String getName()
  {
    String installRootFromSystem = System.getProperty("INSTALL_ROOT");
    if (installRootFromSystem == null) {
      installRootFromSystem = System.getenv("INSTALL_ROOT");
    }
    if (installRootFromSystem == null) {
      installRootFromSystem = "";
    }
    return installRootFromSystem + "/Legal/license_to_accept.txt";
  }
  /**
   * Returns the license file object.
   */
  static private File getFile()
  {
    if (licFile == null) {
       licFile = new File(getName());
    }
    return licFile;
  }
  /**
   * Checks if the license file exists.
   * @return <CODE>true</CODE> a license file license_to_accept.txt
   * exists in the Legal directory in the top level installation directory
   * <CODE>false</CODE> otherwise.
   */
  static public boolean exists()
  {
    return getFile().exists();
  }
  /**
   * Get the textual contents of the license file.
   * @return the textual contents of the license file.
   */
  static public String getText()
  {
    FileReader reader;
    try {
       reader = new FileReader(getFile());
    } catch(Exception e) {
      return "";
    }
    int fileLen = (int) getFile().length();
    char[] charArray = new char[fileLen];
    try {
      reader.read(charArray);
    } catch(IOException ioe) {
      System.out.println("Could not read license file");
    }
    return new String(charArray);
  }
  /**
   * Get the license approval status.
   * @return <CODE>true</CODE> if the license has been accepted by the user
   * <CODE>false</CODE> otherwise.
   */
  static public boolean getApproval()
  {
    return approved;
  }
  /**
   * Sets the license approval status.
   * @param p_approved the license approval status
   */
  static public void setApproval(boolean p_approved)
  {
    approved = p_approved;
  }
}
opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/Step.java
@@ -44,6 +44,11 @@
  WELCOME(INFO_WELCOME_STEP.get()),
  /**
   * License approval step for the installation.
   */
  LICENSE(INFO_LICENSE_STEP.get()),
  /**
   * Confirmation panel for the uninstallation.
   */
  CONFIRM_UNINSTALL(INFO_CONFIRM_UNINSTALL_STEP.get()),
@@ -124,4 +129,11 @@
    return this == FINISHED;
  }
  /**
   * {@inheritDoc}
   */
  public boolean isLicenseStep() {
    return this == LICENSE;
  }
}
opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/WizardStep.java
@@ -56,4 +56,11 @@
   */
  boolean isFinishedStep();
  /**
   * Indicates whether this is the license approval step.
   * @return <CODE>true</CODE> if this is the license approval step
   * and <CODE>false</CODE> otherwise.
   */
  boolean isLicenseStep();
}
opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/installer/Installer.java
@@ -63,6 +63,7 @@
import org.opends.quicksetup.ButtonName;
import org.opends.quicksetup.Constants;
import org.opends.quicksetup.Installation;
import org.opends.quicksetup.LicenseFile;
import org.opends.quicksetup.ProgressStep;
import org.opends.quicksetup.QuickSetupLog;
import org.opends.quicksetup.ReturnCode;
@@ -87,6 +88,7 @@
import org.opends.quicksetup.installer.ui.GlobalAdministratorPanel;
import org.opends.quicksetup.installer.ui.InstallReviewPanel;
import org.opends.quicksetup.installer.ui.InstallWelcomePanel;
import org.opends.quicksetup.installer.ui.InstallLicensePanel;
import org.opends.quicksetup.installer.ui.RemoteReplicationPortsPanel;
import org.opends.quicksetup.installer.ui.ServerSettingsPanel;
import org.opends.quicksetup.installer.ui.SuffixesToReplicatePanel;
@@ -192,6 +194,9 @@
   */
  public Installer() {
    lstSteps.add(WELCOME);
    if (LicenseFile.exists()) {
        lstSteps.add(LICENSE);
    }
    lstSteps.add(SERVER_SETTINGS);
    lstSteps.add(REPLICATION_OPTIONS);
    lstSteps.add(CREATE_GLOBAL_ADMINISTRATOR);
@@ -511,6 +516,8 @@
    QuickSetupStepPanel p = null;
    if (step == WELCOME) {
        p = new InstallWelcomePanel(this);
    } else if (step == LICENSE) {
        p = new InstallLicensePanel(this);
    } else if (step == SERVER_SETTINGS) {
        p = new ServerSettingsPanel(this);
    } else if (step == REPLICATION_OPTIONS) {
@@ -716,6 +723,9 @@
  {
    LinkedHashSet<WizardStep> orderedSteps = new LinkedHashSet<WizardStep>();
    orderedSteps.add(WELCOME);
    if (lstSteps.contains(LICENSE)) {
       orderedSteps.add(LICENSE);
    }
    orderedSteps.add(SERVER_SETTINGS);
    orderedSteps.add(REPLICATION_OPTIONS);
    orderedSteps.add(CREATE_GLOBAL_ADMINISTRATOR);
opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/installer/ui/InstallLicensePanel.java
New file
@@ -0,0 +1,170 @@
/*
 * 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
 *
 *
 *      Copyright 2006-2008 Sun Microsystems, Inc.
 */
package org.opends.quicksetup.installer.ui;
import org.opends.messages.Message;
import static org.opends.messages.QuickSetupMessages.*;
import java.awt.Component;
import java.awt.*;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.*;
import org.opends.quicksetup.ui.GuiApplication;
import org.opends.quicksetup.ui.QuickSetupStepPanel;
import org.opends.quicksetup.ui.UIFactory;
import org.opends.quicksetup.util.Utils;
import org.opends.quicksetup.Installation;
import org.opends.quicksetup.LicenseFile;
import org.opends.quicksetup.ButtonName;
/**
 * This panel is used to show a welcome message.
 *
 */
public class InstallLicensePanel extends QuickSetupStepPanel
{
  private static final long serialVersionUID = 6209217138897900860L;
  /**
   * Default constructor.
   * @param app Application this panel represents
   */
  public InstallLicensePanel(GuiApplication app)
  {
    super(app);
  }
  /**
   * {@inheritDoc}
   */
  protected Message getTitle()
  {
    return INFO_LICENSE_PANEL_TITLE.get();
  }
  /**
   * {@inheritDoc}
   */
  protected Message getInstructions()
  {
    /*
     * We can use org.opends.server.util.DynamicConstants without problems as it
     * has been added to quicksetup.jar during build time.
     */
    Message message;
    if (Utils.isWebStart())
    {
      String cmd = Utils.isWindows()? Installation.WINDOWS_SETUP_FILE_NAME:
          Installation.UNIX_SETUP_FILE_NAME;
      message = INFO_LICENSE_PANEL_WEBSTART_INSTRUCTIONS.get();
    }
    else
    {
      message = INFO_LICENSE_PANEL_OFFLINE_INSTRUCTIONS.get();
    }
    return message;
  }
  private TextArea detailsTextArea;
  private JCheckBox acceptCheck;
  /**
   * {@inheritDoc}
   */
  protected Component createInputPanel()
  {
    // No input in this panel
    JPanel panel = new JPanel(new GridBagLayout());
    panel.setOpaque(false);
    GridBagConstraints gbc = new GridBagConstraints();
    gbc.insets = UIFactory.getEmptyInsets();
    gbc.anchor = GridBagConstraints.NORTHWEST;
    gbc.gridwidth = GridBagConstraints.REMAINDER;
    gbc.weightx = 1.0;
    gbc.fill = GridBagConstraints.HORIZONTAL;
    JLabel l =
        UIFactory.makeJLabel(UIFactory.IconType.NO_ICON,
            INFO_LICENSE_DETAILS_LABEL.get(),
            UIFactory.TextStyle.SECONDARY_FIELD_VALID);
    gbc.insets = UIFactory.getEmptyInsets();
    panel.add(l, gbc);
    detailsTextArea = new TextArea();
    detailsTextArea.setBackground(
        UIFactory.CURRENT_STEP_PANEL_BACKGROUND);
    detailsTextArea.setText(LicenseFile.getText());
    gbc.insets = UIFactory.getEmptyInsets();
    gbc.fill = GridBagConstraints.BOTH;
    gbc.weighty = 1.0;
    panel.add(detailsTextArea, gbc);
    acceptCheck = UIFactory.makeJCheckBox(INFO_LICENSE_CLICK_LABEL.get(),
        null,
        UIFactory.TextStyle.SECONDARY_FIELD_VALID);
    acceptCheck.setOpaque(false);
    acceptCheck.setSelected(false);
    gbc.insets = UIFactory.getEmptyInsets();
    gbc.fill = GridBagConstraints.BOTH;
    gbc.weighty = 0.0;
    panel.add(acceptCheck, gbc);
    addActionListeners();
    return panel;
  }
  /**
   * Adds the required action listeners to the fields.
   */
  private void addActionListeners()
  {
    final ActionListener l = new ActionListener()
    {
      public void actionPerformed(ActionEvent e)
      {
        // Enable or disable Next button as user clicks approval button
        getQuickSetup().getDialog().setButtonEnabled(
            ButtonName.NEXT, acceptCheck.isSelected());
        // Save approval status for navigation
        LicenseFile.setApproval(acceptCheck.isSelected());
      }
    };
    acceptCheck.addActionListener(l);
  }
}
opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/ui/ButtonsPanel.java
@@ -32,6 +32,7 @@
import org.opends.quicksetup.ButtonName;
import org.opends.quicksetup.WizardStep;
import org.opends.quicksetup.LicenseFile;
import org.opends.quicksetup.event.ButtonActionListener;
import org.opends.quicksetup.event.ButtonEvent;
@@ -121,6 +122,11 @@
    // is only enabled once progress has finished or cancelled.
    closeButton.setVisible(step.isProgressStep() || step.isFinishedStep());
    closeButton.setEnabled(application.getCurrentProgressStep().isLast());
    // The next button is always enabled in all steps except the license step.
    // In that step, the next button will be enabled only if the user has
    // approved the license
    nextButton.setEnabled(!step.isLicenseStep() || LicenseFile.getApproval());
  }
  /**
opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/upgrader/UpgradeWizardStep.java
@@ -82,6 +82,14 @@
  }
  /**
   * {@inheritDoc}
   */
  public boolean isLicenseStep() {
    // Irrelevant here
    return false;
  }
  /**
   * Returns an String representation of this object.
   * @return an String representation of this object.  This method is
   * overwritten in order to be able to use this objects as keys in Maps and