package jalview.gui; import jalview.jbgui.GPDBFetchPanel; import jalview.ws.dbsources.PDBRestClient; import jalview.ws.dbsources.PDBRestClient.PDBDocField; import jalview.ws.uimodel.PDBSearchRequest; import jalview.ws.uimodel.PDBSearchResponse; import jalview.ws.uimodel.PDBSearchResponse.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 PDBFetchPanel extends GPDBFetchPanel { private SequenceFetcher seqFetcher; public PDBFetchPanel() { } public PDBFetchPanel(SequenceFetcher seqFetcher) { this(); this.seqFetcher = seqFetcher; } public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { public void run() { new PDBFetchPanel(); } }); } @Override public void searchStringAction() { boolean allowEmptySequence = false; jListSearchResult.setModel(new DefaultListModel()); mainFrame.setTitle("PDB Sequence Fetcher"); if (search.getText().trim().length() > 0) { long startTime = System.currentTimeMillis(); PDBRestClient pdbRestCleint = new PDBRestClient(); String searchTarget = ((PDBDocField) searchTargetOptions .getSelectedItem()).getCode(); PDBSearchRequest request = new PDBSearchRequest(); request.setAllowEmptySeq(allowEmptySequence); request.setResponseSize(100); request.setFieldToSearchBy(searchTarget + ":"); request.setSearchTerm(search.getText()); List wantedFields = new ArrayList(); wantedFields.add(PDBDocField.MOLECULE_TYPE); wantedFields.add(PDBDocField.PDB_ID); wantedFields.add(PDBDocField.GENUS); wantedFields.add(PDBDocField.GENE_NAME); wantedFields.add(PDBDocField.TITLE); request.setWantedFields(wantedFields); PDBSearchResponse resultList = pdbRestCleint.executeRequest(request); if (resultList.getSearchSummary() != null) { jListSearchResult.setModel(PDBSearchResponse .getListModel(resultList.getSearchSummary())); } long endTime = System.currentTimeMillis(); mainFrame.setTitle("PDB Sequence Fetcher - " + resultList.getItemsFound() + " results (" + (endTime - startTime) + " milli secs)"); } } @Override public void okActionPerformed() { importSelectedPDBSequencesToAlignment(); } @Override public void backActionPerformed() { System.out.println("back! pressed!"); } @Override public void cancelActionPerformed() { mainFrame.dispose(); } private void importSelectedPDBSequencesToAlignment() { mainFrame.dispose(); StringBuilder selectedIds = new StringBuilder(); for (PDBResponseSummary dataSelected : jListSearchResult .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 populateSearchOptionComboBox() { List searchableTargets = new ArrayList(); 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() { @Override public int compare(PDBDocField o1, PDBDocField o2) { return o1.getName().compareTo(o2.getName()); } }); for (PDBDocField searchTarget : searchableTargets) { searchTargetOptions.addItem(searchTarget); } } }