From b7eaa6fa023b868aa8154610c05801a94ed0afea Mon Sep 17 00:00:00 2001
From: jvergara <jvergara@localhost>
Date: Fri, 05 Jan 2007 14:04:45 +0000
Subject: [PATCH] 

---
 opends/src/quicksetup/org/opends/quicksetup/ui/QuickSetupDialog.java |   77 ++++++++++++++++++++++++++++----------
 1 files changed, 57 insertions(+), 20 deletions(-)

diff --git a/opends/src/quicksetup/org/opends/quicksetup/ui/QuickSetupDialog.java b/opends/src/quicksetup/org/opends/quicksetup/ui/QuickSetupDialog.java
index 13bd825..0adfe02 100644
--- a/opends/src/quicksetup/org/opends/quicksetup/ui/QuickSetupDialog.java
+++ b/opends/src/quicksetup/org/opends/quicksetup/ui/QuickSetupDialog.java
@@ -27,6 +27,7 @@
 
 package org.opends.quicksetup.ui;
 
+import java.awt.event.ComponentListener;
 import java.awt.event.WindowAdapter;
 import java.awt.event.WindowEvent;
 import java.util.HashSet;
@@ -87,6 +88,8 @@
   private HashSet<ButtonActionListener> buttonListeners =
       new HashSet<ButtonActionListener>();
 
+  private boolean forceToDisplaySetup;
+
   /**
    * Constructor of QuickSetupDialog.
    * @param defaultUserData the default values to be proposed to the user in
@@ -123,10 +126,10 @@
             // Simulate a quit button event
             notifyButtonEvent(ButtonName.QUIT);
           }
-        } else if (isInstalled())
+        } else if (isInstalled() && !forceToDisplaySetup)
         {
           // Simulate a close button event
-          notifyButtonEvent(ButtonName.CLOSE);
+          notifyButtonEvent(ButtonName.QUIT);
         } else
         {
           if (getDisplayedStep() == Step.PROGRESS)
@@ -166,12 +169,19 @@
     if (isUninstall())
     {
       setFocusOnButton(ButtonName.FINISH);
-    } else if (!isInstalled())
+    } else if (!isInstalled() || forceToDisplaySetup)
     {
       setFocusOnButton(ButtonName.NEXT);
     } else
     {
-      setFocusOnButton(ButtonName.QUIT);
+      if (installStatus.canOverwriteCurrentInstall())
+      {
+        setFocusOnButton(ButtonName.CONTINUE_INSTALL);
+      }
+      else
+      {
+        setFocusOnButton(ButtonName.QUIT);
+      }
     }
 
     frame.addComponentListener(new MinimumSizeComponentListener(frame,
@@ -181,6 +191,36 @@
   }
 
   /**
+   * 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 forceToDisplaySetup()
+  {
+    forceToDisplaySetup = true;
+    frame.getContentPane().removeAll();
+    frame.getContentPane().add(getFramePanel());
+    frame.pack();
+    Utils.centerOnScreen(frame);
+    setFocusOnButton(ButtonName.NEXT);
+    int minWidth = (int) frame.getPreferredSize().getWidth();
+    int minHeight = (int) frame.getPreferredSize().getHeight();
+
+    ComponentListener[] listeners = frame.getComponentListeners();
+    for (int i=0; i<listeners.length; i++)
+    {
+      if (listeners[i] instanceof MinimumSizeComponentListener)
+      {
+        frame.removeComponentListener(listeners[i]);
+      }
+    }
+    frame.addComponentListener(new MinimumSizeComponentListener(frame,
+        minWidth, minHeight));
+  }
+
+  /**
    * Displays the panel corresponding to the provided step.  The panel contents
    * are updated with the contents of the UserInstallData object.
    * @param step the step that we want to display.
@@ -221,7 +261,7 @@
         setButtonEnabled(ButtonName.CLOSE, false);
         break;
       }
-    } else if (!isInstalled())
+    } else if (!isInstalled() || forceToDisplaySetup)
     {
       // First call the panels to do the required updates on their layout
       getButtonsPanel().setDisplayedStep(step);
@@ -380,16 +420,11 @@
    */
   public void addButtonActionListener(ButtonActionListener l)
   {
-    if (isUninstall())
-    {
-      getButtonsPanel().addButtonActionListener(l);
-    } else if (isInstalled())
-    {
-      getInstalledPanel().addButtonActionListener(l);
-    } else
-    {
-      getButtonsPanel().addButtonActionListener(l);
-    }
+    getButtonsPanel().addButtonActionListener(l);
+    getInstalledPanel().addButtonActionListener(l);
+    getButtonsPanel().addButtonActionListener(l);
+    getCurrentStepPanel().addButtonActionListener(l);
+
     buttonListeners.add(l);
   }
 
@@ -402,7 +437,7 @@
     if (isUninstall())
     {
       getButtonsPanel().removeButtonActionListener(l);
-    } else if (isInstalled())
+    } else if (isInstalled() && !forceToDisplaySetup)
     {
       getInstalledPanel().removeButtonActionListener(l);
     } else
@@ -519,7 +554,7 @@
                 getButtonsPanel());
       }
       p = framePanel;
-    } else if (isInstalled())
+    } else if (isInstalled() && !forceToDisplaySetup)
     {
       p = getInstalledPanel();
     } else
@@ -598,11 +633,14 @@
     if (isUninstall())
     {
       button = getButtonsPanel().getButton(buttonName);
-    } else if (isInstalled())
+    } else if (isInstalled() && !forceToDisplaySetup)
     {
       if (buttonName == ButtonName.QUIT)
       {
         button = getInstalledPanel().getQuitButton();
+      } else if (buttonName == ButtonName.CONTINUE_INSTALL)
+      {
+        button = getInstalledPanel().getContinueInstallButton();
       } else
       {
         throw new IllegalStateException("Invalid button name " + buttonName
@@ -686,8 +724,7 @@
   {
     if (installedPanel == null)
     {
-      installedPanel =
-          new QuickSetupErrorPanel(installStatus.getInstallationMsg());
+      installedPanel = new QuickSetupErrorPanel(installStatus);
     }
     return installedPanel;
   }

--
Gitblit v1.10.0