/* * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.2) * Copyright (C) 2014 The Jalview Authors * * This file is part of Jalview. * * Jalview is free software: you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation, either version 3 * of the License, or (at your option) any later version. * * Jalview is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty * of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with Jalview. If not, see . * The Jalview Authors are detailed in the 'AUTHORS' file. */ package jalview.gui; import jalview.jbgui.GPDBSearchPanel; import jalview.util.MessageManager; import jalview.ws.dbsources.PDBRestClient; import jalview.ws.dbsources.PDBRestClient.PDBDocField; import jalview.ws.uimodel.PDBRestRequest; import jalview.ws.uimodel.PDBRestResponse; import jalview.ws.uimodel.PDBRestResponse.PDBResponseSummary; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; import javax.swing.DefaultListModel; @SuppressWarnings("serial") public class PDBSearchPanel extends GPDBSearchPanel { private SequenceFetcher seqFetcher; private IProgressIndicator progressIdicator; public PDBSearchPanel(SequenceFetcher seqFetcher) { this.seqFetcher = seqFetcher; this.progressIdicator = (seqFetcher == null) ? null : seqFetcher .getProgressIndicator(); } @Override public void txt_search_ActionPerformed() { boolean allowEmptySequence = false; lst_searchResult.setModel(new DefaultListModel()); mainFrame.setTitle(MessageManager .getString("label.pdb_sequence_getcher")); if (txt_search.getText().trim().length() > 0) { long startTime = System.currentTimeMillis(); String searchTarget = ((PDBDocField) cmb_searchTarget .getSelectedItem()).getCode(); 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); // wantedFields.add(PDBDocField.RESOLUTION); // wantedFields.add(PDBDocField.EXPERIMENTAL_METHOD); PDBRestRequest request = new PDBRestRequest(); request.setAllowEmptySeq(allowEmptySequence); request.setResponseSize(100); request.setFieldToSearchBy(searchTarget + ":"); request.setSearchTerm(txt_search.getText()); request.setWantedFields(wantedFields); PDBRestClient pdbRestCleint = new PDBRestClient(); PDBRestResponse resultList = pdbRestCleint.executeRequest(request); if (resultList.getSearchSummary() != null) { lst_searchResult.setModel(PDBRestResponse .getListModel(resultList.getSearchSummary())); } long endTime = System.currentTimeMillis(); int resultSetCount = resultList.getNumberOfItemsFound(); String result = (resultSetCount > 1) ? MessageManager .getString("label.results") : MessageManager .getString("label.result"); mainFrame.setTitle(frameTitle + " - " + resultSetCount + " " + result + " (" + (endTime - startTime) + " milli secs)"); } } @Override public void btn_ok_ActionPerformed() { loadSelectedPDBSequencesToAlignment(); } @Override public void btn_back_ActionPerformed() { mainFrame.dispose(); new SequenceFetcher(progressIdicator); } @Override public void btn_cancel_ActionPerformed() { mainFrame.dispose(); } /** * Add the discovered/selected sequences to a target alignment window */ public void loadSelectedPDBSequencesToAlignment() { mainFrame.dispose(); StringBuilder selectedIds = new StringBuilder(); for (PDBResponseSummary dataSelected : lst_searchResult .getSelectedValuesList()) { selectedIds.append(";").append(dataSelected.getPdbId()); } String ids = selectedIds.deleteCharAt(0).toString(); seqFetcher.textArea.setText(ids); Thread worker = new Thread(seqFetcher); worker.start(); } /** * Populates search target combo-box options */ public void populateCmbSearchTargetOptions() { 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) { cmb_searchTarget.addItem(searchTarget); } } }