JAL-2960 don’t override a swing method and create infinite recursion ;) toFront now...
[jalview.git] / src / jalview / gui / StructureViewer.java
index b7767fa..0c8354b 100644 (file)
@@ -49,6 +49,11 @@ public class StructureViewer
 
   StructureSelectionManager ssm;
 
+  /**
+   * decide if new structures are aligned to existing ones
+   */
+  private boolean superposeAdded = true;
+
   public enum ViewerType
   {
     JMOL, CHIMERA
@@ -127,6 +132,7 @@ public class StructureViewer
             new SequenceI[seqsForPdbs.size()][]);
     if (sview != null)
     {
+      sview.setAlignAddedStructures(superposeAdded);
       new Thread(new Runnable()
       {
         @Override
@@ -152,11 +158,12 @@ public class StructureViewer
 
     if (viewerType.equals(ViewerType.JMOL))
     {
-      sview = new AppJmol(ap, pdbsForFile, theSeqs);
+      sview = new AppJmol(ap, superposeAdded, pdbsForFile, theSeqs);
     }
     else if (viewerType.equals(ViewerType.CHIMERA))
     {
-      sview = new ChimeraViewFrame(pdbsForFile, theSeqs, ap);
+      sview = new ChimeraViewFrame(pdbsForFile, superposeAdded, theSeqs,
+              ap);
     }
     else
     {
@@ -279,11 +286,14 @@ public class StructureViewer
   {
     if (sview != null)
     {
-      if (!sview.addAlreadyLoadedFile(seqsForPdb, null, ap, pdb.getId()))
+      sview.setAlignAddedStructures(superposeAdded);
+      String pdbId = pdb.getId();
+      if (!sview.addAlreadyLoadedFile(seqsForPdb, null, ap, pdbId))
       {
-        sview.addToExistingViewer(pdb, seqsForPdb, null, ap, pdb.getId());
+        sview.addToExistingViewer(pdb, seqsForPdb, null, ap, pdbId);
       }
       sview.updateTitleAndMenus();
+      sview.raiseViewer();
       return sview;
     }
     ViewerType viewerType = getViewerType();
@@ -373,4 +383,9 @@ public class StructureViewer
     return sview != null && sview.isVisible();
   }
 
+  public void setSuperpose(boolean alignAddedStructures)
+  {
+    superposeAdded = alignAddedStructures;
+  }
+
 }