JAL-1588 refactoring prior to 'save Chimera project'
[jalview.git] / src / jalview / gui / AppJmol.java
index 4dfd18a..90d3b15 100644 (file)
  */
 package jalview.gui;
 
-import jalview.api.structures.JalviewStructureDisplayI;
 import jalview.bin.Cache;
 import jalview.datamodel.Alignment;
 import jalview.datamodel.AlignmentI;
 import jalview.datamodel.ColumnSelection;
 import jalview.datamodel.PDBEntry;
 import jalview.datamodel.SequenceI;
-import jalview.ext.jmol.JalviewJmolBinding;
 import jalview.gui.ViewSelectionMenu.ViewSetProvider;
 import jalview.io.AppletFormatAdapter;
 import jalview.io.JalviewFileChooser;
@@ -42,6 +40,7 @@ import jalview.schemes.StrandColourScheme;
 import jalview.schemes.TaylorColourScheme;
 import jalview.schemes.TurnColourScheme;
 import jalview.schemes.ZappoColourScheme;
+import jalview.structures.models.AAStructureBindingModel;
 import jalview.util.MessageManager;
 import jalview.util.Platform;
 
@@ -61,7 +60,6 @@ import java.io.File;
 import java.io.FileOutputStream;
 import java.io.FileReader;
 import java.io.PrintWriter;
-import java.util.ArrayList;
 import java.util.Enumeration;
 import java.util.Vector;
 
@@ -79,7 +77,7 @@ import javax.swing.event.MenuEvent;
 import javax.swing.event.MenuListener;
 
 public class AppJmol extends GStructureViewer implements Runnable,
-        ViewSetProvider, JalviewStructureDisplayI
+        ViewSetProvider
 
 {
   AppJmolBinding jmb;
@@ -187,7 +185,7 @@ public class AppJmol extends GStructureViewer implements Runnable,
     }
     this.setBounds(bounds);
     initMenus();
-    viewId = viewid;
+    setViewId(viewid);
     // jalview.gui.Desktop.addInternalFrame(this, "Loading File",
     // bounds.width,bounds.height);
 
@@ -332,9 +330,10 @@ public class AppJmol extends GStructureViewer implements Runnable,
             final AppJmol topJmol = ((AppJmol) frames[i]);
             // JBPNOTE: this looks like a binding routine, rather than a gui
             // routine
