X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FPCAPanel.java;h=d7e0cd78d3c7bea344592aa99589c2570127f426;hb=77c35fa912621cbadcf5ec74da4c6d45de6322e1;hp=9626a2c48165ab2488fd1406c43e2b4d66e2d41c;hpb=174230b4233d9ce80f94527768d2cd2f76da11ab;p=jalview.git diff --git a/src/jalview/gui/PCAPanel.java b/src/jalview/gui/PCAPanel.java index 9626a2c..d7e0cd7 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(); @@ -161,6 +166,9 @@ public class PCAPanel extends GPCAPanel implements Runnable rc.setPoints(points, pca.getM().rows); rc.repaint(); + + addKeyListener(rc); + } catch(OutOfMemoryError er) { JOptionPane.showInternalMessageDialog(Desktop.desktop, @@ -284,7 +292,10 @@ public class PCAPanel extends GPCAPanel implements Runnable if (true) { // make a new frame! - AlignFrame af = new AlignFrame(al, (ColumnSelection) alAndColsel[1]); + AlignFrame af = new AlignFrame(al, (ColumnSelection) alAndColsel[1], + AlignFrame.DEFAULT_WIDTH, + AlignFrame.DEFAULT_HEIGHT +); //>>>This is a fix for the moment, until a better solution is found!!<<< // af.getFeatureRenderer().transferSettings(alignFrame.getFeatureRenderer()); @@ -293,8 +304,8 @@ public class PCAPanel extends GPCAPanel implements Runnable // msaorder); Desktop.addInternalFrame(af, "Original Data for " + this.title, - AlignFrame.NEW_WINDOW_WIDTH, - AlignFrame.NEW_WINDOW_HEIGHT); + AlignFrame.DEFAULT_WIDTH, + AlignFrame.DEFAULT_HEIGHT); } } /* CutAndPasteTransfer cap = new CutAndPasteTransfer(); @@ -407,4 +418,70 @@ 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