X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FStructureChooser.java;h=afadbea4839a913d4abd43f641b2f588d95d5b94;hb=5bd245162908974e3c96329da6a803598341bae1;hp=ff7cdcbad268252d8a60de858c57822ed92db626;hpb=420f8c90293d60c925ec564aa28fcb3ef0136d28;p=jalview.git diff --git a/src/jalview/gui/StructureChooser.java b/src/jalview/gui/StructureChooser.java index ff7cdcb..afadbea 100644 --- a/src/jalview/gui/StructureChooser.java +++ b/src/jalview/gui/StructureChooser.java @@ -22,9 +22,13 @@ package jalview.gui; +import jalview.bin.Cache; import jalview.datamodel.DBRefEntry; import jalview.datamodel.PDBEntry; import jalview.datamodel.SequenceI; +import jalview.io.AppletFormatAdapter; +import jalview.io.JalviewFileChooser; +import jalview.io.JalviewFileView; import jalview.jbgui.GStructureChooser; import jalview.jbgui.PDBDocFieldPreferences; import jalview.structure.StructureSelectionManager; @@ -100,9 +104,13 @@ public class StructureChooser extends GStructureChooser public void run() { long startTime = System.currentTimeMillis(); - String msg = MessageManager.getString("status.fetching_db_refs"); - updateProgressIndicator(msg, startTime); + updateProgressIndicator(MessageManager + .getString("status.loading_cached_pdb_entries"), startTime); loadLocalCachedPDBEntries(); + updateProgressIndicator(null, startTime); + updateProgressIndicator(MessageManager + .getString("status.searching_for_pdb_structures"), + startTime); fetchStructuresMetaData(); populateFilterComboBox(); updateProgressIndicator(null, startTime); @@ -165,7 +173,7 @@ public class StructureChooser extends GStructureChooser && !resultList.getSearchSummary().isEmpty()) { discoveredStructuresSet.addAll(resultList.getSearchSummary()); - updateSequenceDbRef(seq, resultList.getSearchSummary()); + updateSequencePDBEntries(seq, resultList.getSearchSummary()); } } @@ -188,8 +196,8 @@ public class StructureChooser extends GStructureChooser .setTitle("Structure Chooser - Manual association"); if (errors.size() > 0) { - StringBuilder errorMsg = new StringBuilder( - "Operation was unsucessful due to the following: \n"); + StringBuilder errorMsg = new StringBuilder(); + // "Operation was unsucessful due to the following: \n"); for (String error : errors) { errorMsg.append(error).append("\n"); @@ -216,6 +224,7 @@ public class StructureChooser extends GStructureChooser { for (PDBEntry pdbEntry : seq.getDatasetSequence().getPDBId()) { + String chain = pdbEntry.getChainCode() == null ? "_" : pdbEntry .getChainCode(); String[] pdbEntryRowData = new String[] @@ -223,7 +232,10 @@ public class StructureChooser extends GStructureChooser chain, pdbEntry.getType(), pdbEntry.getFile() }; - tableModel.addRow(pdbEntryRowData); + if (pdbEntry.getFile() != null) + { + tableModel.addRow(pdbEntryRowData); + } cachedEntryMap.put(pdbEntry.getId().toLowerCase(), pdbEntry); } @@ -233,7 +245,7 @@ public class StructureChooser extends GStructureChooser } /** - * Update the DBRef entry for a given sequence with values retrieved from + * Update the PDBEntry for a given sequence with values retrieved from * PDBResponseSummary * * @param seq @@ -241,15 +253,20 @@ public class StructureChooser extends GStructureChooser * @param responseSummaries * a collection of PDBResponseSummary */ - public void updateSequenceDbRef(SequenceI seq, + public void updateSequencePDBEntries(SequenceI seq, Collection responseSummaries) { for (PDBResponseSummary response : responseSummaries) { - PDBEntry newEntry = new PDBEntry(); - newEntry.setId(response.getPdbId()); - newEntry.setType(PDBEntry.Type.PDB); - seq.getDatasetSequence().addPDBId(newEntry); + String pdbIdStr = response.getPdbId(); + PDBEntry pdbEntry = cachedEntryMap.get(pdbIdStr.toLowerCase()); + if (pdbEntry == null) + { + pdbEntry = new PDBEntry(); + pdbEntry.setId(pdbIdStr); + pdbEntry.setType(PDBEntry.Type.PDB); + } + seq.getDatasetSequence().addPDBId(pdbEntry); } } @@ -409,8 +426,7 @@ public class StructureChooser extends GStructureChooser + totalTime + ")"); if (errors.size() > 0) { - StringBuilder errorMsg = new StringBuilder( - "Operation unsucessful due to the following: \n"); + StringBuilder errorMsg = new StringBuilder(); for (String error : errors) { errorMsg.append(error).append("\n"); @@ -434,9 +450,9 @@ public class StructureChooser extends GStructureChooser */ public void pdbFromFile_actionPerformed() { - jalview.io.JalviewFileChooser chooser = new jalview.io.JalviewFileChooser( - jalview.bin.Cache.getProperty("LAST_DIRECTORY")); - chooser.setFileView(new jalview.io.JalviewFileView()); + JalviewFileChooser chooser = new JalviewFileChooser( + Cache.getProperty("LAST_DIRECTORY")); + chooser.setFileView(new JalviewFileView()); chooser.setDialogTitle(MessageManager.formatMessage( "label.select_pdb_file_for", new String[] { selectedSequence.getDisplayId(false) })); @@ -445,10 +461,10 @@ public class StructureChooser extends GStructureChooser { selectedSequence.getDisplayId(false) })); int value = chooser.showOpenDialog(null); - if (value == jalview.io.JalviewFileChooser.APPROVE_OPTION) + if (value == JalviewFileChooser.APPROVE_OPTION) { selectedPdbFileName = chooser.getSelectedFile().getPath(); - jalview.bin.Cache.setProperty("LAST_DIRECTORY", selectedPdbFileName); + Cache.setProperty("LAST_DIRECTORY", selectedPdbFileName); validateSelections(); } } @@ -552,6 +568,21 @@ public class StructureChooser extends GStructureChooser AssociateSeqOptions assSeqOpt = (AssociateSeqOptions) idInputAssSeqPanel .getCmb_assSeq().getSelectedItem(); lbl_pdbManualFetchStatus.setIcon(errorImage); + lbl_pdbManualFetchStatus.setToolTipText(""); + if (txt_search.getText().length() > 0) + { + lbl_pdbManualFetchStatus.setToolTipText(JvSwingUtils.wrapTooltip( + true, "No PDB entry found for \'" + txt_search.getText() + + "\'")); + } + + if (errorWarning.length() > 0) + { + lbl_pdbManualFetchStatus.setIcon(warningImage); + lbl_pdbManualFetchStatus.setToolTipText(JvSwingUtils.wrapTooltip( + true, errorWarning.toString())); + } + if (selectedSequences.length == 1 || !assSeqOpt.getName().equalsIgnoreCase( "-Select Associated Seq-")) @@ -560,6 +591,7 @@ public class StructureChooser extends GStructureChooser if (isValidPBDEntry) { btn_view.setEnabled(true); + lbl_pdbManualFetchStatus.setToolTipText(""); lbl_pdbManualFetchStatus.setIcon(goodImage); } } @@ -705,7 +737,7 @@ public class StructureChooser extends GStructureChooser } PDBEntry fileEntry = new AssociatePdbFileWithSeq() .associatePdbWithSeq( - selectedPdbFileName, jalview.io.AppletFormatAdapter.FILE, + selectedPdbFileName, AppletFormatAdapter.FILE, selectedSequence, true, Desktop.instance); launchStructureViewer(ap.getStructureSelectionManager(), @@ -718,17 +750,17 @@ public class StructureChooser extends GStructureChooser private void launchStructureViewer(StructureSelectionManager ssm, PDBEntry[] pdbEntriesToView, AlignmentPanel alignPanel, - SequenceI[] selectedSequences) + SequenceI[] sequences) { StructureViewer sViewer = new StructureViewer(ssm); if (pdbEntriesToView.length > 1) { - sViewer.viewStructures(alignPanel, pdbEntriesToView, - alignPanel.av.collateForPDB(pdbEntriesToView)); + sViewer.viewStructures(pdbEntriesToView, alignPanel.av.collateForPDB(pdbEntriesToView), + alignPanel); } else { - sViewer.viewStructures(pdbEntriesToView[0], selectedSequences, null, + sViewer.viewStructures(pdbEntriesToView[0], sequences, alignPanel); } } @@ -780,6 +812,7 @@ public class StructureChooser extends GStructureChooser @Override protected void txt_search_ActionPerformed() { + errorWarning.setLength(0); isValidPBDEntry = false; if (txt_search.getText().length() > 0) { @@ -799,12 +832,10 @@ public class StructureChooser extends GStructureChooser resultList = pdbRestCleint.executeRequest(pdbRequest); } catch (Exception e) { - JOptionPane.showMessageDialog(this, e.getMessage(), - "PDB Web-service Error", JOptionPane.ERROR_MESSAGE); + errorWarning.append(e.getMessage()); return; } finally { - System.out.println(">>>>> executing finally block"); validateSelections(); } if (resultList.getSearchSummary() != null @@ -835,5 +866,4 @@ public class StructureChooser extends GStructureChooser } } - }