opendj-server-legacy/src/main/java/org/opends/quicksetup/Application.java
@@ -41,6 +41,7 @@ import org.opends.admin.ads.util.ServerLoader; import org.opends.quicksetup.event.ProgressNotifier; import org.opends.quicksetup.event.ProgressUpdateListener; import org.opends.quicksetup.ui.GuiApplication; import org.opends.quicksetup.util.ProgressMessageFormatter; import org.opends.quicksetup.util.UIKeyStore; import org.opends.quicksetup.util.Utils; @@ -77,6 +78,49 @@ protected TempLogFile tempLogFile; /** * Creates an application by instantiating the Application class * denoted by the System property * <code>org.opends.quicksetup.Application.class</code>. * @return Application object that was newly instantiated * @throws RuntimeException if there was a problem * creating the new Application object */ public static GuiApplication create() throws RuntimeException { GuiApplication app; String appClassName = System.getProperty("org.opends.quicksetup.Application.class"); if (appClassName != null) { Class<?> appClass = null; try { appClass = Class.forName(appClassName); app = (GuiApplication) appClass.newInstance(); } catch (ClassNotFoundException e) { logger.info(LocalizableMessage.raw("error creating quicksetup application", e)); String msg = "Application class " + appClass + " not found"; throw new RuntimeException(msg, e); } catch (IllegalAccessException e) { logger.info(LocalizableMessage.raw("error creating quicksetup application", e)); String msg = "Could not access class " + appClass; throw new RuntimeException(msg, e); } catch (InstantiationException e) { logger.info(LocalizableMessage.raw("error creating quicksetup application", e)); String msg = "Error instantiating class " + appClass; throw new RuntimeException(msg, e); } catch (ClassCastException e) { String msg = "The class indicated by the system property " + "'org.opends.quicksetup.Application.class' must " + " must be of type Application"; throw new RuntimeException(msg, e); } } else { String msg = "System property 'org.opends.quicksetup.Application.class'" + " must specify class quicksetup application"; throw new RuntimeException(msg); } return app; } /** * Sets this instances user data. * @param userData UserData this application will use * when executing opendj-server-legacy/src/main/java/org/opends/quicksetup/ui/QuickSetup.java
@@ -33,11 +33,13 @@ import org.forgerock.i18n.LocalizableMessage; import org.forgerock.i18n.LocalizableMessageBuilder; import org.forgerock.i18n.slf4j.LocalizedLogger; import org.opends.quicksetup.Application; import org.opends.quicksetup.CurrentInstallStatus; import org.opends.quicksetup.Installation; import org.opends.quicksetup.ProgressDescriptor; import org.opends.quicksetup.ProgressStep; import org.opends.quicksetup.Step; import org.opends.quicksetup.TempLogFile; import org.opends.quicksetup.UserDataCertificateException; import org.opends.quicksetup.UserDataConfirmationException; import org.opends.quicksetup.UserDataException; @@ -47,6 +49,8 @@ import org.opends.quicksetup.event.ProgressUpdateEvent; import org.opends.quicksetup.event.ProgressUpdateListener; import org.opends.quicksetup.util.BackgroundTask; import org.opends.quicksetup.util.HtmlProgressMessageFormatter; import org.opends.quicksetup.util.ProgressMessageFormatter; import org.opends.server.util.SetupUtils; /** @@ -81,6 +85,56 @@ private static final String MAC_APPLICATIONS_OPENER = "/usr/bin/open"; /** * This method creates the install/uninstall dialogs and to check the current * install status. This method must be called outside the event thread because * it can perform long operations which can make the user think that the UI is * blocked. * * @param tempLogFile * temporary log file where messages will be logged. * @param args * for the moment this parameter is not used but we keep it in order * to (in case of need) pass parameters through the command line. */ public void initialize(final TempLogFile tempLogFile, String[] args) { ProgressMessageFormatter formatter = new HtmlProgressMessageFormatter(); installStatus = new CurrentInstallStatus(); application = Application.create(); application.setProgressMessageFormatter(formatter); application.setCurrentInstallStatus(installStatus); application.setTempLogFile(tempLogFile); if (args != null) { application.setUserArguments(args); } else { application.setUserArguments(new String[] {}); } try { initLookAndFeel(); } catch (Throwable t) { // This is likely a bug. t.printStackTrace(); } /* In the calls to setCurrentStep the dialog will be created */ setCurrentStep(application.getFirstWizardStep()); } /** This method displays the setup dialog. This method must be called from the event thread. */ public void display() { getDialog().packAndShow(); } /** * ButtonActionListener implementation. It assumes that we are called in the * event thread. * @@ -562,6 +616,12 @@ getDialog().displayFieldInvalid(fieldName, invalid); } /** A method to initialize the look and feel. */ private void initLookAndFeel() throws Throwable { UIFactory.initialize(); } /** * A methods that creates an ProgressDescriptor based on the value of a * ProgressUpdateEvent. opendj-server-legacy/src/main/java/org/opends/quicksetup/ui/QuickSetupDialog.java
@@ -38,6 +38,8 @@ import org.opends.quicksetup.WizardStep; import org.opends.quicksetup.event.ButtonActionListener; import org.opends.quicksetup.event.ButtonEvent; import org.opends.quicksetup.event.MinimumSizeComponentListener; /** * This class represents the dialog used by quicksetup applications. * @@ -94,6 +96,20 @@ Utilities.setFrameIcon(frame); } /** Packs and displays this dialog. */ public void packAndShow() { frame.pack(); int minWidth = (int) frame.getPreferredSize().getWidth(); int minHeight = (int) frame.getPreferredSize().getHeight(); Utilities.centerOnScreen(frame); setFocusOnButton(application.getInitialFocusButtonName()); frame.addComponentListener(new MinimumSizeComponentListener(frame, minWidth, minHeight)); frame.setVisible(true); } /** * 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 opendj-server-legacy/src/main/java/org/opends/quicksetup/ui/UIFactory.java
@@ -53,6 +53,7 @@ import javax.swing.text.html.HTMLEditorKit; import org.forgerock.i18n.LocalizableMessage; import org.forgerock.i18n.slf4j.LocalizedLogger; /** * This class provides constants an methods to create Swing objects and to @@ -63,7 +64,9 @@ */ public class UIFactory { private static boolean initialized; private static String parentPackagePath; private static final LocalizedLogger logger = LocalizedLogger.getLoggerForThisClass(); /** Specifies the horizontal insets between buttons. */ public static final int HORIZONTAL_INSET_BETWEEN_BUTTONS = 5; @@ -416,6 +419,33 @@ } /** * This method initialize the look and feel and UI settings specific to quick * setup. * * @throws Throwable * if there is a problem initializing the look and feel. */ public static void initialize() throws Throwable { if (!initialized) { try { UIManager.put("OptionPane.background", getColor(INFO_OPTIONPANE_BACKGROUND_COLOR.get())); UIManager.put("Panel.background", getColor(INFO_PANEL_BACKGROUND_COLOR.get())); UIManager.put("ComboBox.background", getColor(INFO_COMBOBOX_BACKGROUND_COLOR.get())); } catch (Throwable t) { // This might occur when we do not get the display logger.warn(LocalizableMessage.raw("Error updating UIManager: " + t, t)); } initializeLookAndFeel(); initialized = true; } } /** * Creates a new JPanel. * * @return JPanel newly created