/* * 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 2007 Sun Microsystems, Inc. */ package org.opends.quicksetup.ui; import org.opends.quicksetup.*; import javax.swing.*; import java.awt.event.WindowEvent; import java.util.Set; import java.util.logging.Logger; /** * This class represents an application with a wizard GUI that can be run in the * context of QuickSetup. Examples of applications might be 'installer', * 'uninstaller' and 'upgrader'. */ public abstract class GuiApplication extends Application { static private final Logger LOG = Logger.getLogger(GuiApplication.class.getName()); /** The currently displayed wizard step. */ private WizardStep displayedStep; /** * Constructs an instance of an application. Subclasses * of this application must have a default constructor. */ public GuiApplication() { this.displayedStep = getFirstWizardStep(); } /** * Gets the frame title of the GUI application that will be used * in some operating systems. * @return internationalized String representing the frame title */ abstract public String getFrameTitle(); /** * Returns the initial wizard step. * @return Step representing the first step to show in the wizard */ public abstract WizardStep getFirstWizardStep(); /** * Called by the quicksetup controller when the user advances to * a new step in the wizard. Applications are expected to manipulate * the QuickSetupDialog to reflect the current step. * * @param step Step indicating the new current step * @param userData UserData representing the data specified by the user * @param dlg QuickSetupDialog hosting the wizard */ public void setDisplayedWizardStep(WizardStep step, UserData userData, QuickSetupDialog dlg) { this.displayedStep = step; // First call the panels to do the required updates on their layout dlg.setDisplayedStep(step, userData); setWizardDialogState(dlg, userData, step); } /** * Called when the user advances to new step in the wizard. Applications * are expected to manipulate the QuickSetupDialog to reflect the current * step. * @param dlg QuickSetupDialog hosting the wizard * @param userData UserData representing the data specified by the user * @param step Step indicating the new current step */ protected abstract void setWizardDialogState(QuickSetupDialog dlg, UserData userData, WizardStep step); /** * Returns the tab formatted. * @return the tab formatted. */ protected String getTab() { return formatter.getTab(); } /** * Called by the controller when the window is closing. The application * can take application specific actions here. * @param dlg QuickSetupDialog that will be closing * @param evt The event from the Window indicating closing */ abstract public void windowClosing(QuickSetupDialog dlg, WindowEvent evt); /** * This method is called when we detected that there is something installed * we inform of this to the user and the user wants to proceed with the * installation destroying the contents of the data and the configuration * in the current installation. */ public void forceToDisplay() { // This is really only appropriate for Installer. // The default implementation is to do nothing. // The Installer application overrides this with // whatever it needs. } /** * Get the name of the button that will receive initial focus. * @return ButtonName of the button to receive initial focus */ abstract public ButtonName getInitialFocusButtonName(); /** * Creates the main panel for the wizard dialog. * @param dlg QuickSetupDialog used * @return JPanel frame panel */ public JPanel createFramePanel(QuickSetupDialog dlg) { return new FramePanel(dlg.getStepsPanel(), dlg.getCurrentStepPanel(), dlg.getButtonsPanel()); } /** * Returns the set of wizard steps used in this application's wizard. * @return Set of Step objects representing wizard steps */ abstract public Set getWizardSteps(); /** * Creates a wizard panel given a specific step. * @param step for which a panel representation should be created * @return QuickSetupStepPanel for representing the step */ abstract public QuickSetupStepPanel createWizardStepPanel(WizardStep step); /** * Gets the next step in the wizard given a current step. * @param step Step the current step * @return Step the next step */ abstract public WizardStep getNextWizardStep(WizardStep step); /** * Gets the previous step in the wizard given a current step. * @param step Step the current step * @return Step the previous step */ abstract public WizardStep getPreviousWizardStep(WizardStep step); /** * Indicates whether or not the user is allowed to return to a previous * step from step. * @param step WizardStep for which the the return value indicates whether * or not the user can return to a previous step * @return boolean where true indicates the user can return to a previous * step from step */ public boolean canGoBack(WizardStep step) { return !getFirstWizardStep().equals(step); } /** * Indicates whether or not the user is allowed to move to a new * step from step. * @param step WizardStep for which the the return value indicates whether * or not the user can move to a new step * @return boolean where true indicates the user can move to a new * step from step */ public boolean canGoForward(WizardStep step) { return getNextWizardStep(step) != null; } /** * Inidicates whether or not the user is allowed to finish the wizard from * step. * @param step WizardStep for which the the return value indicates whether * or not the user can finish the wizard * @return boolean where true indicates the user can finish the wizard */ public boolean canFinish(WizardStep step) { return getNextWizardStep(step) != null; } /** * Inidicates whether or not the user is allowed to quit the wizard from * step. * @param step WizardStep for which the the return value indicates whether * or not the user can quit the wizard * @return boolean where true indicates the user can quit the wizard */ public boolean canQuit(WizardStep step) { return false; } /** * Inidicates whether or not the user is allowed to close the wizard from * step. * @param step WizardStep for which the the return value indicates whether * or not the user can close the wizard * @return boolean where true indicates the user can close the wizard */ public boolean canClose(WizardStep step) { return false; } /** * Inidicates whether or not the user is allowed to cancel the wizard from * step. * @param step WizardStep for which the the return value indicates whether * or not the user can cancel the wizard * @return boolean where true indicates the user can cancel the wizard */ public boolean canCancel(WizardStep step) { return false; } /** * Called when the user has clicked the 'previous' button. * @param cStep WizardStep at which the user clicked the previous button * @param qs QuickSetup controller */ public abstract void previousClicked(WizardStep cStep, QuickSetup qs); /** * Called when the user has clicked the 'finish' button. * @param cStep WizardStep at which the user clicked the previous button * @param qs QuickSetup controller */ public abstract void finishClicked(final WizardStep cStep, final QuickSetup qs); /** * Called when the user has clicked the 'next' button. * @param cStep WizardStep at which the user clicked the next button * @param qs QuickSetup controller */ public abstract void nextClicked(WizardStep cStep, QuickSetup qs); /** * Called when the user has clicked the 'close' button. * @param cStep WizardStep at which the user clicked the close button * @param qs QuickSetup controller */ public abstract void closeClicked(WizardStep cStep, QuickSetup qs); /** * Called when the user has clicked the 'cancel' button. * @param cStep WizardStep at which the user clicked the cancel button * @param qs QuickSetup controller */ public abstract void cancelClicked(WizardStep cStep, QuickSetup qs); /** * Called when the user has clicked the 'quit' button. * @param step WizardStep at which the user clicked the quit button * @param qs QuickSetup controller */ abstract public void quitClicked(WizardStep step, QuickSetup qs); /** * Called whenever this application should update its user data from * values found in QuickSetup. * @param cStep current wizard step * @param qs QuickSetup controller * @throws org.opends.quicksetup.UserDataException if there is a problem with * the data */ public abstract void updateUserData(WizardStep cStep, QuickSetup qs) throws UserDataException; /** * Gets the key for the close button's tool tip text. * @return String key of the text in the resource bundle */ public String getCloseButtonToolTip() { return "close-button-tooltip"; } /** * Gets the key for the finish button's tool tip text. * @return String key of the text in the resource bundle */ public String getFinishButtonToolTip() { return "finish-button-tooltip"; } /** * Gets the key for the finish button's label. * @return String key of the text in the resource bundle */ public String getFinishButtonLabel() { return "finish-button-label"; } }