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.jbgui.PDBDocFieldPreferences;
26 import jalview.util.MessageManager;
27 import jalview.ws.dbsources.PDBRestClient;
28 import jalview.ws.dbsources.PDBRestClient.PDBDocField;
29 import jalview.ws.uimodel.PDBRestRequest;
30 import jalview.ws.uimodel.PDBRestResponse;
32 import java.util.ArrayList;
33 import java.util.Collection;
34 import java.util.Collections;
35 import java.util.Comparator;
36 import java.util.List;
38 import javax.swing.table.DefaultTableModel;
40 @SuppressWarnings("serial")
41 public class PDBSearchPanel extends GPDBSearchPanel
43 private SequenceFetcher seqFetcher;
45 private IProgressIndicator progressIdicator;
47 private Collection<PDBDocField> wantedFields;
49 public PDBSearchPanel(SequenceFetcher seqFetcher)
51 this.seqFetcher = seqFetcher;
52 this.progressIdicator = (seqFetcher == null) ? null : seqFetcher
53 .getProgressIndicator();
58 * Action performed when an input is detected on txt_search field.
61 public void txt_search_ActionPerformed()
63 boolean allowEmptySequence = false;
64 mainFrame.setTitle(MessageManager
65 .getString("label.pdb_sequence_getcher"));
66 tbl_summary.setModel(new DefaultTableModel());
67 if (txt_search.getText().trim().length() > 0)
69 long startTime = System.currentTimeMillis();
71 String searchTarget = ((PDBDocField) cmb_searchTarget
72 .getSelectedItem()).getCode();
74 wantedFields = PDBDocFieldPreferences
75 .getSearchSummaryFields();
77 String searchTerm = txt_search.getText();
78 if (searchTerm.contains(":"))
80 searchTerm = searchTerm.split(":")[0];
83 PDBRestRequest request = new PDBRestRequest();
84 request.setAllowEmptySeq(allowEmptySequence);
85 request.setResponseSize(100);
86 request.setFieldToSearchBy(searchTarget + ":");
87 request.setSearchTerm(searchTerm);
88 request.setWantedFields(wantedFields);
90 PDBRestClient pdbRestCleint = new PDBRestClient();
91 PDBRestResponse resultList = pdbRestCleint.executeRequest(request);
92 if (resultList.getSearchSummary() != null)
94 tbl_summary.setModel(PDBRestResponse.getTableModel(request,
95 resultList.getSearchSummary()));
98 long endTime = System.currentTimeMillis();
99 int resultSetCount = resultList.getNumberOfItemsFound();
100 String result = (resultSetCount > 1) ? MessageManager
101 .getString("label.results") : MessageManager
102 .getString("label.result");
103 mainFrame.setTitle(frameTitle + " - " + resultSetCount + " " + result
104 + " (" + (endTime - startTime) + " milli secs)");
109 public void btn_ok_ActionPerformed()
111 loadSelectedPDBSequencesToAlignment();
115 public void btn_back_ActionPerformed()
118 new SequenceFetcher(progressIdicator);
122 public void btn_cancel_ActionPerformed()
128 * Add the discovered/selected sequences to a target alignment window
130 public void loadSelectedPDBSequencesToAlignment()
133 StringBuilder selectedIds = new StringBuilder();
134 int pdbIdCol = PDBRestClient.getPDBIdColumIndex(wantedFields, false);
135 int[] selectedRows = tbl_summary.getSelectedRows();
136 for (int summaryRow : selectedRows)
138 String pdbIdStr = tbl_summary.getValueAt(summaryRow, pdbIdCol)
141 String searchTerm = txt_search.getText();
142 if (searchTerm.contains(":"))
144 selectedIds.append(";").append(pdbIdStr).append(":")
145 .append(searchTerm.split(":")[1].toUpperCase());
149 selectedIds.append(";").append(pdbIdStr);
153 String ids = selectedIds.deleteCharAt(0).toString();
154 seqFetcher.textArea.setText(ids);
155 Thread worker = new Thread(seqFetcher);
160 * Populates search target combo-box options
162 public void populateCmbSearchTargetOptions()
164 List<PDBDocField> searchableTargets = new ArrayList<PDBDocField>();
165 searchableTargets.add(PDBDocField.PDB_ID);
166 searchableTargets.add(PDBDocField.PFAM_ACCESSION);
167 searchableTargets.add(PDBDocField.MOLECULE_TYPE);
168 searchableTargets.add(PDBDocField.MOLECULE_NAME);
169 searchableTargets.add(PDBDocField.UNIPROT_ACCESSION);
170 searchableTargets.add(PDBDocField.GENE_NAME);
171 searchableTargets.add(PDBDocField.GENUS);
172 searchableTargets.add(PDBDocField.ALL);
174 Collections.sort(searchableTargets, new Comparator<PDBDocField>()
177 public int compare(PDBDocField o1, PDBDocField o2)
179 return o1.getName().compareTo(o2.getName());
183 for (PDBDocField searchTarget : searchableTargets)
185 cmb_searchTarget.addItem(searchTarget);