jmol update
[jalview.git] / src / jalview / ext / jmol / JalviewJmolBinding.java
index 916579f..3bac3bc 100644 (file)
@@ -43,7 +43,8 @@ import org.jmol.viewer.Viewer;
 import jalview.schemes.*;
 
 public abstract class JalviewJmolBinding implements StructureListener,
-        JmolStatusListener, SequenceStructureBinding, JmolSelectionListener, ComponentListener
+        JmolStatusListener, SequenceStructureBinding,
+        JmolSelectionListener, ComponentListener
 
 {
   /**
@@ -79,6 +80,7 @@ public abstract class JalviewJmolBinding implements StructureListener,
   Vector atomsPicked = new Vector();
 
   public Vector chainNames;
+
   Hashtable chainFile;
 
   /**
@@ -212,8 +214,8 @@ public abstract class JalviewJmolBinding implements StructureListener,
         mlength = lbl.indexOf(":", p);
       } while (p < mlength && mlength < (lbl.length() - 2));
       // TODO: lookup each pdb id and recover proper model number for it.
-      cmd.append(":" +  lbl.substring(mlength + 1) + " /"
-              + (1+getModelNum((String)chainFile.get(lbl))) + " or ");
+      cmd.append(":" + lbl.substring(mlength + 1) + " /"
+              + (1 + getModelNum((String) chainFile.get(lbl))) + " or ");
     }
     if (cmd.length() > 0)
       cmd.setLength(cmd.length() - 4);
@@ -231,8 +233,15 @@ public abstract class JalviewJmolBinding implements StructureListener,
     viewer.setJmolStatusListener(null);
     lastCommand = null;
     viewer = null;
+    releaseUIResources();
   }
 
+  /**
+   * called by JalviewJmolbinding after closeViewer is called - release any
+   * resources and references so they can be garbage collected.
+   */
+  protected abstract void releaseUIResources();
+
   public void colourByChain()
   {
     colourBySequence = false;
@@ -545,7 +554,7 @@ public abstract class JalviewJmolBinding implements StructureListener,
 
               Color col = sr.getResidueBoxColour(sequence[pdbfnum][s], r);
 
-              if (showFeatures && fr!=null)
+              if (showFeatures && fr != null)
                 col = fr.findFeatureColour(col, sequence[pdbfnum][s], r);
               String newSelcom = (mapping[m].getChain() != " " ? ":"
                       + mapping[m].getChain() : "")
@@ -1319,7 +1328,7 @@ public abstract class JalviewJmolBinding implements StructureListener,
    * @param codeBase
    * @param commandOptions
    */
-  public void allocateViewer(Component renderPanel, boolean jmolfileio,
+  public void allocateViewer(Container renderPanel, boolean jmolfileio,
           String htmlName, URL documentBase, URL codeBase,
           String commandOptions)
   {
@@ -1342,7 +1351,7 @@ public abstract class JalviewJmolBinding implements StructureListener,
    * @param buttonsToShow
    *          - buttons to show on the console, in ordr
    */
-  public void allocateViewer(Component renderPanel, boolean jmolfileio,
+  public void allocateViewer(Container renderPanel, boolean jmolfileio,
           String htmlName, URL documentBase, URL codeBase,
           String commandOptions, final Container consolePanel,
           String buttonsToShow)
@@ -1356,9 +1365,8 @@ public abstract class JalviewJmolBinding implements StructureListener,
     if (consolePanel != null)
     {
       consolePanel.addComponentListener(this);
-      
-    }
 
+    }
 
   }
 
@@ -1367,30 +1375,29 @@ public abstract class JalviewJmolBinding implements StructureListener,
 
   protected org.jmol.api.JmolAppConsoleInterface console = null;
 
-@Override
-public void componentResized(ComponentEvent e)
-{
-  
-}
+  @Override
+  public void componentResized(ComponentEvent e)
+  {
 
-@Override
-public void componentMoved(ComponentEvent e)
-{
-  
-}
+  }
 
-@Override
-public void componentShown(ComponentEvent e)
-{
-  showConsole(true);
-}
+  @Override
+  public void componentMoved(ComponentEvent e)
+  {
 
-@Override
-public void componentHidden(ComponentEvent e)
-{
-  showConsole(false);
-}
+  }
 
+  @Override
+  public void componentShown(ComponentEvent e)
+  {
+    showConsole(true);
+  }
+
+  @Override
+  public void componentHidden(ComponentEvent e)
+  {
+    showConsole(false);
+  }
 
   public void setLoadingFromArchive(boolean loadingFromArchive)
   {