-            for (int pe = 0; pe < topJmol.jmb.pdbentry.length; pe++)
+            for (int pe = 0; pe < topJmol.jmb.getPdbCount(); pe++)
             {
-              if (topJmol.jmb.pdbentry[pe].getFile().equals(alreadyMapped))
+              if (topJmol.jmb.getPdbEntry(pe).getFile()
+                      .equals(alreadyMapped))
               {
                 topJmol.jmb.addSequence(pe, seq);
                 topJmol.addAlignmentPanel(ap);
@@ -435,11 +434,6 @@ public class AppJmol extends GStructureViewer implements Runnable,
     openNewJmol(ap, pe, seqs);
   }
 
-  /**
-   * list of sequenceSet ids associated with the view
-   */
-  ArrayList<String> _aps = new ArrayList();
-
   public AlignmentPanel[] getAllAlignmentPanels()
   {
     AlignmentPanel[] t, list = new AlignmentPanel[0];
@@ -459,17 +453,6 @@ public class AppJmol extends GStructureViewer implements Runnable,
   }
 
   /**
-   * list of alignment panels to use for superposition
-   */
-  Vector<AlignmentPanel> _alignwith = new Vector<AlignmentPanel>();
-
-  /**
-   * list of alignment panels that are used for colouring structures by aligned
-   * sequences
-   */
-  Vector<AlignmentPanel> _colourwith = new Vector<AlignmentPanel>();
-
-  /**
    * set the primary alignmentPanel reference and add another alignPanel to the
    * list of ones to use for colouring and aligning
    * 
@@ -632,7 +615,7 @@ public class AppJmol extends GStructureViewer implements Runnable,
     {
       if (frame instanceof AppJmol)
       {
-        if (((AppJmol) frame).isLinkedWith(apanel))
+        if (((GStructureViewer) frame).isLinkedWith(apanel))
         {
           result.addElement(frame);
         }
@@ -768,14 +751,14 @@ public class AppJmol extends GStructureViewer implements Runnable,
       // TODO: replace with reference fetching/transfer code (validate PDBentry
       // as a DBRef?)
       jalview.ws.dbsources.Pdb pdbclient = new jalview.ws.dbsources.Pdb();
-      for (int pi = 0; pi < jmb.pdbentry.length; pi++)
+      for (int pi = 0; pi < jmb.getPdbCount(); pi++)
       {
-        String file = jmb.pdbentry[pi].getFile();
+        String file = jmb.getPdbEntry(pi).getFile();
         if (file == null)
         {
           // retrieve the pdb and store it locally
           AlignmentI pdbseq = null;
-          pdbid = jmb.pdbentry[pi].getId();
+          pdbid = jmb.getPdbEntry(pi).getId();
           long hdl = pdbid.hashCode() - System.currentTimeMillis();
           if (progressBar != null)
           {
@@ -783,7 +766,8 @@ public class AppJmol extends GStructureViewer implements Runnable,
           }
           try
           {
-            pdbseq = pdbclient.getSequenceRecords(pdbid = jmb.pdbentry[pi]
+            pdbseq = pdbclient.getSequenceRecords(pdbid = jmb.getPdbEntry(
+                    pi)
                     .getId());
           } catch (OutOfMemoryError oomerror)
           {
@@ -803,7 +787,7 @@ public class AppJmol extends GStructureViewer implements Runnable,
             // PDBEntry
             file = new File(((PDBEntry) pdbseq.getSequenceAt(0).getPDBId()
                     .elementAt(0)).getFile()).getAbsolutePath();
-            jmb.pdbentry[pi].setFile(file);
+            jmb.getPdbEntry(pi).setFile(file);
 
             files.append(" \"" + Platform.escapeString(file) + "\"");
           }
@@ -898,7 +882,7 @@ public class AppJmol extends GStructureViewer implements Runnable,
       // need to wait around until script has finished
       while (addingStructures ? lastnotify >= jmb.getLoadNotifiesHandled()
               : (jmb.isFinishedInit() && jmb.getPdbFile() != null && jmb
-                      .getPdbFile().length != jmb.pdbentry.length))
+                      .getPdbFile().length != jmb.getPdbCount()))
       {
         try
         {
@@ -977,9 +961,9 @@ public class AppJmol extends GStructureViewer implements Runnable,
     jalview.gui.CutAndPasteTransfer cap = new jalview.gui.CutAndPasteTransfer();
     try
     {
-      for (int pdbe = 0; pdbe < jmb.pdbentry.length; pdbe++)
+      for (int pdbe = 0; pdbe < jmb.getPdbCount(); pdbe++)
       {
-        cap.appendText(jmb.printMapping(jmb.pdbentry[pdbe].getFile()));
+        cap.appendText(jmb.printMapping(jmb.getPdbEntry(pdbe).getFile()));
         cap.appendText("\n");
       }
     } catch (OutOfMemoryError e)
@@ -1232,15 +1216,15 @@ public class AppJmol extends GStructureViewer implements Runnable,
                 + "...", 20, currentSize.height / 2);
         StringBuffer sb = new StringBuffer();
         int lines = 0;
-        for (int e = 0; e < jmb.pdbentry.length; e++)
+        for (int e = 0; e < jmb.getPdbCount(); e++)
         {
-          sb.append(jmb.pdbentry[e].getId());
-          if (e < jmb.pdbentry.length - 1)
+          sb.append(jmb.getPdbEntry(e).getId());
+          if (e < jmb.getPdbCount() - 1)
           {
             sb.append(",");
           }
 
-          if (e == jmb.pdbentry.length - 1 || sb.length() > 20)
+          if (e == jmb.getPdbCount() - 1 || sb.length() > 20)
           {
             lines++;
             g.drawString(sb.toString(), 20, currentSize.height / 2 - lines
@@ -1264,17 +1248,6 @@ public class AppJmol extends GStructureViewer implements Runnable,
     }
   }
 
-  String viewId = null;
-
-  public String getViewId()
-  {
-    if (viewId == null)
-    {
-      viewId = System.currentTimeMillis() + "." + this.hashCode();
-    }
-    return viewId;
-  }
-
   public void updateTitleAndMenus()
   {
     if (jmb.fileLoadingError != null && jmb.fileLoadingError.length() > 0)
@@ -1285,7 +1258,7 @@ public class AppJmol extends GStructureViewer implements Runnable,
     setChainMenuItems(jmb.chainNames);
 
     this.setTitle(jmb.getViewerTitle());
-    if (jmb.getPdbFile().length > 1 && jmb.sequence.length > 1)
+    if (jmb.getPdbFile().length > 1 && jmb.getSequence().length > 1)
     {
       viewerActionMenu.setVisible(true);
     }
@@ -1393,39 +1366,16 @@ public class AppJmol extends GStructureViewer implements Runnable,
     return ap;
   }
 
-  /**
-   * 
-   * @param ap2
-   * @return true if this Jmol instance is linked with the given alignPanel
-   */
-  public boolean isLinkedWith(AlignmentPanel ap2)
-  {
-    return _aps.contains(ap2.av.getSequenceSetId());
-  }
-
-  public boolean isUsedforaligment(AlignmentPanel ap2)
-  {
-
-    return (_alignwith != null) && _alignwith.contains(ap2);
-  }
-
-  public boolean isUsedforcolourby(AlignmentPanel ap2)
-  {
-    return (_colourwith != null) && _colourwith.contains(ap2);
-  }
-
-  /**
-   * 
-   * @return TRUE if the view is NOT being coloured by sequence associations.
-   */
-  public boolean isColouredByJmol()
+  @Override
+  public AAStructureBindingModel getBinding()
   {
-    return !jmb.isColourBySequence();
+    return this.jmb;
   }
 
-  public JalviewJmolBinding getBinding()
+  @Override
+  public String getStateInfo()
   {
-    return jmb;
+    return jmb == null ? null : jmb.viewer.getStateInfo();
   }
 
 }