Jalview 2.6 source licence
[jalview.git] / src / jalview / gui / AppJmolBinding.java
index d2efb93..38c9e70 100644 (file)
@@ -1,17 +1,41 @@
-/**
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer (Version 2.6)
+ * Copyright (C) 2010 J Procter, AM Waterhouse, G Barton, M Clamp, S Searle
  * 
+ * This file is part of Jalview.
+ * 
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License 
+ * as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
+ * 
+ * Jalview is distributed in the hope that it will be useful, but 
+ * WITHOUT ANY WARRANTY; without even the implied warranty 
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
+ * PURPOSE.  See the GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
  */
 package jalview.gui;
 
+import java.awt.Container;
+import java.awt.event.ComponentEvent;
+import java.awt.event.ComponentListener;
+import java.awt.event.ContainerEvent;
+import java.awt.event.ContainerListener;
 import java.util.BitSet;
 
+import javax.swing.JPanel;
+
 import jalview.bin.Cache;
 import jalview.datamodel.PDBEntry;
 import jalview.datamodel.SequenceI;
 
+import org.jmol.api.JmolAppConsoleInterface;
+import org.jmol.api.JmolViewer;
 import org.jmol.popup.JmolPopup;
+import org.openscience.jmol.app.jmolpanel.AppConsole;
 
-public class AppJmolBinding extends jalview.ext.jmol.JalviewJmolBinding
+public class AppJmolBinding extends jalview.ext.jmol.JalviewJmolBinding 
 {
 
   /**
@@ -53,19 +77,19 @@ public class AppJmolBinding extends jalview.ext.jmol.JalviewJmolBinding
 
   public void sendConsoleEcho(String strEcho)
   {
-    if (appJmolWindow.scriptWindow != null)
+    if (console != null)
     {
-      appJmolWindow.scriptWindow.sendConsoleEcho(strEcho);
+      console.sendConsoleEcho(strEcho);
     }
   }
 
   public void sendConsoleMessage(String strStatus)
   {
-    if (appJmolWindow.scriptWindow != null && strStatus != null)
+    if (console != null && strStatus != null)
     // && !strStatus.equals("Script completed"))
     // should we squash the script completed string ?
     {
-      appJmolWindow.scriptWindow.sendConsoleMessage(strStatus);
+      console.sendConsoleMessage(strStatus);
     }
   }
 
@@ -86,7 +110,11 @@ public class AppJmolBinding extends jalview.ext.jmol.JalviewJmolBinding
   public void refreshGUI()
   {
     // appJmolWindow.repaint();
-    appJmolWindow.updateTitleAndMenus();
+    javax.swing.SwingUtilities.invokeLater(new Runnable() {
+      public void run() {
+        appJmolWindow.updateTitleAndMenus();
+        appJmolWindow.revalidate();
+      }});
   }
 
   public void updateColours(Object source)
@@ -100,9 +128,10 @@ public class AppJmolBinding extends jalview.ext.jmol.JalviewJmolBinding
 
   public void notifyScriptTermination(String strStatus, int msWalltime)
   {
-    if (appJmolWindow.scriptWindow != null)
-      appJmolWindow.scriptWindow.notifyScriptTermination(strStatus,
-              msWalltime);
+    // todo - script termination doesn't happen ?
+    //if (console != null)
+      //console.notifyScriptTermination(strStatus,
+      //        msWalltime);
   }
 
   public void showUrl(String url)
@@ -130,6 +159,9 @@ public class AppJmolBinding extends jalview.ext.jmol.JalviewJmolBinding
 
   }
 
+  public void showConsole(boolean b) {
+    appJmolWindow.showConsole(b);
+  }
 
   /**
    * add the given sequences to the mapping scope for the given pdb file handle
@@ -150,4 +182,23 @@ public class AppJmolBinding extends jalview.ext.jmol.JalviewJmolBinding
     }
   }
 
-}
\ No newline at end of file
+  @Override
+  protected JmolAppConsoleInterface createJmolConsole(JmolViewer viewer2,
+          Container consolePanel, String buttonsToShow)
+  {
+    return new AppConsole(viewer, consolePanel, buttonsToShow);
+  }
+
+  @Override
+  protected void releaseUIResources()
+  {
+    appJmolWindow = null;
+    if (console!=null) {
+      try {
+        console.setVisible(false);
+      } catch (Error e) {} catch (Exception x) {};
+      console=null;
+    }
+    
+  }
+}