From: amwaterhouse Date: Thu, 23 Nov 2006 11:57:32 +0000 (+0000) Subject: Associate PCA with multiple views X-Git-Tag: Release_2_2~46 X-Git-Url: http://source.jalview.org/gitweb/?a=commitdiff_plain;h=291f2e12795d442d6b0bf9e4fb9570b258194925;p=jalview.git Associate PCA with multiple views --- diff --git a/src/jalview/gui/AlignFrame.java b/src/jalview/gui/AlignFrame.java index c1d1087..3291dca 100755 --- a/src/jalview/gui/AlignFrame.java +++ b/src/jalview/gui/AlignFrame.java @@ -2515,7 +2515,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener return; } - new PCAPanel(viewport); + new PCAPanel(alignPanel); } diff --git a/src/jalview/gui/PCAPanel.java b/src/jalview/gui/PCAPanel.java index 1abeb4f..90cd8e6 100755 --- a/src/jalview/gui/PCAPanel.java +++ b/src/jalview/gui/PCAPanel.java @@ -43,6 +43,7 @@ public class PCAPanel extends GPCAPanel implements Runnable PCA pca; int top; RotatableCanvas rc; + AlignmentPanel ap; AlignViewport av; AlignmentView seqstrings; SequenceI [] seqs; @@ -53,9 +54,10 @@ public class PCAPanel extends GPCAPanel implements Runnable * @param av DOCUMENT ME! * @param s DOCUMENT ME! */ - public PCAPanel(AlignViewport av) + public PCAPanel(AlignmentPanel ap) { - this.av = av; + this.av = ap.av; + this.ap = ap; boolean sameLength = true; @@ -97,7 +99,10 @@ public class PCAPanel extends GPCAPanel implements Runnable 400, 400); - rc = new RotatableCanvas(av); + + PaintRefresher.Register(this, av.getSequenceSetId()); + + rc = new RotatableCanvas(ap); this.getContentPane().add(rc, BorderLayout.CENTER); Thread worker = new Thread(this); worker.start(); @@ -413,4 +418,68 @@ public class PCAPanel extends GPCAPanel implements Runnable im.writeImage(); } } + + + public void viewMenu_menuSelected() + { + buildAssociatedViewMenu(); + } + + + void buildAssociatedViewMenu() + { + AlignmentPanel [] aps = PaintRefresher.getAssociatedPanels(av.getSequenceSetId()); + if(aps.length==1 && rc.av ==aps[0].av) + { + associateViewsMenu.setVisible(false); + return; + } + + associateViewsMenu.setVisible(true); + + if( (viewMenu.getItem(viewMenu.getItemCount()-2) instanceof JMenuItem)) + { + viewMenu.insertSeparator(viewMenu.getItemCount()-1); + } + + associateViewsMenu.removeAll(); + + + JRadioButtonMenuItem item; + ButtonGroup buttonGroup = new ButtonGroup(); + int i, iSize = aps.length; + final PCAPanel thisPCAPanel = this; + for(i=0; i