JAL-674 flag and proxy method to distinguish setMapping calls which create a mapping...
authorJim Procter <jprocter@dundee.ac.uk>
Thu, 30 Oct 2014 15:39:53 +0000 (15:39 +0000)
committerJim Procter <jprocter@dundee.ac.uk>
Thu, 30 Oct 2014 15:39:53 +0000 (15:39 +0000)
src/jalview/structure/StructureSelectionManager.java

index b38fa7c..449e133 100644 (file)
@@ -198,9 +198,33 @@ public class StructureSelectionManager
   }
 
   /**
+   * Import structure data and register a structure mapping for broadcasting
+   * colouring, mouseovers and selection events (convenience wrapper).
+   * 
+   * @param sequence
+   *          - one or more sequences to be mapped to pdbFile
+   * @param targetChains
+   *          - optional chain specification for mapping each sequence to pdb
+   *          (may be nill, individual elements may be nill)
+   * @param pdbFile
+   *          - structure data resource
+   * @param protocol
+   *          - how to resolve data from resource
+   * @return null or the structure data parsed as a pdb file
+   */
+  synchronized public MCview.PDBfile setMapping(SequenceI[] sequence,
+          String[] targetChains, String pdbFile, String protocol)
+  {
+    return setMapping(true, sequence, targetChains, pdbFile, protocol);
+  }
+
+  /**
    * create sequence structure mappings between each sequence and the given
    * pdbFile (retrieved via the given protocol).
    * 
+   * @param forStructureView
+   *          when true, record the mapping for use in mouseOvers
+   * 
    * @param sequence
    *          - one or more sequences to be mapped to pdbFile
    * @param targetChains
@@ -212,7 +236,8 @@ public class StructureSelectionManager
    *          - how to resolve data from resource
    * @return null or the structure data parsed as a pdb file
    */
-  synchronized public MCview.PDBfile setMapping(SequenceI[] sequence,
+  synchronized public MCview.PDBfile setMapping(boolean forStructureView,
+          SequenceI[] sequence,
           String[] targetChains, String pdbFile, String protocol)
   {
     /*
@@ -363,26 +388,30 @@ public class StructureSelectionManager
         index++;
       } while (index < maxChain.atoms.size());
 
-      if (mappings == null)
-      {
-        mappings = new StructureMapping[1];
-      }
-      else
-      {
-        StructureMapping[] tmp = new StructureMapping[mappings.length + 1];
-        System.arraycopy(mappings, 0, tmp, 0, mappings.length);
-        mappings = tmp;
-      }
-
       if (protocol.equals(jalview.io.AppletFormatAdapter.PASTE))
       {
         pdbFile = "INLINE" + pdb.id;
       }
-
-      mappings[mappings.length - 1] = new StructureMapping(sequence[s],
+      StructureMapping newMapping = new StructureMapping(sequence[s],
               pdbFile, pdb.id, maxChainId, mapping,
               mappingDetails.toString());
-      maxChain.transferResidueAnnotation(mappings[mappings.length - 1]);
+      if (forStructureView)
+      {
+
+        if (mappings == null)
+        {
+          mappings = new StructureMapping[1];
+        }
+        else
+        {
+          StructureMapping[] tmp = new StructureMapping[mappings.length + 1];
+          System.arraycopy(mappings, 0, tmp, 0, mappings.length);
+          mappings = tmp;
+        }
+
+        mappings[mappings.length - 1] = newMapping;
+      }
+      maxChain.transferResidueAnnotation(newMapping);
     }
     // ///////