+ }
+ SequenceI[] selectedSeqs = selectedSeqsToView
+ .toArray(new SequenceI[selectedSeqsToView.size()]);
+ launchStructureViewer(ap.getStructureSelectionManager(),
+ pdbEntriesToView, ap, selectedSeqs);
+ }
+ else if (currentView == VIEWS_ENTER_ID)
+ {
+ SequenceI userSelectedSeq = ((AssociateSeqOptions) idInputAssSeqPanel
+ .getCmb_assSeq().getSelectedItem()).getSequence();
+ if (userSelectedSeq != null)
+ {
+ selectedSequence = userSelectedSeq;
+ }
+
+ String pdbIdStr = txt_search.getText();
+ PDBEntry pdbEntry = cachedEntryMap.get(pdbIdStr.toLowerCase());
+ if (pdbEntry == null)
+ {
+ pdbEntry = new PDBEntry();
+ pdbEntry.setId(txt_search.getText());
+ pdbEntry.setType(PDBEntry.Type.PDB);
+ }
+
+ selectedSequence.getDatasetSequence().addPDBId(pdbEntry);
+ PDBEntry[] pdbEntriesToView = new PDBEntry[]
+ { pdbEntry };
+ launchStructureViewer(ap.getStructureSelectionManager(),
+ pdbEntriesToView, ap, new SequenceI[]
+ { selectedSequence });
+ }
+ else if (currentView == VIEWS_FROM_FILE)
+ {
+ SequenceI userSelectedSeq = ((AssociateSeqOptions) fileChooserAssSeqPanel
+ .getCmb_assSeq().getSelectedItem()).getSequence();
+ if (userSelectedSeq != null)
+ {
+ selectedSequence = userSelectedSeq;
+ }
+ PDBEntry fileEntry = new AssociatePdbFileWithSeq()
+ .associatePdbWithSeq(
+ selectedPdbFileName, jalview.io.AppletFormatAdapter.FILE,
+ selectedSequence, true, Desktop.instance);
+
+ launchStructureViewer(ap.getStructureSelectionManager(),
+ new PDBEntry[]
+ { fileEntry }, ap, new SequenceI[]
+ { selectedSequence });
+ }
+ mainFrame.dispose();
+ }
+
+ private void launchStructureViewer(StructureSelectionManager ssm,
+ PDBEntry[] pdbEntriesToView, AlignmentPanel alignPanel,
+ SequenceI[] sequences)
+ {
+ StructureViewer sViewer = new StructureViewer(ssm);
+ if (pdbEntriesToView.length > 1)
+ {
+ ArrayList<SequenceI[]> seqsMap = new ArrayList<SequenceI[]>();
+ for (SequenceI seq : sequences)
+ {
+ seqsMap.add(new SequenceI[]
+ { seq });
+ }
+ SequenceI[][] collatedSeqs = seqsMap.toArray(new SequenceI[0][0]);
+ sViewer.viewStructures(pdbEntriesToView, collatedSeqs,
+ alignPanel);
+ // sViewer.viewStructures(pdbEntriesToView,
+ // alignPanel.av.collateForPDB(pdbEntriesToView),
+ // alignPanel);
+ }
+ else
+ {
+ sViewer.viewStructures(pdbEntriesToView[0], sequences,
+ alignPanel);
+ }
+ }
+
+ /**
+ * Populates the combo-box used in associating manually fetched structures to
+ * a unique sequence when more than one sequence selection is made.
+ */
+ public void populateCmbAssociateSeqOptions(
+ JComboBox<AssociateSeqOptions> cmb_assSeq, JLabel lbl_associateSeq)
+ {
+ cmb_assSeq.removeAllItems();
+ cmb_assSeq.addItem(new AssociateSeqOptions("-Select Associated Seq-",
+ null));
+ // cmb_assSeq.addItem(new AssociateSeqOptions("Auto Detect", null));
+ lbl_associateSeq.setVisible(false);
+ if (selectedSequences.length > 1)
+ {
+ for (SequenceI seq : selectedSequences)
+ {
+ cmb_assSeq.addItem(new AssociateSeqOptions(seq));
+ }
+ }
+ else
+ {
+ String seqName = selectedSequence.getDisplayId(false);
+ seqName = seqName.length() <= 40 ? seqName : seqName.substring(0, 39);
+ lbl_associateSeq.setText(seqName);
+ lbl_associateSeq.setVisible(true);
+ cmb_assSeq.setVisible(false);
+ }
+ }
+
+ public boolean isStructuresDiscovered()
+ {
+ return structuresDiscovered;
+ }
+
+ public void setStructuresDiscovered(boolean structuresDiscovered)
+ {
+ this.structuresDiscovered = structuresDiscovered;
+ }
+
+ public Collection<PDBResponseSummary> getDiscoveredStructuresSet()
+ {
+ return discoveredStructuresSet;
+ }
+
+ @Override
+ protected void txt_search_ActionPerformed()
+ {
+ errorWarning.setLength(0);
+ isValidPBDEntry = false;
+ if (txt_search.getText().length() > 0)
+ {
+ List<PDBDocField> wantedFields = new ArrayList<PDBDocField>();
+ wantedFields.add(PDBDocField.PDB_ID);
+ PDBRestRequest pdbRequest = new PDBRestRequest();
+ pdbRequest.setAllowEmptySeq(false);
+ pdbRequest.setResponseSize(1);
+ pdbRequest.setFieldToSearchBy("(pdb_id:");
+ pdbRequest.setWantedFields(wantedFields);
+ pdbRequest.setSearchTerm(txt_search.getText() + ")");
+ pdbRequest.setAssociatedSequence(selectedSequence);
+ pdbRestCleint = new PDBRestClient();
+ PDBRestResponse resultList;
+ try
+ {
+ resultList = pdbRestCleint.executeRequest(pdbRequest);
+ } catch (Exception e)
+ {
+ errorWarning.append(e.getMessage());
+ return;
+ } finally
+ {
+ validateSelections();
+ }
+ if (resultList.getSearchSummary() != null
+ && resultList.getSearchSummary().size() > 0)
+ {
+ isValidPBDEntry = true;
+ }
+ }
+ validateSelections();
+ }
+
+ @Override
+ public void tabRefresh()
+ {
+ if (selectedSequences != null)
+ {
+ Thread refreshThread = new Thread(new Runnable()
+ {
+ @Override
+ public void run()
+ {
+ fetchStructuresMetaData();
+ filterResultSet(((FilterOption) cmb_filterOption
+ .getSelectedItem()).getValue());
+ }
+ });
+ refreshThread.start();
+ }
+ }