--- /dev/null
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.2)
+ * Copyright (C) 2014 The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
+
+package jalview.gui;
+
+import jalview.jbgui.GPDBSearchPanel;
+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.Collections;
+import java.util.Comparator;
+import java.util.List;
+
+import javax.swing.DefaultListModel;
+import javax.swing.SwingUtilities;
+
+@SuppressWarnings("serial")
+public class PDBSearchPanel extends GPDBSearchPanel
+{
+ private SequenceFetcher seqFetcher;
+
+ private IProgressIndicator progressIdicator;
+
+ public PDBSearchPanel(SequenceFetcher seqFetcher)
+ {
+ this.seqFetcher = seqFetcher;
+ this.progressIdicator = (seqFetcher == null) ? null : seqFetcher
+ .getProgressIndicator();
+ }
+
+ public static void main(String[] args)
+ {
+ SwingUtilities.invokeLater(new Runnable()
+ {
+ public void run()
+ {
+ new PDBSearchPanel(null);
+ }
+ });
+ }
+
+ @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)
+ {
+ long startTime = System.currentTimeMillis();
+ PDBRestClient pdbRestCleint = new PDBRestClient();
+ String searchTarget = ((PDBDocField) cmb_searchTarget
+ .getSelectedItem()).getCode();
+
+ 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);
+ PDBRestResponse resultList = pdbRestCleint.executeRequest(request);
+ if (resultList.getSearchSummary() != null)
+ {
+ lst_searchResult.setModel(PDBRestResponse
+ .getListModel(resultList.getSearchSummary()));
+ }
+
+ long endTime = System.currentTimeMillis();
+ int resultSetCount = resultList.getNumberOfItemsFound();
+ String result = (resultSetCount > 1) ? MessageManager
+ .getString("label.results") : MessageManager
+ .getString("label.result");
+ mainFrame.setTitle(frameTitle + " - " + resultSetCount + " " + result
+ + " (" + (endTime - startTime) + " milli secs)");
+ }
+ }
+
+ @Override
+ public void btn_ok_ActionPerformed()
+ {
+ loadSelectedPDBSequencesToAlignment();
+ }
+
+ @Override
+ public void btn_back_ActionPerformed()
+ {
+ mainFrame.dispose();
+ new SequenceFetcher(progressIdicator);
+ }
+
+ @Override
+ public void btn_cancel_ActionPerformed()
+ {
+ mainFrame.dispose();
+ }
+
+ public void loadSelectedPDBSequencesToAlignment()
+ {
+ mainFrame.dispose();
+ StringBuilder selectedIds = new StringBuilder();
+ for (PDBResponseSummary dataSelected : lst_searchResult
+ .getSelectedValuesList())
+ {
+ selectedIds.append(";").append(dataSelected.getPdbId());
+ }
+ String ids = selectedIds.deleteCharAt(0).toString();
+ seqFetcher.textArea.setText(ids);
+ Thread worker = new Thread(seqFetcher);
+ worker.start();
+ }
+
+ public void populateCmbSearchTargetOptions()
+ {
+ List<PDBDocField> searchableTargets = new ArrayList<PDBDocField>();
+ searchableTargets.add(PDBDocField.PDB_ID);
+ searchableTargets.add(PDBDocField.PFAM_ACCESSION);
+ searchableTargets.add(PDBDocField.MOLECULE_TYPE);
+ searchableTargets.add(PDBDocField.MOLECULE_NAME);
+ searchableTargets.add(PDBDocField.UNIPROT_ACCESSION);
+ searchableTargets.add(PDBDocField.GENE_NAME);
+ searchableTargets.add(PDBDocField.GENUS);
+ searchableTargets.add(PDBDocField.ALL);
+
+ Collections.sort(searchableTargets, new Comparator<PDBDocField>()
+ {
+ @Override
+ public int compare(PDBDocField o1, PDBDocField o2)
+ {
+ return o1.getName().compareTo(o2.getName());
+ }
+ });
+
+ for (PDBDocField searchTarget : searchableTargets)
+ {
+ cmb_searchTarget.addItem(searchTarget);
+ }
+ }
+
+}