X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FPCAPanel.java;h=d7e0cd78d3c7bea344592aa99589c2570127f426;hb=0a1d49ccc421184b23bcb45cee901f5313913aa1;hp=8c2ecc9f851bbbfde7462e87e131893b067ea6c6;hpb=7c05496d1da22f21ce5ae1a199afb9b16c8777ea;p=jalview.git diff --git a/src/jalview/gui/PCAPanel.java b/src/jalview/gui/PCAPanel.java index 8c2ecc9..d7e0cd7 100755 --- a/src/jalview/gui/PCAPanel.java +++ b/src/jalview/gui/PCAPanel.java @@ -1,6 +1,6 @@ /* * Jalview - A Sequence Alignment Editor and Viewer - * Copyright (C) 2005 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle + * Copyright (C) 2006 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -43,8 +43,9 @@ public class PCAPanel extends GPCAPanel implements Runnable PCA pca; int top; RotatableCanvas rc; + AlignmentPanel ap; AlignViewport av; - String [] seqstrings; + AlignmentView seqstrings; SequenceI [] seqs; /** @@ -53,15 +54,15 @@ 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; - seqstrings = av.getSelectionAsString(); - - if (av.getSelectionGroup() == null) + seqstrings = av.getAlignmentView(av.getSelectionGroup()!=null); + if(av.getSelectionGroup()==null) { seqs = av.alignment.getSequencesArray(); } @@ -69,12 +70,12 @@ public class PCAPanel extends GPCAPanel implements Runnable { seqs = av.getSelectionGroup().getSequencesInOrder(av.alignment); } - - int length = seqs[0].getLength(); + SeqCigar sq[]=seqstrings.getSequences(); + int length = sq[0].getWidth(); for (int i = 0; i < seqs.length; i++) { - if (seqs[i].getLength() != length) + if (sq[i].getWidth() != length) { sameLength = false; break; @@ -98,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(); @@ -123,7 +127,7 @@ public class PCAPanel extends GPCAPanel implements Runnable public void run() { try{ - pca = new PCA(seqstrings); + pca = new PCA(seqstrings.getSequenceStrings(' ')); pca.run(); // Now find the component coordinates @@ -162,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, @@ -257,14 +264,62 @@ public class PCAPanel extends GPCAPanel implements Runnable public void originalSeqData_actionPerformed(ActionEvent e) { - CutAndPasteTransfer cap = new CutAndPasteTransfer(); - for(int i=0; i