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;
39 @SuppressWarnings("serial")
40 public class PDBSearchPanel extends GPDBSearchPanel
42 private SequenceFetcher seqFetcher;
44 private IProgressIndicator progressIdicator;
46 public PDBSearchPanel(SequenceFetcher seqFetcher)
48 this.seqFetcher = seqFetcher;
49 this.progressIdicator = (seqFetcher == null) ? null : seqFetcher
50 .getProgressIndicator();
55 public void txt_search_ActionPerformed()
57 boolean allowEmptySequence = false;
58 lst_searchResult.setModel(new DefaultListModel<PDBResponseSummary>());
59 mainFrame.setTitle(MessageManager
60 .getString("label.pdb_sequence_getcher"));
61 if (txt_search.getText().trim().length() > 0)
63 long startTime = System.currentTimeMillis();
65 String searchTarget = ((PDBDocField) cmb_searchTarget
66 .getSelectedItem()).getCode();
68 List<PDBDocField> wantedFields = new ArrayList<PDBDocField>();
69 wantedFields.add(PDBDocField.MOLECULE_TYPE);
70 wantedFields.add(PDBDocField.PDB_ID);
71 // wantedFields.add(PDBDocField.GENUS);
72 wantedFields.add(PDBDocField.GENE_NAME);
73 wantedFields.add(PDBDocField.TITLE);
74 // wantedFields.add(PDBDocField.RESOLUTION);
75 // wantedFields.add(PDBDocField.EXPERIMENTAL_METHOD);
77 PDBRestRequest request = new PDBRestRequest();
78 request.setAllowEmptySeq(allowEmptySequence);
79 request.setResponseSize(100);
80 request.setFieldToSearchBy(searchTarget + ":");
81 request.setSearchTerm(txt_search.getText());
82 request.setWantedFields(wantedFields);
84 PDBRestClient pdbRestCleint = new PDBRestClient();
85 PDBRestResponse resultList = pdbRestCleint.executeRequest(request);
86 if (resultList.getSearchSummary() != null)
88 lst_searchResult.setModel(PDBRestResponse
89 .getListModel(resultList.getSearchSummary()));
92 long endTime = System.currentTimeMillis();
93 int resultSetCount = resultList.getNumberOfItemsFound();
94 String result = (resultSetCount > 1) ? MessageManager
95 .getString("label.results") : MessageManager
96 .getString("label.result");
97 mainFrame.setTitle(frameTitle + " - " + resultSetCount + " " + result
98 + " (" + (endTime - startTime) + " milli secs)");
103 public void btn_ok_ActionPerformed()
105 loadSelectedPDBSequencesToAlignment();
109 public void btn_back_ActionPerformed()
112 new SequenceFetcher(progressIdicator);
116 public void btn_cancel_ActionPerformed()
122 * Add the discovered/selected sequences to a target alignment window
124 public void loadSelectedPDBSequencesToAlignment()
127 StringBuilder selectedIds = new StringBuilder();
128 for (PDBResponseSummary dataSelected : lst_searchResult
129 .getSelectedValuesList())
131 selectedIds.append(";").append(dataSelected.getPdbId());
133 String ids = selectedIds.deleteCharAt(0).toString();
134 seqFetcher.textArea.setText(ids);
135 Thread worker = new Thread(seqFetcher);
140 * Populates search target combo-box options
142 public void populateCmbSearchTargetOptions()
144 List<PDBDocField> searchableTargets = new ArrayList<PDBDocField>();
145 searchableTargets.add(PDBDocField.PDB_ID);
146 searchableTargets.add(PDBDocField.PFAM_ACCESSION);
147 searchableTargets.add(PDBDocField.MOLECULE_TYPE);
148 searchableTargets.add(PDBDocField.MOLECULE_NAME);
149 searchableTargets.add(PDBDocField.UNIPROT_ACCESSION);
150 searchableTargets.add(PDBDocField.GENE_NAME);
151 searchableTargets.add(PDBDocField.GENUS);
152 searchableTargets.add(PDBDocField.ALL);
154 Collections.sort(searchableTargets, new Comparator<PDBDocField>()
157 public int compare(PDBDocField o1, PDBDocField o2)
159 return o1.getName().compareTo(o2.getName());
163 for (PDBDocField searchTarget : searchableTargets)
165 cmb_searchTarget.addItem(searchTarget);