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>>This is a fix for the moment, until a better solution is found!!<<<
+ // af.getFeatureRenderer().transferSettings(alignFrame.getFeatureRenderer());
+
+ // af.addSortByOrderMenuItem(ServiceName + " Ordering",
+ // msaorder);
+
+ Desktop.addInternalFrame(af, "Original Data for " + this.title,
+ AlignFrame.DEFAULT_WIDTH,
+ AlignFrame.DEFAULT_HEIGHT);
+ }
+ }
+ /* CutAndPasteTransfer cap = new CutAndPasteTransfer();
+ for (int i = 0; i < seqs.length; i++)
+ {
+ cap.appendText(new jalview.util.Format("%-" + 15 + "s").form(
+ seqs[i].getName()));
+ cap.appendText(" " + seqstrings[i] + "\n");
+
+ }
+
+ Desktop.addInternalFrame(cap, "Original Data",
+ 400, 400);
+ */
}
@@ -363,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