From 06ec8c88556b02782c7b91a233de91eaf4a1439d Mon Sep 17 00:00:00 2001
From: jvergara <jvergara@localhost>
Date: Tue, 09 Jun 2009 12:28:05 +0000
Subject: [PATCH] Fix for issue 3550 (Consider making the control panel able to manage remote servers)

---
 opends/src/guitools/org/opends/guitools/controlpanel/ui/RestorePanel.java |   92 +++++++++++++++++++++++++++++++++++++++------
 1 files changed, 79 insertions(+), 13 deletions(-)

diff --git a/opends/src/guitools/org/opends/guitools/controlpanel/ui/RestorePanel.java b/opends/src/guitools/org/opends/guitools/controlpanel/ui/RestorePanel.java
index 7b712ae..ff55574 100644
--- a/opends/src/guitools/org/opends/guitools/controlpanel/ui/RestorePanel.java
+++ b/opends/src/guitools/org/opends/guitools/controlpanel/ui/RestorePanel.java
@@ -38,6 +38,8 @@
 import java.util.Set;
 import java.util.TreeSet;
 
+import javax.swing.JLabel;
+import javax.swing.JTextField;
 import javax.swing.SwingUtilities;
 import javax.swing.event.ListSelectionEvent;
 import javax.swing.event.ListSelectionListener;
@@ -45,6 +47,7 @@
 import org.opends.guitools.controlpanel.datamodel.BackendDescriptor;
 import org.opends.guitools.controlpanel.datamodel.BackupDescriptor;
 import org.opends.guitools.controlpanel.datamodel.ControlPanelInfo;
+import org.opends.guitools.controlpanel.datamodel.ServerDescriptor;
 import org.opends.guitools.controlpanel.event.BackupCreatedEvent;
 import org.opends.guitools.controlpanel.event.BackupCreatedListener;
 import org.opends.guitools.controlpanel.event.ConfigurationChangeEvent;
@@ -62,6 +65,8 @@
 {
   private static final long serialVersionUID = -205585323128518051L;
   private ListSelectionListener listener;
+  private JLabel lBackupID;
+  private JTextField backupID;
 
   /**
    * Constructor of the panel.
@@ -140,9 +145,22 @@
    */
   public void configurationChanged(ConfigurationChangeEvent ev)
   {
+    final ServerDescriptor desc = ev.getNewDescriptor();
+    SwingUtilities.invokeLater(new Runnable()
+    {
+      /**
+       * {@inheritDoc}
+       */
+      public void run()
+      {
+        lBackupID.setVisible(!desc.isLocal());
+        backupID.setVisible(!desc.isLocal());
+      }
+    });
     super.configurationChanged(ev);
-    updateErrorPaneAndOKButtonIfAuthRequired(getInfo().getServerDescriptor(),
-        INFO_CTRL_PANEL_AUTHENTICATION_REQUIRED_FOR_RESTORE.get());
+    updateErrorPaneAndOKButtonIfAuthRequired(desc,
+        isLocal() ? INFO_CTRL_PANEL_AUTHENTICATION_REQUIRED_FOR_RESTORE.get() :
+      INFO_CTRL_PANEL_CANNOT_CONNECT_TO_REMOTE_DETAILS.get(desc.getHostname()));
   }
 
   /**
@@ -194,6 +212,24 @@
 
     super.createLayout(gbc);
 
+    gbc.insets.top = 10;
+    gbc.gridx = 0;
+    gbc.gridy ++;
+    gbc.insets.left = 0;
+    gbc.gridwidth = 1;
+    lBackupID = Utilities.createPrimaryLabel(
+        INFO_CTRL_PANEL_BACKUP_ID_LABEL.get());
+    add(lBackupID, gbc);
+    backupID = Utilities.createMediumTextField();
+    gbc.weightx = 0.0;
+    gbc.gridx = 1;
+    gbc.insets.left = 10;
+    gbc.insets.right = 40;
+    gbc.fill = GridBagConstraints.HORIZONTAL;
+    gbc.anchor = GridBagConstraints.WEST;
+    gbc.gridwidth = 2;
+    add(backupID, gbc);
+
     listener = new ListSelectionListener()
     {
       public void valueChanged(ListSelectionEvent ev)
@@ -203,6 +239,8 @@
       }
     };
     backupList.getSelectionModel().addListSelectionListener(listener);
+
+    addBottomGlue(gbc);
   }
 
   /**
@@ -220,24 +258,44 @@
   {
     setPrimaryValid(lPath);
     setPrimaryValid(lAvailableBackups);
+    setPrimaryValid(lBackupID);
 
     final LinkedHashSet<Message> errors = new LinkedHashSet<Message>();
 
     BackupDescriptor backup = getSelectedBackup();
 
-    boolean selected = backupList.isVisible() && (backup != null);
-    if (!selected)
+    if (isLocal())
     {
-      if (backupList.getRowCount() == 0)
+      boolean selected = backupList.isVisible() && (backup != null);
+      if (!selected)
       {
+        if (backupList.getRowCount() == 0)
+        {
+          setPrimaryInvalid(lPath);
+          errors.add(ERR_CTRL_PANEL_NO_PARENT_BACKUP_TO_VERIFY.get());
+        }
+        else
+        {
+          errors.add(ERR_CTRL_PANEL_REQUIRED_BACKUP_TO_VERIFY.get());
+        }
+        setPrimaryInvalid(lAvailableBackups);
+      }
+    }
+    else
+    {
+      String parentPath = parentDirectory.getText();
+      if ((parentPath == null) || (parentPath.trim().equals("")))
+      {
+        errors.add(ERR_CTRL_PANEL_NO_BACKUP_PATH_PROVIDED.get());
         setPrimaryInvalid(lPath);
-        errors.add(ERR_CTRL_PANEL_NO_PARENT_BACKUP_TO_VERIFY.get());
       }
-      else
+
+      String id = backupID.getText();
+      if ((id == null) || (id.trim().equals("")))
       {
-        errors.add(ERR_CTRL_PANEL_REQUIRED_BACKUP_TO_VERIFY.get());
+        errors.add(ERR_CTRL_PANEL_NO_BACKUP_ID_PROVIDED.get());
+        setPrimaryInvalid(lBackupID);
       }
-      setPrimaryInvalid(lAvailableBackups);
     }
 
     if (errors.isEmpty())
@@ -312,9 +370,17 @@
     {
       super(info, dlg);
       this.verify = verify;
-      BackupDescriptor backup = getSelectedBackup();
-      dir = backup.getPath().getAbsolutePath();
-      backupID = backup.getID();
+      if (isLocal())
+      {
+        BackupDescriptor backup = getSelectedBackup();
+        dir = backup.getPath().getAbsolutePath();
+        backupID = backup.getID();
+      }
+      else
+      {
+        dir = parentDirectory.getText();
+        backupID = RestorePanel.this.backupID.getText();
+      }
       backendSet = new HashSet<String>();
       for (BackendDescriptor backend : info.getServerDescriptor().getBackends())
       {
@@ -355,7 +421,7 @@
         Collection<Message> incompatibilityReasons)
     {
       boolean canLaunch = true;
-      if (state == State.RUNNING)
+      if (state == State.RUNNING && runningOnSameServer(taskToBeLaunched))
       {
         // All the operations are incompatible if they apply to this
         // backend.

--
Gitblit v1.10.0