X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FAppJmol.java;h=68a847ecc01ae096064ec2a923cd936bca074cc2;hb=136c0793b90b72b928c4d77dc109dd5c644e00d3;hp=a30f6d3c5b90417a17f8a96c389da135c84b8f8f;hpb=9b717f5894d6df63a55ab46a97f4de2e1cc18e9e;p=jalview.git diff --git a/src/jalview/gui/AppJmol.java b/src/jalview/gui/AppJmol.java index a30f6d3..68a847e 100644 --- a/src/jalview/gui/AppJmol.java +++ b/src/jalview/gui/AppJmol.java @@ -21,24 +21,12 @@ package jalview.gui; import jalview.bin.Cache; -import jalview.datamodel.Alignment; import jalview.datamodel.AlignmentI; -import jalview.datamodel.ColumnSelection; import jalview.datamodel.PDBEntry; import jalview.datamodel.SequenceI; import jalview.gui.StructureViewer.ViewerType; -import jalview.io.JalviewFileChooser; -import jalview.io.JalviewFileView; -import jalview.schemes.BuriedColourScheme; -import jalview.schemes.ColourSchemeI; -import jalview.schemes.HelixColourScheme; -import jalview.schemes.HydrophobicColourScheme; -import jalview.schemes.PurinePyrimidineColourScheme; -import jalview.schemes.StrandColourScheme; -import jalview.schemes.TaylorColourScheme; -import jalview.schemes.TurnColourScheme; -import jalview.schemes.ZappoColourScheme; import jalview.structures.models.AAStructureBindingModel; +import jalview.util.BrowserLauncher; import jalview.util.MessageManager; import jalview.util.Platform; import jalview.ws.dbsources.Pdb; @@ -50,28 +38,18 @@ import java.awt.Font; import java.awt.Graphics; import java.awt.Rectangle; import java.awt.event.ActionEvent; -import java.awt.event.ItemEvent; -import java.awt.event.ItemListener; -import java.io.BufferedReader; import java.io.File; -import java.io.FileOutputStream; -import java.io.FileReader; -import java.io.IOException; -import java.io.PrintWriter; import java.util.ArrayList; import java.util.List; import java.util.Vector; import javax.swing.JCheckBoxMenuItem; -import javax.swing.JColorChooser; -import javax.swing.JMenu; +import javax.swing.JInternalFrame; import javax.swing.JPanel; import javax.swing.JSplitPane; import javax.swing.SwingUtilities; import javax.swing.event.InternalFrameAdapter; import javax.swing.event.InternalFrameEvent; -import javax.swing.event.MenuEvent; -import javax.swing.event.MenuListener; public class AppJmol extends StructureViewerBase { @@ -90,8 +68,6 @@ public class AppJmol extends StructureViewerBase RenderPanel renderPanel; - ViewSelectionMenu seqColourBy; - /** * * @param files @@ -135,6 +111,7 @@ public class AppJmol extends StructureViewerBase { useAlignmentPanelForSuperposition(ap); } + initMenus(); if (leaveColouringToJmol || !usetoColour) { jmb.setColourBySequence(false); @@ -149,7 +126,6 @@ public class AppJmol extends StructureViewerBase viewerColour.setSelected(false); } this.setBounds(bounds); - initMenus(); setViewId(viewid); // jalview.gui.Desktop.addInternalFrame(this, "Loading File", // bounds.width,bounds.height); @@ -163,84 +139,19 @@ public class AppJmol extends StructureViewerBase } }); initJmol(loadStatus); // pdbentry, seq, JBPCHECK! - } - private void initMenus() + @Override + protected void initMenus() { - seqColour.setSelected(jmb.isColourBySequence()); - viewerColour.setSelected(!jmb.isColourBySequence()); - if (_colourwith == null) - { - _colourwith = new Vector(); - } - if (_alignwith == null) - { - _alignwith = new Vector(); - } - - seqColourBy = new ViewSelectionMenu( - MessageManager.getString("label.colour_by"), this, _colourwith, - new ItemListener() - { + super.initMenus(); - @Override - public void itemStateChanged(ItemEvent e) - { - if (!seqColour.isSelected()) - { - seqColour.doClick(); - } - else - { - // update the jmol display now. - seqColour_actionPerformed(null); - } - } - }); - viewMenu.add(seqColourBy); - final ItemListener handler; - JMenu alpanels = new ViewSelectionMenu( - MessageManager.getString("label.superpose_with"), this, - _alignwith, handler = new ItemListener() - { - - @Override - public void itemStateChanged(ItemEvent e) - { - alignStructs.setEnabled(_alignwith.size() > 0); - alignStructs.setToolTipText(MessageManager - .formatMessage( - "label.align_structures_using_linked_alignment_views", - new String[] { new Integer(_alignwith - .size()).toString() })); - } - }); - handler.itemStateChanged(null); - viewerActionMenu.add(alpanels); - viewerActionMenu.addMenuListener(new MenuListener() - { - - @Override - public void menuSelected(MenuEvent e) - { - handler.itemStateChanged(null); - } - - @Override - public void menuDeselected(MenuEvent e) - { - // TODO Auto-generated method stub - - } + viewerActionMenu.setText(MessageManager.getString("label.jmol")); - @Override - public void menuCanceled(MenuEvent e) - { - // TODO Auto-generated method stub - - } - }); + viewerColour + .setText(MessageManager.getString("label.colour_with_jmol")); + viewerColour.setToolTipText(MessageManager + .getString("label.let_jmol_manage_structure_colours")); } IProgressIndicator progressBar = null; @@ -283,15 +194,6 @@ public class AppJmol extends StructureViewerBase openNewJmol(ap, new PDBEntry[] { pdbentry }, new SequenceI[][] { seq }); } - /** - * Answers true if this viewer already involves the given PDB ID - */ - @Override - protected boolean hasPdbId(String pdbId) - { - return jmb.hasPdbId(pdbId); - } - private void openNewJmol(AlignmentPanel ap, PDBEntry[] pdbentrys, SequenceI[][] seqs) { @@ -300,6 +202,7 @@ public class AppJmol extends StructureViewerBase pdbentrys, seqs, null); addAlignmentPanel(ap); useAlignmentPanelForColourbyseq(ap); + if (pdbentrys.length > 1) { alignAddedStructures = true; @@ -336,6 +239,30 @@ public class AppJmol extends StructureViewerBase openNewJmol(ap, pe, seqs); } + /** + * Returns a list of any Jmol viewers. The list is restricted to those linked + * to the given alignment panel if it is not null. + */ + @Override + protected List getViewersFor(AlignmentPanel apanel) + { + List result = new ArrayList(); + JInternalFrame[] frames = Desktop.instance.getAllFrames(); + + for (JInternalFrame frame : frames) + { + if (frame instanceof AppJmol) + { + if (apanel == null + || ((StructureViewerBase) frame).isLinkedWith(apanel)) + { + result.add((StructureViewerBase) frame); + } + } + } + return result; + } + void initJmol(String command) { jmb.setFinishedInit(false); @@ -483,8 +410,8 @@ public class AppJmol extends StructureViewerBase int waitFor = 35; int waitTotal = 0; while (addingStructures ? lastnotify >= jmb.getLoadNotifiesHandled() - : !(jmb.isFinishedInit() && jmb.getPdbFile() != null && jmb - .getPdbFile().length == files.size())) + : !(jmb.isFinishedInit() && jmb.getStructureFiles() != null && jmb + .getStructureFiles().length == files.size())) { try { @@ -502,7 +429,7 @@ public class AppJmol extends StructureViewerBase // System.err.println("finished: " + jmb.isFinishedInit() // + "; loaded: " + Arrays.toString(jmb.getPdbFile()) // + "; files: " + files.toString()); - jmb.getPdbFile(); + jmb.getStructureFiles(); break; } } @@ -567,7 +494,7 @@ public class AppJmol extends StructureViewerBase String pdbid = ""; try { - String[] filesInViewer = jmb.getPdbFile(); + String[] filesInViewer = jmb.getStructureFiles(); // TODO: replace with reference fetching/transfer code (validate PDBentry // as a DBRef?) Pdb pdbclient = new Pdb(); @@ -659,76 +586,6 @@ public class AppJmol extends StructureViewerBase } @Override - public void pdbFile_actionPerformed(ActionEvent actionEvent) - { - JalviewFileChooser chooser = new JalviewFileChooser( - jalview.bin.Cache.getProperty("LAST_DIRECTORY")); - - chooser.setFileView(new JalviewFileView()); - chooser.setDialogTitle(MessageManager.getString("label.save_pdb_file")); - chooser.setToolTipText(MessageManager.getString("action.save")); - - int value = chooser.showSaveDialog(this); - - if (value == JalviewFileChooser.APPROVE_OPTION) - { - BufferedReader in = null; - try - { - // TODO: cope with multiple PDB files in view - in = new BufferedReader(new FileReader(jmb.getPdbFile()[0])); - File outFile = chooser.getSelectedFile(); - - PrintWriter out = new PrintWriter(new FileOutputStream(outFile)); - String data; - while ((data = in.readLine()) != null) - { - if (!(data.indexOf("
") > -1 || data.indexOf("
") > -1)) - { - out.println(data); - } - } - out.close(); - } catch (Exception ex) - { - ex.printStackTrace(); - } finally - { - if (in != null) - { - try - { - in.close(); - } catch (IOException e) - { - // ignore - } - } - } - } - } - - @Override - public void viewMapping_actionPerformed(ActionEvent actionEvent) - { - jalview.gui.CutAndPasteTransfer cap = new jalview.gui.CutAndPasteTransfer(); - try - { - cap.appendText(jmb.printMappings()); - } catch (OutOfMemoryError e) - { - new OOMWarning( - "composing sequence-structure alignments for display in text box.", - e); - cap.dispose(); - return; - } - jalview.gui.Desktop.addInternalFrame(cap, - MessageManager.getString("label.pdb_sequence_mapping"), 550, - 600); - } - - @Override public void eps_actionPerformed(ActionEvent e) { makePDBImage(jalview.util.ImageMaker.TYPE.EPS); @@ -775,135 +632,11 @@ public class AppJmol extends StructureViewerBase } @Override - public void viewerColour_actionPerformed(ActionEvent actionEvent) - { - if (viewerColour.isSelected()) - { - // disable automatic sequence colouring. - jmb.setColourBySequence(false); - } - } - - @Override - public void seqColour_actionPerformed(ActionEvent actionEvent) - { - jmb.setColourBySequence(seqColour.isSelected()); - if (_colourwith == null) - { - _colourwith = new Vector(); - } - if (jmb.isColourBySequence()) - { - if (!jmb.isLoadingFromArchive()) - { - if (_colourwith.size() == 0 && getAlignmentPanel() != null) - { - // Make the currently displayed alignment panel the associated view - _colourwith.add(getAlignmentPanel().alignFrame.alignPanel); - } - } - // Set the colour using the current view for the associated alignframe - for (AlignmentPanel ap : _colourwith) - { - jmb.colourBySequence(ap); - } - } - } - - @Override - public void chainColour_actionPerformed(ActionEvent actionEvent) - { - chainColour.setSelected(true); - jmb.colourByChain(); - } - - @Override - public void chargeColour_actionPerformed(ActionEvent actionEvent) - { - chargeColour.setSelected(true); - jmb.colourByCharge(); - } - - @Override - public void zappoColour_actionPerformed(ActionEvent actionEvent) - { - zappoColour.setSelected(true); - jmb.setJalviewColourScheme(new ZappoColourScheme()); - } - - @Override - public void taylorColour_actionPerformed(ActionEvent actionEvent) - { - taylorColour.setSelected(true); - jmb.setJalviewColourScheme(new TaylorColourScheme()); - } - - @Override - public void hydroColour_actionPerformed(ActionEvent actionEvent) - { - hydroColour.setSelected(true); - jmb.setJalviewColourScheme(new HydrophobicColourScheme()); - } - - @Override - public void helixColour_actionPerformed(ActionEvent actionEvent) - { - helixColour.setSelected(true); - jmb.setJalviewColourScheme(new HelixColourScheme()); - } - - @Override - public void strandColour_actionPerformed(ActionEvent actionEvent) - { - strandColour.setSelected(true); - jmb.setJalviewColourScheme(new StrandColourScheme()); - } - - @Override - public void turnColour_actionPerformed(ActionEvent actionEvent) - { - turnColour.setSelected(true); - jmb.setJalviewColourScheme(new TurnColourScheme()); - } - - @Override - public void buriedColour_actionPerformed(ActionEvent actionEvent) - { - buriedColour.setSelected(true); - jmb.setJalviewColourScheme(new BuriedColourScheme()); - } - - @Override - public void purinePyrimidineColour_actionPerformed(ActionEvent actionEvent) - { - setJalviewColourScheme(new PurinePyrimidineColourScheme()); - } - - @Override - public void userColour_actionPerformed(ActionEvent actionEvent) - { - userColour.setSelected(true); - new UserDefinedColours(this, null); - } - - @Override - public void backGround_actionPerformed(ActionEvent actionEvent) - { - java.awt.Color col = JColorChooser - .showDialog(this, MessageManager - .getString("label.select_backgroud_colour"), null); - if (col != null) - { - jmb.setBackgroundColour(col); - } - } - - @Override public void showHelp_actionPerformed(ActionEvent actionEvent) { try { - jalview.util.BrowserLauncher + BrowserLauncher .openURL("http://jmol.sourceforge.net/docs/JmolUserGuide/"); } catch (Exception ex) { @@ -952,7 +685,7 @@ public class AppJmol extends StructureViewerBase { getSize(currentSize); - if (jmb != null && jmb.fileLoadingError != null) + if (jmb != null && jmb.hasFileLoadingError()) { g.setColor(Color.black); g.fillRect(0, 0, currentSize.width, currentSize.height); @@ -995,104 +728,6 @@ public class AppJmol extends StructureViewerBase } } - public void updateTitleAndMenus() - { - if (jmb.fileLoadingError != null && jmb.fileLoadingError.length() > 0) - { - repaint(); - return; - } - setChainMenuItems(jmb.getChainNames()); - - this.setTitle(jmb.getViewerTitle()); - if (jmb.getPdbFile().length > 1 && jmb.getSequence().length > 1) - { - viewerActionMenu.setVisible(true); - } - if (!jmb.isLoadingFromArchive()) - { - seqColour_actionPerformed(null); - } - } - - /* - * (non-Javadoc) - * - * @see - * jalview.jbgui.GStructureViewer#alignStructs_actionPerformed(java.awt.event - * .ActionEvent) - */ - @Override - protected void alignStructs_actionPerformed(ActionEvent actionEvent) - { - alignStructs_withAllAlignPanels(); - } - - private void alignStructs_withAllAlignPanels() - { - if (getAlignmentPanel() == null) - { - return; - } - ; - if (_alignwith.size() == 0) - { - _alignwith.add(getAlignmentPanel()); - } - ; - try - { - AlignmentI[] als = new Alignment[_alignwith.size()]; - ColumnSelection[] alc = new ColumnSelection[_alignwith.size()]; - int[] alm = new int[_alignwith.size()]; - int a = 0; - - for (AlignmentPanel ap : _alignwith) - { - als[a] = ap.av.getAlignment(); - alm[a] = -1; - alc[a++] = ap.av.getColumnSelection(); - } - jmb.superposeStructures(als, alm, alc); - } catch (Exception e) - { - StringBuffer sp = new StringBuffer(); - for (AlignmentPanel ap : _alignwith) - { - sp.append("'" + ap.alignFrame.getTitle() + "' "); - } - Cache.log.info("Couldn't align structures with the " + sp.toString() - + "associated alignment panels.", e); - - } - - } - - @Override - public void setJalviewColourScheme(ColourSchemeI ucs) - { - jmb.setJalviewColourScheme(ucs); - - } - - /** - * - * @param alignment - * @return first alignment panel displaying given alignment, or the default - * alignment panel - */ - public AlignmentPanel getAlignmentPanelFor(AlignmentI alignment) - { - for (AlignmentPanel ap : getAllAlignmentPanels()) - { - if (ap.av.getAlignment() == alignment) - { - return ap; - } - } - return getAlignmentPanel(); - } - @Override public AAStructureBindingModel getBinding() { @@ -1112,9 +747,8 @@ public class AppJmol extends StructureViewerBase } @Override - protected AAStructureBindingModel getBindingModel() + protected String getViewerName() { - return jmb; + return "Jmol"; } - }