From: jprocter Date: Wed, 12 Nov 2008 17:04:04 +0000 (+0000) Subject: selection sending and receiving, autoscrolling to highlighted position, new viewport... X-Git-Tag: Release_2_5~406 X-Git-Url: http://source.jalview.org/gitweb/?a=commitdiff_plain;h=50ad147ba0eb763fae29b364c80632abc1155e9c;p=jalview.git selection sending and receiving, autoscrolling to highlighted position, new viewport IDs and jalview XML storage/sync in vamsas appdata --- diff --git a/src/jalview/gui/AlignFrame.java b/src/jalview/gui/AlignFrame.java index be92acf..f5a1494 100755 --- a/src/jalview/gui/AlignFrame.java +++ b/src/jalview/gui/AlignFrame.java @@ -47,6 +47,7 @@ import jalview.ws.*; public class AlignFrame extends GAlignFrame implements DropTargetListener, IProgressIndicator { + /** DOCUMENT ME!! */ public static final int DEFAULT_WIDTH = 700; @@ -70,16 +71,39 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, String fileName = null; /** - * Creates a new AlignFrame object. + * Creates a new AlignFrame object with specific width and height. * * @param al - * DOCUMENT ME! + * @param width + * @param height */ public AlignFrame(AlignmentI al, int width, int height) { this(al, null, width, height); } - + /** + * Creates a new AlignFrame object with specific width, height and sequenceSetId + * @param al + * @param width + * @param height + * @param sequenceSetId + */ + public AlignFrame(AlignmentI al, int width, int height, String sequenceSetId) + { + this(al, null, width, height, sequenceSetId); + } + /** + * Creates a new AlignFrame object with specific width, height and sequenceSetId + * @param al + * @param width + * @param height + * @param sequenceSetId + * @param viewId + */ + public AlignFrame(AlignmentI al, int width, int height, String sequenceSetId, String viewId) + { + this(al, null, width, height, sequenceSetId, viewId); + } /** * new alignment window with hidden columns * @@ -87,12 +111,42 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * AlignmentI * @param hiddenColumns * ColumnSelection or null + * @param width Width of alignment frame + * @param height height of frame. */ public AlignFrame(AlignmentI al, ColumnSelection hiddenColumns, int width, int height) { - this.setSize(width, height); - viewport = new AlignViewport(al, hiddenColumns); + this(al, hiddenColumns, width, height, null); + } + /** + * Create alignment frame for al with hiddenColumns, a specific width and height, and specific sequenceId + * @param al + * @param hiddenColumns + * @param width + * @param height + * @param sequenceSetId (may be null) + */ + public AlignFrame(AlignmentI al, ColumnSelection hiddenColumns, + int width, int height, String sequenceSetId) + { + this(al, hiddenColumns, width, height, sequenceSetId, null); + } + + /** + * Create alignment frame for al with hiddenColumns, a specific width and height, and specific sequenceId + * @param al + * @param hiddenColumns + * @param width + * @param height + * @param sequenceSetId (may be null) + * @param viewId (may be null) + */ + public AlignFrame(AlignmentI al, ColumnSelection hiddenColumns, int width, int height, + String sequenceSetId, String viewId) + { + setSize(width, height); + viewport = new AlignViewport(al, hiddenColumns, sequenceSetId, viewId); alignPanel = new AlignmentPanel(this, viewport); @@ -120,7 +174,9 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, addAlignmentPanel(ap, false); init(); } - + /** + * initalise the alignframe from the underlying viewport data and the configurations + */ void init() { if (viewport.conservation == null) @@ -701,8 +757,8 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, public void save_actionPerformed(ActionEvent e) { if (fileName == null - || (currentFileFormat == null || jalview.io.AppletFormatAdapter - .isValidFormat(currentFileFormat, true)) + || (currentFileFormat == null + || !jalview.io.FormatAdapter.isValidIOFormat(currentFileFormat, true)) || fileName.startsWith("http")) { saveAs_actionPerformed(null); @@ -980,10 +1036,10 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, } /** - * DOCUMENT ME! + * Close the current view or all views in the alignment frame. + * If the frame only contains one view then the alignment will be removed from memory. * - * @param e - * DOCUMENT ME! + * @param closeAllTabs */ public void closeMenuItem_actionPerformed(boolean closeAllTabs) { @@ -1001,9 +1057,11 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, for (int i = 0; i < alignPanels.size(); i++) { AlignmentPanel ap = (AlignmentPanel) alignPanels.elementAt(i); - jalview.structure.StructureSelectionManager - .getStructureSelectionManager() - .removeStructureViewerListener(ap.seqPanel, null); + jalview.structure.StructureSelectionManager ssm = + jalview.structure.StructureSelectionManager + .getStructureSelectionManager(); + ssm.removeStructureViewerListener(ap.seqPanel, null); + ssm.removeSelectionListener(ap.seqPanel); PaintRefresher.RemoveComponent(ap.seqPanel.seqCanvas); PaintRefresher.RemoveComponent(ap.idPanel.idCanvas); PaintRefresher.RemoveComponent(ap); @@ -1012,25 +1070,8 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, } else { - int index = tabbedPane.getSelectedIndex(); - - alignPanels.removeElement(alignPanel); - PaintRefresher.RemoveComponent(alignPanel.seqPanel.seqCanvas); - PaintRefresher.RemoveComponent(alignPanel.idPanel.idCanvas); - PaintRefresher.RemoveComponent(alignPanel); - viewport.alignment = null; - alignPanel = null; + closeView(alignPanel); viewport = null; - - tabbedPane.removeTabAt(index); - tabbedPane.validate(); - - if (index == tabbedPane.getTabCount()) - { - index--; - } - - this.tabSelectionChanged(index); } } @@ -1044,6 +1085,34 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, } } + public void closeView(AlignmentPanel alignPanel2) + { + int index = tabbedPane.getSelectedIndex(); + int closedindex = tabbedPane.indexOfComponent(alignPanel2); + alignPanels.removeElement(alignPanel2); + PaintRefresher.RemoveComponent(alignPanel2.seqPanel.seqCanvas); + PaintRefresher.RemoveComponent(alignPanel2.idPanel.idCanvas); + PaintRefresher.RemoveComponent(alignPanel2); + alignPanel2.av.alignment = null; + + if (viewport == alignPanel2.av) + { + viewport = null; + } + alignPanel2 = null; + + tabbedPane.removeTabAt(closedindex); + tabbedPane.validate(); + + if (index > closedindex || index == tabbedPane.getTabCount()) + { + // modify currently selected tab index if necessary. + index--; + } + + this.tabSelectionChanged(index); + } + /** * DOCUMENT ME! */ @@ -1765,11 +1834,11 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, viewport.alignment)); viewport.setSelectionGroup(null); + viewport.sendSelection(); viewport.alignment.deleteGroup(sg); viewport.firePropertyChange("alignment", null, viewport.getAlignment() .getSequences()); - if (viewport.getAlignment().getHeight() < 1) { try @@ -1813,6 +1882,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, sg.setEndRes(viewport.alignment.getWidth() - 1); viewport.setSelectionGroup(sg); + viewport.sendSelection(); alignPanel.paintAlignment(true); PaintRefresher.Refresh(alignPanel, viewport.getSequenceSetId()); } @@ -1862,7 +1932,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, } alignPanel.paintAlignment(true); - + viewport.sendSelection(); PaintRefresher.Refresh(alignPanel, viewport.getSequenceSetId()); } @@ -2109,7 +2179,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, newap.av.viewName = newViewName; - addAlignmentPanel(newap, false); + addAlignmentPanel(newap, true); if (alignPanels.size() == 2) { @@ -2165,6 +2235,16 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, viewport.centreColumnLabels = centreColumnLabelsMenuItem.getState(); alignPanel.paintAlignment(true); } + /* (non-Javadoc) + * @see jalview.jbgui.GAlignFrame#followHighlight_actionPerformed() + */ + protected void followHighlight_actionPerformed() + { + if (viewport.followHighlight = this.followHighlightMenuItem.getState()) + { + alignPanel.scrollToPosition(alignPanel.seqPanel.seqCanvas.searchResults, false); + } + } /** * DOCUMENT ME! @@ -3715,12 +3795,12 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, } Alignment al = new Alignment(sprods); AlignedCodonFrame[] cf = prods.getCodonFrames(); + al.setDataset(ds); for (int s = 0; cf != null && s < cf.length; s++) { al.addCodonFrame(cf[s]); cf[s] = null; } - al.setDataset(ds); AlignFrame naf = new AlignFrame(al, DEFAULT_WIDTH, DEFAULT_HEIGHT); String newtitle = "" + ((fdna) ? "Proteins " : "Nucleotides ") @@ -4077,6 +4157,33 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, { viewport.setShowNpFeats(showNpFeatsMenuitem.isSelected()); } + + /** + * find the viewport amongst the tabs in this alignment frame and close that tab + * @param av + */ + public boolean closeView(AlignViewport av) + { + if (viewport == av) + { + this.closeMenuItem_actionPerformed(false); + return true; + } + Component[] comp = tabbedPane.getComponents(); + for (int i=0;comp!=null && i