From c9d828643471890c2812f7d959a98ea8cb135fb8 Mon Sep 17 00:00:00 2001
From: kenneth_suter <kenneth_suter@localhost>
Date: Mon, 02 Apr 2007 15:07:10 +0000
Subject: [PATCH] further refactorings to delegate application logic to Application classes in addition to basic upgrade tool implementation classes and scripts
---
opends/src/quicksetup/org/opends/quicksetup/installer/Installer.java | 192 +++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 191 insertions(+), 1 deletions(-)
diff --git a/opends/src/quicksetup/org/opends/quicksetup/installer/Installer.java b/opends/src/quicksetup/org/opends/quicksetup/installer/Installer.java
index d4a66e1..b9690c0 100644
--- a/opends/src/quicksetup/org/opends/quicksetup/installer/Installer.java
+++ b/opends/src/quicksetup/org/opends/quicksetup/installer/Installer.java
@@ -26,16 +26,23 @@
*/
package org.opends.quicksetup.installer;
+import static org.opends.quicksetup.Step.WELCOME;
+
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Map;
+import java.util.Set;
+import java.util.EnumSet;
+import java.awt.event.WindowEvent;
-import org.opends.quicksetup.ui.UIFactory;
+import org.opends.quicksetup.ui.*;
import org.opends.quicksetup.util.Utils;
import org.opends.quicksetup.*;
import org.opends.server.util.SetupUtils;
+import javax.swing.*;
+
/**
* This is an abstract class that is in charge of actually performing the
@@ -55,12 +62,121 @@
*/
public abstract class Installer extends Application {
+ /* Indicates that we've detected that there is something installed */
+ boolean forceToDisplaySetup = false;
+
/**
* An static String that contains the class name of ConfigFileHandler.
*/
protected static final String CONFIG_CLASS_NAME =
"org.opends.server.extensions.ConfigFileHandler";
+ /**
+ * {@inheritDoc}
+ */
+ public void forceToDisplay() {
+ forceToDisplaySetup = true;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public ButtonName getInitialFocusButtonName() {
+ ButtonName name = null;
+ if (!installStatus.isInstalled() || forceToDisplaySetup)
+ {
+ name = ButtonName.NEXT;
+ } else
+ {
+ if (installStatus.canOverwriteCurrentInstall())
+ {
+ name = ButtonName.CONTINUE_INSTALL;
+ }
+ else
+ {
+ name = ButtonName.QUIT;
+ }
+ }
+ return name;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public JPanel createFramePanel(QuickSetupDialog dlg) {
+ JPanel p;
+ if (installStatus.isInstalled() && !forceToDisplaySetup) {
+ p = dlg.getInstalledPanel();
+ } else {
+ p = new FramePanel(dlg.getStepsPanel(),
+ dlg.getCurrentStepPanel(),
+ dlg.getButtonsPanel());
+ }
+ return p;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public Set<Step> getWizardSteps() {
+ return EnumSet.of(WELCOME,
+ Step.SERVER_SETTINGS,
+ Step.DATA_OPTIONS,
+ Step.REVIEW,
+ Step.PROGRESS);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public QuickSetupStepPanel createWizardStepPanel(Step step) {
+ QuickSetupStepPanel p = null;
+ switch (step) {
+ case WELCOME:
+ p = new InstallWelcomePanel();
+ break;
+ case SERVER_SETTINGS:
+ p = new ServerSettingsPanel(getUserData());
+ break;
+ case DATA_OPTIONS:
+ p = new DataOptionsPanel(getUserData());
+ break;
+ case REVIEW:
+ p = new ReviewPanel(getUserData());
+ break;
+ case PROGRESS:
+ p = new ProgressPanel();
+ break;
+ }
+ return p;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void windowClosing(QuickSetupDialog dlg, WindowEvent evt) {
+
+ if (installStatus.isInstalled() && forceToDisplaySetup) {
+ // Simulate a close button event
+ dlg.notifyButtonEvent(ButtonName.QUIT);
+ } else {
+ if (dlg.getDisplayedStep() == Step.PROGRESS) {
+ // Simulate a close button event
+ dlg.notifyButtonEvent(ButtonName.CLOSE);
+ } else {
+ // Simulate a quit button event
+ dlg.notifyButtonEvent(ButtonName.QUIT);
+ }
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public String getFrameTitle() {
+ return getMsg("frame-install-title");
+ }
+
/** Indicates the current progress step. */
protected InstallProgressStep status =
InstallProgressStep.NOT_STARTED;
@@ -68,12 +184,86 @@
/**
* {@inheritDoc}
*/
+ protected void setWizardDialogState(QuickSetupDialog dlg,
+ UserData userData,
+ Step step) {
+ if (!installStatus.isInstalled() || forceToDisplaySetup) {
+
+ // Set the default button for the frame
+ switch (step) {
+ case REVIEW:
+ dlg.setDefaultButton(ButtonName.FINISH);
+ break;
+
+ case PROGRESS:
+ dlg.setDefaultButton(ButtonName.CLOSE);
+ break;
+
+ default:
+ dlg.setDefaultButton(ButtonName.NEXT);
+ }
+
+ // Set the focus for the current step
+ switch (step) {
+ case WELCOME:
+ dlg.setFocusOnButton(ButtonName.NEXT);
+ break;
+
+ case SERVER_SETTINGS:
+ // The focus is set by the panel itself
+ break;
+
+ case DATA_OPTIONS:
+ // The focus is set by the panel itself
+ break;
+
+ case REVIEW:
+ dlg.setFocusOnButton(ButtonName.FINISH);
+ break;
+
+ case PROGRESS:
+ dlg.setFocusOnButton(ButtonName.CLOSE);
+ dlg.setButtonEnabled(ButtonName.CLOSE, false);
+ break;
+ }
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
public ProgressStep getStatus()
{
return status;
}
/**
+ * {@inheritDoc}
+ */
+ public Step getFirstWizardStep() {
+ return WELCOME;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public Step getNextWizardStep(Step step) {
+ Step nextStep = null;
+ if (step != null) {
+ if (step.equals(Step.WELCOME)) {
+ nextStep = Step.SERVER_SETTINGS;
+ } else if (step.equals(Step.SERVER_SETTINGS)) {
+ nextStep = Step.DATA_OPTIONS;
+ } else if (step.equals(Step.DATA_OPTIONS)) {
+ nextStep = Step.REVIEW;
+ } else if (step.equals(Step.REVIEW)) {
+ nextStep = Step.PROGRESS;
+ }
+ }
+ return nextStep;
+ }
+
+ /**
* Creates a template file based in the contents of the UserData object.
* This template file is used to generate automatically data. To generate
* the template file the code will basically take into account the value of
--
Gitblit v1.10.0