better preferences/properties
[jalview.git] / src / jalview / gui / StructureChooser.java
index 97ff404..d6f3df1 100644 (file)
@@ -71,27 +71,25 @@ public class StructureChooser extends GStructureChooser
 {
   private static final String AUTOSUPERIMPOSE = "AUTOSUPERIMPOSE";
 
-  private static int MAX_QLENGTH = 7820;
+  private static final int MAX_QLENGTH = 7820;
 
-  private SequenceI selectedSequence;
+  protected SequenceI selectedSequence;
 
-  private SequenceI[] selectedSequences;
+  public SequenceI[] selectedSequences;
 
   private IProgressIndicator progressIndicator;
 
-  private Collection<FTSData> discoveredStructuresSet;
+  protected Collection<FTSData> discoveredStructuresSet;
 
-  private FTSRestRequest lastPdbRequest;
+  protected FTSRestRequest lastPdbRequest;
 
-  private FTSRestClientI pdbRestCleint;
+  protected FTSRestClientI pdbRestClient;
 
-  private String selectedPdbFileName;
+  protected String selectedPdbFileName;
 
-  private boolean isValidPBDEntry;
+  protected boolean isValidPBDEntry;
 
-  private boolean cachedPDBExists;
-
-  private static StructureViewer lastTargetedView = null;
+  protected boolean cachedPDBExists;
 
   public StructureChooser(SequenceI[] selectedSeqs, SequenceI selectedSeq,
           AlignmentPanel ap)
@@ -146,21 +144,22 @@ public class StructureChooser extends GStructureChooser
    * structures may be added. If this list is empty then it, and the 'Add'
    * button, are hidden.
    */
-  private void discoverStructureViews()
+  protected void discoverStructureViews()
   {
-    if (Desktop.instance != null)
+    if (Desktop.getInstance() != null)
     {
       targetView.removeAllItems();
-      if (lastTargetedView != null && !lastTargetedView.isVisible())
+      Desktop d = Desktop.getInstance();
+      if (d.lastTargetedView != null && !d.lastTargetedView.isVisible())
       {
-        lastTargetedView = null;
+        d.lastTargetedView = null;
       }
       int linkedViewsAt = 0;
-      for (StructureViewerBase view : Desktop.instance
+      for (StructureViewerBase view : Desktop.getInstance()
               .getStructureViewers(null, null))
       {
-        StructureViewer viewHandler = (lastTargetedView != null
-                && lastTargetedView.sview == view) ? lastTargetedView
+        StructureViewer viewHandler = (d.lastTargetedView != null
+                && d.lastTargetedView.sview == view) ? d.lastTargetedView
                         : StructureViewer.reconfigure(view);
 
         if (view.isLinkedWith(ap))
@@ -181,9 +180,9 @@ public class StructureChooser extends GStructureChooser
       if (targetView.getItemCount() > 0)
       {
         targetView.setVisible(true);
-        if (lastTargetedView != null)
+        if (d.lastTargetedView != null)
         {
-          targetView.setSelectedItem(lastTargetedView);
+          targetView.setSelectedItem(d.lastTargetedView);
         }
         else
         {
@@ -217,7 +216,7 @@ public class StructureChooser extends GStructureChooser
   void fetchStructuresMetaData()
   {
     long startTime = System.currentTimeMillis();
-    pdbRestCleint = PDBFTSRestClient.getInstance();
+    pdbRestClient = PDBFTSRestClient.getInstance();
     Collection<FTSDataColumnI> wantedFields = pdbDocFieldPrefs
             .getStructureSummaryFields();
 
@@ -239,7 +238,7 @@ public class StructureChooser extends GStructureChooser
       FTSRestResponse resultList;
       try
       {
-        resultList = pdbRestCleint.executeRequest(pdbRequest);
+        resultList = pdbRestClient.executeRequest(pdbRequest);
       } catch (Exception e)
       {
         e.printStackTrace();
@@ -337,10 +336,12 @@ public class StructureChooser extends GStructureChooser
       }
     }
 
-    if (seq.getDBRefs() != null && seq.getDBRefs().length != 0)
+    List<DBRefEntry> refs = seq.getDBRefs();
+    if (refs != null && refs.size() != 0)
     {
-      for (DBRefEntry dbRef : seq.getDBRefs())
+      for (int ib = 0, nb = refs.size(); ib < nb; ib++)
       {
+         DBRefEntry dbRef = refs.get(ib);
         if (isValidSeqName(getDBRefId(dbRef))
                 && queryBuilder.length() < MAX_QLENGTH)
         {
@@ -461,7 +462,7 @@ public class StructureChooser extends GStructureChooser
       public void run()
       {
         long startTime = System.currentTimeMillis();
-        pdbRestCleint = PDBFTSRestClient.getInstance();
+        pdbRestClient = PDBFTSRestClient.getInstance();
         lbl_loading.setVisible(true);
         Collection<FTSDataColumnI> wantedFields = pdbDocFieldPrefs
                 .getStructureSummaryFields();
@@ -497,7 +498,7 @@ public class StructureChooser extends GStructureChooser
           FTSRestResponse resultList;
           try
           {
-            resultList = pdbRestCleint.executeRequest(pdbRequest);
+            resultList = pdbRestClient.executeRequest(pdbRequest);
           } catch (Exception e)
           {
             e.printStackTrace();
@@ -872,7 +873,7 @@ public class StructureChooser extends GStructureChooser
   /**
    * structure viewer opened by this dialog, or null
    */
-  private StructureViewer sViewer = null;
+  protected StructureViewer sViewer = null;
 
   public void showStructures(boolean waitUntilFinished)
   {
@@ -993,10 +994,9 @@ public class StructureChooser extends GStructureChooser
           {
             selectedSequence = userSelectedSeq;
           }
-          PDBEntry fileEntry = new AssociatePdbFileWithSeq()
+          PDBEntry fileEntry = AssociatePdbFileWithSeq
                   .associatePdbWithSeq(selectedPdbFileName,
-                          DataSourceType.FILE, selectedSequence, true,
-                          Desktop.instance);
+                          DataSourceType.FILE, selectedSequence, true);
 
           sViewer = launchStructureViewer(
                   ssm, new PDBEntry[]
@@ -1034,7 +1034,7 @@ public class StructureChooser extends GStructureChooser
     }
   }
 
-  private PDBEntry getFindEntry(String id, Vector<PDBEntry> pdbEntries)
+  protected PDBEntry getFindEntry(String id, Vector<PDBEntry> pdbEntries)
   {
     Objects.requireNonNull(id);
     Objects.requireNonNull(pdbEntries);
@@ -1073,7 +1073,7 @@ public class StructureChooser extends GStructureChooser
    * @param sequences
    * @return
    */
-  private StructureViewer launchStructureViewer(
+  protected StructureViewer launchStructureViewer(
           StructureSelectionManager ssm,
           final PDBEntry[] pdbEntriesToView,
           final AlignmentPanel alignPanel, SequenceI[] sequences)
@@ -1152,7 +1152,7 @@ public class StructureChooser extends GStructureChooser
     }
     setProgressBar(null, progressId);
     // remember the last viewer we used...
-    lastTargetedView = theViewer;
+    Desktop.getInstance().lastTargetedView = theViewer;
     return theViewer;
   }
 
@@ -1192,19 +1192,27 @@ public class StructureChooser extends GStructureChooser
             && !discoveredStructuresSet.isEmpty();
   }
 
+  protected int PDB_ID_MIN = 3;// or: (Jalview.isJS() ? 3 : 1); // Bob proposes this. 
+  // Doing a search for "1" or "1c" is valuable?
+  // Those work but are enormously slow.
+
   @Override
   protected void txt_search_ActionPerformed()
   {
+    String text = txt_search.getText().trim();
+       if (text.length() >= PDB_ID_MIN)
+  {
     new Thread()
     {
-      @Override
+
+       @Override
       public void run()
       {
         errorWarning.setLength(0);
         isValidPBDEntry = false;
-        if (txt_search.getText().length() > 0)
+        if (text.length() > 0)
         {
-          String searchTerm = txt_search.getText().toLowerCase();
+          String searchTerm = text.toLowerCase();
           searchTerm = searchTerm.split(":")[0];
           // System.out.println(">>>>> search term : " + searchTerm);
           List<FTSDataColumnI> wantedFields = new ArrayList<>();
@@ -1215,12 +1223,12 @@ public class StructureChooser extends GStructureChooser
           pdbRequest.setWantedFields(wantedFields);
           pdbRequest.setSearchTerm(searchTerm + ")");
           pdbRequest.setAssociatedSequence(selectedSequence);
-          pdbRestCleint = PDBFTSRestClient.getInstance();
-          wantedFields.add(pdbRestCleint.getPrimaryKeyColumn());
+          pdbRestClient = PDBFTSRestClient.getInstance();
+          wantedFields.add(pdbRestClient.getPrimaryKeyColumn());
           FTSRestResponse resultList;
           try
           {
-            resultList = pdbRestCleint.executeRequest(pdbRequest);
+            resultList = pdbRestClient.executeRequest(pdbRequest);
           } catch (Exception e)
           {
             errorWarning.append(e.getMessage());
@@ -1239,6 +1247,7 @@ public class StructureChooser extends GStructureChooser
       }
     }.start();
   }
+  }
 
   @Override
   protected void tabRefresh()