3 import jalview.jbgui.GPDBFetchPanel;
4 import jalview.ws.dbsources.PDBRestClient;
5 import jalview.ws.dbsources.PDBRestClient.PDBDocField;
6 import jalview.ws.uimodel.PDBSearchRequest;
7 import jalview.ws.uimodel.PDBSearchResponse;
8 import jalview.ws.uimodel.PDBSearchResponse.PDBResponseSummary;
10 import java.util.ArrayList;
11 import java.util.Collections;
12 import java.util.Comparator;
13 import java.util.List;
15 import javax.swing.DefaultListModel;
16 import javax.swing.SwingUtilities;
18 @SuppressWarnings("serial")
19 public class PDBFetchPanel extends GPDBFetchPanel
21 private SequenceFetcher seqFetcher;
28 public PDBFetchPanel()
32 public PDBFetchPanel(SequenceFetcher seqFetcher)
35 this.seqFetcher = seqFetcher;
38 public static void main(String[] args)
40 SwingUtilities.invokeLater(new Runnable()
50 public void searchStringAction()
52 boolean allowEmptySequence = false;
53 jListSearchResult.setModel(new DefaultListModel<PDBResponseSummary>());
54 mainFrame.setTitle("PDB Sequence Fetcher");
55 if (search.getText().trim().length() > 0)
57 long startTime = System.currentTimeMillis();
58 PDBRestClient pdbRestCleint = new PDBRestClient();
59 String searchTarget = ((PDBDocField) searchTargetOptions
60 .getSelectedItem()).getCode();
62 PDBSearchRequest request = new PDBSearchRequest();
63 request.setAllowEmptySeq(allowEmptySequence);
64 request.setResponseSize(100);
65 request.setSearchTarget(searchTarget + ":");
66 request.setSearchTerm(search.getText());
67 List<PDBDocField> wantedFields = new ArrayList<PDBDocField>();
68 wantedFields.add(PDBDocField.MOLECULE_TYPE);
69 wantedFields.add(PDBDocField.PDB_ID);
70 wantedFields.add(PDBDocField.GENUS);
71 wantedFields.add(PDBDocField.GENE_NAME);
72 wantedFields.add(PDBDocField.TITLE);
73 request.setWantedFields(wantedFields);
75 PDBSearchResponse resultList = pdbRestCleint.executeRequest(request);
77 if (resultList.getSearchSummary() != null)
79 jListSearchResult.setModel(PDBSearchResponse
80 .getListModel(resultList.getSearchSummary()));
82 long endTime = System.currentTimeMillis();
83 mainFrame.setTitle("PDB Sequence Fetcher - "
84 + resultList.getItemsFound() + " results ("
85 + (endTime - startTime) + " milli secs)");
91 public void okActionPerformed()
93 importSelectedPDBSequencesToAlignment();
98 public void backActionPerformed()
100 System.out.println("back! pressed!");
104 public void cancelActionPerformed()
109 private void importSelectedPDBSequencesToAlignment()
112 StringBuilder selectedIds = new StringBuilder();
113 for (PDBResponseSummary dataSelected : jListSearchResult
114 .getSelectedValuesList())
116 selectedIds.append(";").append(dataSelected.getPdbId());
118 String ids = selectedIds.deleteCharAt(0).toString();
119 seqFetcher.textArea.setText(ids);
120 Thread worker = new Thread(seqFetcher);
124 public void populateSearchOptionComboBox()
126 List<PDBDocField> searchableTargets = new ArrayList<PDBDocField>();
127 searchableTargets.add(PDBDocField.PDB_ID);
128 searchableTargets.add(PDBDocField.PFAM_ACCESSION);
129 searchableTargets.add(PDBDocField.MOLECULE_TYPE);
130 searchableTargets.add(PDBDocField.MOLECULE_NAME);
131 searchableTargets.add(PDBDocField.UNIPROT_ACCESSION);
132 searchableTargets.add(PDBDocField.GENE_NAME);
133 searchableTargets.add(PDBDocField.GENUS);
134 searchableTargets.add(PDBDocField.ALL);
136 Collections.sort(searchableTargets, new Comparator<PDBDocField>()
139 public int compare(PDBDocField o1, PDBDocField o2)
141 return o1.getName().compareTo(o2.getName());
145 for (PDBDocField searchTarget : searchableTargets)
147 searchTargetOptions.addItem(searchTarget);