X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fappletgui%2FAlignFrame.java;h=1496595d641fd42051d0ed363d1a8b3f1a603c97;hb=f7c96b0eada06e354b66a186f272aeb3ff872a90;hp=684d7a41ad9ce8fe09c5139caa16f909a9689589;hpb=8a6fa9ea9900d0f106529c3f6283e7f9d76dd2cb;p=jalview.git diff --git a/src/jalview/appletgui/AlignFrame.java b/src/jalview/appletgui/AlignFrame.java index 684d7a4..1496595 100755 --- a/src/jalview/appletgui/AlignFrame.java +++ b/src/jalview/appletgui/AlignFrame.java @@ -21,12 +21,9 @@ import java.io.*; import java.net.*; import java.util.*; -import java.applet.Applet; import java.awt.*; import java.awt.event.*; -import org.jmol.api.JmolViewer; - import jalview.analysis.*; import jalview.api.SequenceStructureBinding; import jalview.bin.JalviewLite; @@ -73,6 +70,7 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, annotationPanelMenuItem.setState(viewport.showAnnotation); displayNonconservedMenuItem.setState(viewport.getShowunconserved()); + followMouseOverFlag.setState(viewport.getFollowHighlight()); seqLimits.setState(viewport.showJVSuffix); @@ -796,38 +794,8 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, } else if (source == alProperties) { - StringBuffer contents = new StringBuffer(); - - float avg = 0; - int min = Integer.MAX_VALUE, max = 0; - for (int i = 0; i < viewport.alignment.getHeight(); i++) - { - int size = viewport.alignment.getSequenceAt(i).getEnd() - - viewport.alignment.getSequenceAt(i).getStart(); - avg += size; - if (size > max) - max = size; - if (size < min) - min = size; - } - avg = avg / (float) viewport.alignment.getHeight(); - - contents.append("\nSequences: " + viewport.alignment.getHeight()); - contents.append("\nMinimum Sequence Length: " + min); - contents.append("\nMaximum Sequence Length: " + max); - contents.append("\nAverage Length: " + (int) avg); - - if (((Alignment) viewport.alignment).alignmentProperties != null) - { - Hashtable props = ((Alignment) viewport.alignment).alignmentProperties; - Enumeration en = props.keys(); - while (en.hasMoreElements()) - { - String key = en.nextElement().toString(); - contents.append("\n" + key + "\t" + props.get(key)); - } - } - + StringBuffer contents = new jalview.io.AlignmentProperties( + viewport.alignment).formatAsString(); CutAndPasteTransfer cap = new CutAndPasteTransfer(false, this); cap.setText(contents.toString()); Frame frame = new Frame(); @@ -1671,6 +1639,7 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, { this.setVisible(false); } + viewport.sendSelection(); } protected void makeGrpsFromSelection_actionPerformed() @@ -1725,6 +1694,7 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, viewport.setSelectionGroup(sg); alignPanel.paintAlignment(true); PaintRefresher.Refresh(alignPanel, viewport.getSequenceSetId()); + viewport.sendSelection(); } public void deselectAllSequenceMenuItem_actionPerformed() @@ -1741,6 +1711,7 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, alignPanel.seqPanel.seqCanvas.highlightSearchResults(null); alignPanel.paintAlignment(true); PaintRefresher.Refresh(alignPanel, viewport.getSequenceSetId()); + viewport.sendSelection(); } public void invertSequenceMenuItem_actionPerformed() @@ -1752,6 +1723,7 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, } PaintRefresher.Refresh(alignPanel, viewport.getSequenceSetId()); + viewport.sendSelection(); } public void invertColSel_actionPerformed() @@ -1759,6 +1731,7 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, viewport.invertColumnSelection(); alignPanel.paintAlignment(true); PaintRefresher.Refresh(alignPanel, viewport.getSequenceSetId()); + viewport.sendSelection(); } void trimAlignment(boolean trimLeft) @@ -2519,7 +2492,7 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, g.drawString("Build date: " + builddate, x, y += fh); g.setFont(new Font("Helvetica", Font.PLAIN, 12)); g.drawString( - "Authors: Andrew Waterhouse, Jim Procter, Michele Clamp, James Cuff, Steve Searle,", + "Authors: Jim Procter, Andrew Waterhouse, Michele Clamp, James Cuff, Steve Searle,", x, y += fh * 1.5); g.drawString("David Martin & Geoff Barton.", x + 50, y += fh); g.drawString( @@ -3170,6 +3143,23 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, viewport.applet.getSize().height - embeddedMenu.HEIGHT - statusBar.HEIGHT); viewport.applet.add(alignPanel, BorderLayout.CENTER); + final AlignFrame me = this; + viewport.applet.addFocusListener(new FocusListener() + { + + @Override + public void focusLost(FocusEvent e) + { + if (me.viewport.applet.currentAlignFrame==me) { + me.viewport.applet.currentAlignFrame = null; + }} + + @Override + public void focusGained(FocusEvent e) + { + me.viewport.applet.currentAlignFrame = me; + } + }); viewport.applet.validate(); } else @@ -3195,36 +3185,73 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, * create a new binding between structures in an existing jmol viewer instance * and an alignpanel with sequences that have existing PDBFile entries. Note, * this does not open a new Jmol window, or modify the display of the - * structures in the original jmol window. Note + * structures in the original jmol window. Note This method doesn't work + * without an additional javascript library to exchange messages between the + * distinct applets. See http://issues.jalview.org/browse/JAL-621 * * @param viewer * JmolViewer instance * @param sequenceIds - * - sequence Ids to search for associations This method doesn't - * work. See http://issues.jalview.org/browse/JAL-621 - * - * public SequenceStructureBinding addStructureViewInstance(Object - * jmolviewer, String[] sequenceIds) { org.jmol.api.JmolViewer - * viewer=null; try { viewer = (org.jmol.api.JmolViewer) jmolviewer; - * } catch (ClassCastException ex) { - * System.err.println("Unsupported viewer object :" - * +jmolviewer.getClass()); } if (viewer==null) { - * System.err.println("Can't use this object as a structure viewer:" - * +jmolviewer.getClass()); return null; } SequenceI[] seqs=null; if - * (sequenceIds==null || sequenceIds.length==0) { seqs = - * viewport.getAlignment().getSequencesArray(); } else { Vector - * sqi=new Vector(); AlignmentI al = viewport.getAlignment(); for - * (int sid=0;sid0) { seqs = new SequenceI[sqi.size()]; for (int - * sid=0,sSize=sqi.size();sid 0) + { + seqs = new SequenceI[sqi.size()]; + for (int sid = 0, sSize = sqi.size(); sid < sSize; sid++) + { + seqs[sid] = (SequenceI) sqi.elementAt(sid); + } + } + else + { + return null; + } + } + ExtJmol jmv = null; + // TODO: search for a jmv that involves viewer + if (jmv == null) + { // create a new viewer/jalview binding. + jmv = new ExtJmol(viewer, alignPanel, new SequenceI[][] {seqs}); + } + return jmv; + + } + public boolean addPdbFile(String sequenceId, String pdbEntryString, String pdbFile) { @@ -3375,4 +3402,14 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, // TODO Auto-generated method stub System.err.println("Aligned Structure View: Not yet implemented."); } + + /** + * modify the current selection, providing the user has not made a selection already. + * @param sel - sequences from this alignment + * @param csel - columns to be selected on the alignment + */ + public void select(SequenceGroup sel, ColumnSelection csel) + { + alignPanel.seqPanel.selection(sel, csel, null); + } }