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;
-import javax.swing.SwingUtilities;
+import javax.swing.table.DefaultTableModel;
@SuppressWarnings("serial")
public class PDBSearchPanel extends GPDBSearchPanel
private IProgressIndicator progressIdicator;
+ private Collection<PDBDocField> wantedFields;
+
public PDBSearchPanel(SequenceFetcher seqFetcher)
{
this.seqFetcher = seqFetcher;
.getProgressIndicator();
}
- public static void main(String[] args)
- {
- SwingUtilities.invokeLater(new Runnable()
- {
- public void run()
- {
- new PDBSearchPanel(null);
- }
- });
- }
+ /**
+ * 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"));
+ tbl_summary.setModel(new DefaultTableModel());
if (txt_search.getText().trim().length() > 0)
{
long startTime = System.currentTimeMillis();
- PDBRestClient pdbRestCleint = new PDBRestClient();
+
String searchTarget = ((PDBDocField) cmb_searchTarget
.getSelectedItem()).getCode();
+ wantedFields = PDBDocFieldPreferences
+ .getSearchSummaryFields();
+
PDBRestRequest request = new PDBRestRequest();
request.setAllowEmptySeq(allowEmptySequence);
request.setResponseSize(100);
request.setFieldToSearchBy(searchTarget + ":");
request.setSearchTerm(txt_search.getText());
- 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);
request.setWantedFields(wantedFields);
+
+ PDBRestClient pdbRestCleint = new PDBRestClient();
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();
mainFrame.dispose();
}
+ /**
+ * Add the discovered/selected sequences to a target alignment window
+ */
public void loadSelectedPDBSequencesToAlignment()
{
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);
worker.start();
}
+ /**
+ * Populates search target combo-box options
+ */
public void populateCmbSearchTargetOptions()
{
List<PDBDocField> searchableTargets = new ArrayList<PDBDocField>();