2 * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.2)
3 * Copyright (C) 2014 The Jalview Authors
5 * This file is part of Jalview.
7 * Jalview is free software: you can redistribute it and/or
8 * modify it under the terms of the GNU General Public License
9 * as published by the Free Software Foundation, either version 3
10 * of the License, or (at your option) any later version.
12 * Jalview is distributed in the hope that it will be useful, but
13 * WITHOUT ANY WARRANTY; without even the implied warranty
14 * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
15 * PURPOSE. See the GNU General Public License for more details.
17 * You should have received a copy of the GNU General Public License
18 * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
19 * The Jalview Authors are detailed in the 'AUTHORS' file.
24 import jalview.jbgui.GPDBSearchPanel;
25 import jalview.util.MessageManager;
26 import jalview.ws.dbsources.PDBRestClient;
27 import jalview.ws.dbsources.PDBRestClient.PDBDocField;
28 import jalview.ws.uimodel.PDBRestRequest;
29 import jalview.ws.uimodel.PDBRestResponse;
30 import jalview.ws.uimodel.PDBRestResponse.PDBResponseSummary;
32 import java.util.ArrayList;
33 import java.util.Collections;
34 import java.util.Comparator;
35 import java.util.List;
37 import javax.swing.DefaultListModel;
38 import javax.swing.SwingUtilities;
40 @SuppressWarnings("serial")
41 public class PDBSearchPanel extends GPDBSearchPanel
43 private SequenceFetcher seqFetcher;
45 private IProgressIndicator progressIdicator;
47 public PDBSearchPanel(SequenceFetcher seqFetcher)
49 this.seqFetcher = seqFetcher;
50 this.progressIdicator = (seqFetcher == null) ? null : seqFetcher
51 .getProgressIndicator();
54 public static void main(String[] args)
56 SwingUtilities.invokeLater(new Runnable()
60 new PDBSearchPanel(null);
66 public void txt_search_ActionPerformed()
68 boolean allowEmptySequence = false;
69 lst_searchResult.setModel(new DefaultListModel<PDBResponseSummary>());
70 mainFrame.setTitle(MessageManager
71 .getString("label.pdb_sequence_getcher"));
72 if (txt_search.getText().trim().length() > 0)
74 long startTime = System.currentTimeMillis();
75 PDBRestClient pdbRestCleint = new PDBRestClient();
76 String searchTarget = ((PDBDocField) cmb_searchTarget
77 .getSelectedItem()).getCode();
79 PDBRestRequest request = new PDBRestRequest();
80 request.setAllowEmptySeq(allowEmptySequence);
81 request.setResponseSize(100);
82 request.setFieldToSearchBy(searchTarget + ":");
83 request.setSearchTerm(txt_search.getText());
84 List<PDBDocField> wantedFields = new ArrayList<PDBDocField>();
85 wantedFields.add(PDBDocField.MOLECULE_TYPE);
86 wantedFields.add(PDBDocField.PDB_ID);
87 // wantedFields.add(PDBDocField.GENUS);
88 wantedFields.add(PDBDocField.GENE_NAME);
89 wantedFields.add(PDBDocField.TITLE);
90 // wantedFields.add(PDBDocField.RESOLUTION);
91 // wantedFields.add(PDBDocField.EXPERIMENTAL_METHOD);
92 request.setWantedFields(wantedFields);
93 PDBRestResponse resultList = pdbRestCleint.executeRequest(request);
94 if (resultList.getSearchSummary() != null)
96 lst_searchResult.setModel(PDBRestResponse
97 .getListModel(resultList.getSearchSummary()));
100 long endTime = System.currentTimeMillis();
101 int resultSetCount = resultList.getNumberOfItemsFound();
102 String result = (resultSetCount > 1) ? MessageManager
103 .getString("label.results") : MessageManager
104 .getString("label.result");
105 mainFrame.setTitle(frameTitle + " - " + resultSetCount + " " + result
106 + " (" + (endTime - startTime) + " milli secs)");
111 public void btn_ok_ActionPerformed()
113 loadSelectedPDBSequencesToAlignment();
117 public void btn_back_ActionPerformed()
120 new SequenceFetcher(progressIdicator);
124 public void btn_cancel_ActionPerformed()
129 public void loadSelectedPDBSequencesToAlignment()
132 StringBuilder selectedIds = new StringBuilder();
133 for (PDBResponseSummary dataSelected : lst_searchResult
134 .getSelectedValuesList())
136 selectedIds.append(";").append(dataSelected.getPdbId());
138 String ids = selectedIds.deleteCharAt(0).toString();
139 seqFetcher.textArea.setText(ids);
140 Thread worker = new Thread(seqFetcher);
144 public void populateCmbSearchTargetOptions()
146 List<PDBDocField> searchableTargets = new ArrayList<PDBDocField>();
147 searchableTargets.add(PDBDocField.PDB_ID);
148 searchableTargets.add(PDBDocField.PFAM_ACCESSION);
149 searchableTargets.add(PDBDocField.MOLECULE_TYPE);
150 searchableTargets.add(PDBDocField.MOLECULE_NAME);
151 searchableTargets.add(PDBDocField.UNIPROT_ACCESSION);
152 searchableTargets.add(PDBDocField.GENE_NAME);
153 searchableTargets.add(PDBDocField.GENUS);
154 searchableTargets.add(PDBDocField.ALL);
156 Collections.sort(searchableTargets, new Comparator<PDBDocField>()
159 public int compare(PDBDocField o1, PDBDocField o2)
161 return o1.getName().compareTo(o2.getName());
165 for (PDBDocField searchTarget : searchableTargets)
167 cmb_searchTarget.addItem(searchTarget);