JAL-1990 suggested revision to separate references to UI components from datamodel...
[jalview.git] / src / jalview / gui / StructureChooser.java
index fd2de8e..8dbe0c2 100644 (file)
@@ -717,10 +717,7 @@ public class StructureChooser extends GStructureChooser implements
   @Override
   public void ok_ActionPerformed()
   {
-    final long progressSessionId = System.currentTimeMillis();
     final StructureSelectionManager ssm = ap.getStructureSelectionManager();
-    ssm.setProgressIndicator(this);
-    ssm.setProgressSessionId(progressSessionId);
     new Thread(new Runnable()
     {
       @Override
@@ -765,7 +762,8 @@ public class StructureChooser extends GStructureChooser implements
       }
       SequenceI[] selectedSeqs = selectedSeqsToView
               .toArray(new SequenceI[selectedSeqsToView.size()]);
-          launchStructureViewer(ssm, pdbEntriesToView, ap, selectedSeqs);
+          launchStructureViewer(ssm, pdbEntriesToView, ap,
+                  selectedSeqs);
     }
     else if (currentView == VIEWS_LOCAL_PDB)
     {
@@ -788,7 +786,8 @@ public class StructureChooser extends GStructureChooser implements
       }
       SequenceI[] selectedSeqs = selectedSeqsToView
               .toArray(new SequenceI[selectedSeqsToView.size()]);
-          launchStructureViewer(ssm, pdbEntriesToView, ap, selectedSeqs);
+          launchStructureViewer(ssm, pdbEntriesToView, ap,
+                  selectedSeqs);
     }
     else if (currentView == VIEWS_ENTER_ID)
     {
@@ -830,7 +829,8 @@ public class StructureChooser extends GStructureChooser implements
                       jalview.io.AppletFormatAdapter.FILE,
                       selectedSequence, true, Desktop.instance);
 
-          launchStructureViewer(ssm, new PDBEntry[] { fileEntry }, ap,
+          launchStructureViewer(ssm,
+                  new PDBEntry[] { fileEntry }, ap,
                   new SequenceI[] { selectedSequence });
     }
     mainFrame.dispose();
@@ -857,12 +857,17 @@ public class StructureChooser extends GStructureChooser implements
           final PDBEntry[] pdbEntriesToView,
           final AlignmentPanel alignPanel, SequenceI[] sequences)
   {
-    ssm.setProgressBar(MessageManager
-            .getString("status.launching_3d_structure_viewer"));
+    long progressId = sequences.hashCode();
+    setProgressBar(MessageManager
+            .getString("status.launching_3d_structure_viewer"), progressId);
     final StructureViewer sViewer = new StructureViewer(ssm);
+    setProgressBar(null, progressId);
 
     if (SiftsSettings.isMapWithSifts())
     {
+      // TODO: prompt user if there are lots of sequences without dbrefs.
+      // It can take a long time if we need to fetch all dbrefs for all
+      // sequences!
       ArrayList<SequenceI> seqsWithoutSourceDBRef = new ArrayList<SequenceI>();
       for (SequenceI seq : sequences)
       {
@@ -875,10 +880,9 @@ public class StructureChooser extends GStructureChooser implements
       if (!seqsWithoutSourceDBRef.isEmpty())
       {
         int y = seqsWithoutSourceDBRef.size();
-        ssm.setProgressBar(null);
-        ssm.setProgressBar(MessageManager.formatMessage(
+        setProgressBar(MessageManager.formatMessage(
                 "status.fetching_dbrefs_for_sequences_without_valid_refs",
-                y));
+                y), progressId);
         SequenceI[] seqWithoutSrcDBRef = new SequenceI[y];
         int x = 0;
         for (SequenceI fSeq : seqsWithoutSourceDBRef)
@@ -886,6 +890,7 @@ public class StructureChooser extends GStructureChooser implements
           seqWithoutSrcDBRef[x++] = fSeq;
         }
         new DBRefFetcher(seqWithoutSrcDBRef).fetchDBRefs(true);
+        setProgressBar("Fetch complete.", progressId); // todo i18n
       }
     }
     if (pdbEntriesToView.length > 1)
@@ -896,19 +901,18 @@ public class StructureChooser extends GStructureChooser implements
         seqsMap.add(new SequenceI[] { seq });
       }
       SequenceI[][] collatedSeqs = seqsMap.toArray(new SequenceI[0][0]);
-      ssm.setProgressBar(null);
-      ssm.setProgressBar(MessageManager
-              .getString("status.fetching_3d_structures_for_selected_entries"));
+      setProgressBar(MessageManager
+                    .getString("status.fetching_3d_structures_for_selected_entries"), progressId);
       sViewer.viewStructures(pdbEntriesToView, collatedSeqs, alignPanel);
     }
     else
     {
-      ssm.setProgressBar(null);
-      ssm.setProgressBar(MessageManager.formatMessage(
+      setProgressBar(MessageManager.formatMessage(
               "status.fetching_3d_structures_for",
-              pdbEntriesToView[0].getId()));
+              pdbEntriesToView[0].getId()),progressId);
       sViewer.viewStructures(pdbEntriesToView[0], sequences, alignPanel);
     }
+    setProgressBar(null, progressId);
   }
 
   /**