X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;ds=inline;f=src%2Fjalview%2Fgui%2FChimeraViewFrame.java;h=364a3b4b9dc30e2ff7181a004e943ff8e6077003;hb=61ff8fb4efa315c35149c9d11850d99e3d00c441;hp=65b002b0a4e90b83e91da1d88188012e4c239c66;hpb=2107a91322a1988a8a6b724c74f9d244795341e3;p=jalview.git diff --git a/src/jalview/gui/ChimeraViewFrame.java b/src/jalview/gui/ChimeraViewFrame.java index 65b002b..364a3b4 100644 --- a/src/jalview/gui/ChimeraViewFrame.java +++ b/src/jalview/gui/ChimeraViewFrame.java @@ -28,6 +28,7 @@ import java.io.File; import java.util.ArrayList; import java.util.Collections; import java.util.List; +import java.util.Map; import javax.swing.JInternalFrame; import javax.swing.JMenu; @@ -40,6 +41,8 @@ import jalview.api.FeatureRenderer; import jalview.bin.Cache; import jalview.datamodel.PDBEntry; import jalview.datamodel.SequenceI; +import jalview.datamodel.StructureViewerModel; +import jalview.datamodel.StructureViewerModel.StructureData; import jalview.ext.rbvi.chimera.JalviewChimeraBinding; import jalview.gui.StructureViewer.ViewerType; import jalview.io.DataSourceType; @@ -70,7 +73,10 @@ public class ChimeraViewFrame extends StructureViewerBase private int myHeight = 150; - /** + private JMenuItem writeFeatures=null; + + private JMenu fetchAttributes=null; +/** * Initialise menu options. */ @Override @@ -81,7 +87,7 @@ public class ChimeraViewFrame extends StructureViewerBase savemenu.setVisible(false); // not yet implemented viewMenu.add(fitToWindow); - JMenuItem writeFeatures = new JMenuItem( + writeFeatures = new JMenuItem( MessageManager.getString("label.create_viewer_attributes")); writeFeatures.setToolTipText(MessageManager .getString("label.create_viewer_attributes_tip")); @@ -95,7 +101,7 @@ public class ChimeraViewFrame extends StructureViewerBase }); viewerActionMenu.add(writeFeatures); - final JMenu fetchAttributes = new JMenu( + fetchAttributes = new JMenu( MessageManager.getString("label.fetch_chimera_attributes")); fetchAttributes.setToolTipText( MessageManager.getString("label.fetch_chimera_attributes_tip")); @@ -110,10 +116,18 @@ public class ChimeraViewFrame extends StructureViewerBase }); viewerActionMenu.add(fetchAttributes); } - + @Override + protected void buildActionMenu() + { + super.buildActionMenu(); + // add these back in after menu is refreshed + viewerActionMenu.add(writeFeatures); + viewerActionMenu.add(fetchAttributes); + + }; /** - * Query Chimera for its residue attribute names and add them as items off the - * attributes menu + * Query the structure viewer for its residue attribute names and add them as + * items off the attributes menu * * @param attributesMenu */ @@ -130,7 +144,11 @@ public class ChimeraViewFrame extends StructureViewerBase @Override public void actionPerformed(ActionEvent e) { - getChimeraAttributes(attName); + if (getBinding().copyStructureAttributesToFeatures(attName, + getAlignmentPanel()) > 0) + { + getAlignmentPanel().getFeatureRenderer().featuresAdded(); + } } }); attributesMenu.add(menuItem); @@ -138,17 +156,6 @@ public class ChimeraViewFrame extends StructureViewerBase } /** - * Read residues in Chimera with the given attribute name, and set as features - * on the corresponding sequence positions (if any) - * - * @param attName - */ - protected void getChimeraAttributes(String attName) - { - jmb.copyStructureAttributesToFeatures(attName, getAlignmentPanel()); - } - - /** * Sends command(s) to the structure viewer to create residue attributes for * visible Jalview features */ @@ -240,22 +247,34 @@ public class ChimeraViewFrame extends StructureViewerBase * @param colourBySequence * @param newViewId */ - public ChimeraViewFrame(String chimeraSessionFile, - AlignmentPanel alignPanel, PDBEntry[] pdbArray, - SequenceI[][] seqsArray, boolean colourByChimera, - boolean colourBySequence, String newViewId) + public ChimeraViewFrame(StructureViewerModel viewerData, + AlignmentPanel alignPanel, String sessionFile, String vid) { this(); - setViewId(newViewId); - this.chimeraSessionFile = chimeraSessionFile; + setViewId(vid); + this.chimeraSessionFile = sessionFile; + Map pdbData = viewerData.getFileData(); + PDBEntry[] pdbArray = new PDBEntry[pdbData.size()]; + SequenceI[][] seqsArray = new SequenceI[pdbData.size()][]; + int i = 0; + for (StructureData data : pdbData.values()) + { + PDBEntry pdbentry = new PDBEntry(data.getPdbId(), null, + PDBEntry.Type.PDB, data.getFilePath()); + pdbArray[i] = pdbentry; + List sequencesForPdb = data.getSeqList(); + seqsArray[i] = sequencesForPdb + .toArray(new SequenceI[sequencesForPdb.size()]); + i++; + } openNewChimera(alignPanel, pdbArray, seqsArray); - if (colourByChimera) + if (viewerData.isColourByViewer()) { jmb.setColourBySequence(false); seqColour.setSelected(false); viewerColour.setSelected(true); } - else if (colourBySequence) + else if (viewerData.isColourWithAlignPanel()) { jmb.setColourBySequence(true); seqColour.setSelected(true); @@ -483,7 +502,8 @@ public class ChimeraViewFrame extends StructureViewerBase /* * ensure that any newly discovered features (e.g. RESNUM) - * are added to any open feature settings dialog + * are notified to the FeatureRenderer (and added to any + * open feature settings dialog) */ FeatureRenderer fr = getBinding().getFeatureRenderer(null); if (fr != null) @@ -528,12 +548,6 @@ public class ChimeraViewFrame extends StructureViewerBase } @Override - protected void fitToWindow_actionPerformed() - { - jmb.focusView(); - } - - @Override public ViewerType getViewerType() { return ViewerType.CHIMERA;