JAL-1668 added PDBDocFieldPreference for configuring rest response summary fields
[jalview.git] / src / jalview / gui / PDBSearchPanel.java
index 7aa0bb3..bb75413 100644 (file)
 package jalview.gui;
 
 import jalview.jbgui.GPDBSearchPanel;
+import jalview.jbgui.PDBDocFieldPreferences;
 import jalview.util.MessageManager;
 import jalview.ws.dbsources.PDBRestClient;
 import jalview.ws.dbsources.PDBRestClient.PDBDocField;
 import jalview.ws.uimodel.PDBRestRequest;
 import jalview.ws.uimodel.PDBRestResponse;
-import jalview.ws.uimodel.PDBRestResponse.PDBResponseSummary;
 
 import java.util.ArrayList;
+import java.util.Collection;
 import java.util.Collections;
 import java.util.Comparator;
 import java.util.List;
 
-import javax.swing.DefaultListModel;
-
 @SuppressWarnings("serial")
 public class PDBSearchPanel extends GPDBSearchPanel
 {
@@ -43,6 +42,8 @@ public class PDBSearchPanel extends GPDBSearchPanel
 
   private IProgressIndicator progressIdicator;
 
+  private Collection<PDBDocField> wantedFields;
+
   public PDBSearchPanel(SequenceFetcher seqFetcher)
   {
     this.seqFetcher = seqFetcher;
@@ -51,11 +52,13 @@ public class PDBSearchPanel extends GPDBSearchPanel
   }
 
 
+  /**
+   * Action performed when an input is detected on txt_search field.
+   */
   @Override
   public void txt_search_ActionPerformed()
   {
     boolean allowEmptySequence = false;
-    lst_searchResult.setModel(new DefaultListModel<PDBResponseSummary>());
     mainFrame.setTitle(MessageManager
             .getString("label.pdb_sequence_getcher"));
     if (txt_search.getText().trim().length() > 0)
@@ -65,14 +68,8 @@ public class PDBSearchPanel extends GPDBSearchPanel
       String searchTarget = ((PDBDocField) cmb_searchTarget
               .getSelectedItem()).getCode();
 
-      List<PDBDocField> wantedFields = new ArrayList<PDBDocField>();
-      wantedFields.add(PDBDocField.MOLECULE_TYPE);
-      wantedFields.add(PDBDocField.PDB_ID);
-      // wantedFields.add(PDBDocField.GENUS);
-      wantedFields.add(PDBDocField.GENE_NAME);
-      wantedFields.add(PDBDocField.TITLE);
-      // wantedFields.add(PDBDocField.RESOLUTION);
-      // wantedFields.add(PDBDocField.EXPERIMENTAL_METHOD);
+      wantedFields = PDBDocFieldPreferences
+              .getSearchSummaryFields();
 
       PDBRestRequest request = new PDBRestRequest();
       request.setAllowEmptySeq(allowEmptySequence);
@@ -85,8 +82,8 @@ public class PDBSearchPanel extends GPDBSearchPanel
       PDBRestResponse resultList = pdbRestCleint.executeRequest(request);
       if (resultList.getSearchSummary() != null)
       {
-        lst_searchResult.setModel(PDBRestResponse
-                .getListModel(resultList.getSearchSummary()));
+        tbl_summary.setModel(PDBRestResponse.getTableModel(request,
+                resultList.getSearchSummary()));
       }
 
       long endTime = System.currentTimeMillis();
@@ -125,11 +122,15 @@ public class PDBSearchPanel extends GPDBSearchPanel
   {
     mainFrame.dispose();
     StringBuilder selectedIds = new StringBuilder();
-    for (PDBResponseSummary dataSelected : lst_searchResult
-            .getSelectedValuesList())
+    int pdbIdCol = PDBRestClient.getPDBIdColumIndex(wantedFields, false);
+    int[] selectedRows = tbl_summary.getSelectedRows();
+    for (int summaryRow : selectedRows)
     {
-      selectedIds.append(";").append(dataSelected.getPdbId());
+      String pdbIdStr = tbl_summary.getValueAt(summaryRow, pdbIdCol)
+              .toString();
+      selectedIds.append(";").append(pdbIdStr);
     }
+
     String ids = selectedIds.deleteCharAt(0).toString();
     seqFetcher.textArea.setText(ids);
     Thread worker = new Thread(seqFetcher);