If alignment is closed, then undo performed in visible window
[jalview.git] / src / jalview / gui / WebserviceInfo.java
index c8beeb1..b7d54d6 100755 (executable)
@@ -1,6 +1,6 @@
 /*
  * Jalview - A Sequence Alignment Editor and Viewer
- * Copyright (C) 2005 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle
+ * Copyright (C) 2006 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle
  *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU General Public License
@@ -63,7 +63,9 @@ public class WebserviceInfo extends GWebserviceInfo
     JInternalFrame frame;
     JTabbedPane subjobs=null;
     java.util.Vector jobPanes = null;
-    // tabbed or not
+    private boolean serviceCanMergeResults = false;
+    private boolean viewResultsImmediatly = true;
+  // tabbed or not
     public synchronized int addJobPane() {
       JScrollPane jobpane = new JScrollPane();
       JTextArea progressText = new JTextArea();
@@ -141,6 +143,8 @@ public class WebserviceInfo extends GWebserviceInfo
     {
         thisService = newservice;
         serviceIsCancellable = newservice.isCancellable();
+        frame.setClosable(!serviceIsCancellable);
+        serviceCanMergeResults = newservice.canMergeResults();
     }
 
     /**
@@ -354,22 +358,40 @@ public class WebserviceInfo extends GWebserviceInfo
         }
         else
         {
-            frame.setClosable(true);
             thisService.cancelJob();
         }
+        frame.setClosable(true);
     }
-
+    /**
+     * Set up GUI for user to get at results - and possibly automatically display
+     * them if viewResultsImmediatly is set.
+     */
     public void setResultsReady()
     {
       frame.setClosable(true);
       buttonPanel.remove(cancel);
       buttonPanel.add(showResultsNewFrame);
-      buttonPanel.add(mergeResults);
-      buttonPanel.setLayout(new GridLayout(2,1,5,5));
+      if (serviceCanMergeResults)
+      {
+        buttonPanel.add(mergeResults);
+        buttonPanel.setLayout(new GridLayout(2, 1, 5, 5));
+      }
       buttonPanel.validate();
       validate();
+      if (viewResultsImmediatly)
+        showResultsNewFrame.doClick();
     }
 
+  /**
+   * called when job has finished but no result objects can be passed back to user
+   */
+  public void setFinishedNoResults()
+  {
+    frame.setClosable(true);
+    buttonPanel.remove(cancel);
+    buttonPanel.validate();
+    validate();
+  }
 
   class AnimatedPanel extends JPanel implements Runnable
     {