/*\r
* Jalview - A Sequence Alignment Editor and Viewer\r
- * Copyright (C) 2005 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle\r
+ * Copyright (C) 2006 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle\r
*\r
* This program is free software; you can redistribute it and/or\r
* modify it under the terms of the GNU General Public License\r
PCA pca;\r
int top;\r
RotatableCanvas rc;\r
+ AlignmentPanel ap;\r
AlignViewport av;\r
AlignmentView seqstrings;\r
SequenceI [] seqs;\r
* @param av DOCUMENT ME!\r
* @param s DOCUMENT ME!\r
*/\r
- public PCAPanel(AlignViewport av)\r
+ public PCAPanel(AlignmentPanel ap)\r
{\r
- this.av = av;\r
+ this.av = ap.av;\r
+ this.ap = ap;\r
\r
boolean sameLength = true;\r
\r
400, 400);\r
\r
\r
- rc = new RotatableCanvas(av);\r
+\r
+ PaintRefresher.Register(this, av.getSequenceSetId());\r
+\r
+ rc = new RotatableCanvas(ap);\r
this.getContentPane().add(rc, BorderLayout.CENTER);\r
Thread worker = new Thread(this);\r
worker.start();\r
\r
rc.setPoints(points, pca.getM().rows);\r
rc.repaint();\r
+\r
+ addKeyListener(rc);\r
+\r
}\r
catch(OutOfMemoryError er)\r
{ JOptionPane.showInternalMessageDialog(Desktop.desktop,\r
if (true)\r
{\r
// make a new frame!\r
- AlignFrame af = new AlignFrame(al, (ColumnSelection) alAndColsel[1]);\r
+ AlignFrame af = new AlignFrame(al, (ColumnSelection) alAndColsel[1],\r
+ AlignFrame.DEFAULT_WIDTH,\r
+ AlignFrame.DEFAULT_HEIGHT\r
+);\r
\r
//>>>This is a fix for the moment, until a better solution is found!!<<<\r
// af.getFeatureRenderer().transferSettings(alignFrame.getFeatureRenderer());\r
// af.addSortByOrderMenuItem(ServiceName + " Ordering",\r
// msaorder);\r
\r
- Desktop.addInternalFrame(af, "original Data for " + this.title,\r
- AlignFrame.NEW_WINDOW_WIDTH,\r
- AlignFrame.NEW_WINDOW_HEIGHT);\r
+ Desktop.addInternalFrame(af, "Original Data for " + this.title,\r
+ AlignFrame.DEFAULT_WIDTH,\r
+ AlignFrame.DEFAULT_HEIGHT);\r
}\r
}\r
/* CutAndPasteTransfer cap = new CutAndPasteTransfer();\r
im.writeImage();\r
}\r
}\r
+\r
+\r
+ public void viewMenu_menuSelected()\r
+ {\r
+ buildAssociatedViewMenu();\r
+ }\r
+\r
+\r
+ void buildAssociatedViewMenu()\r
+ {\r
+ AlignmentPanel [] aps = PaintRefresher.getAssociatedPanels(av.getSequenceSetId());\r
+ if(aps.length==1 && rc.av ==aps[0].av)\r
+ {\r
+ associateViewsMenu.setVisible(false);\r
+ return;\r
+ }\r
+\r
+ associateViewsMenu.setVisible(true);\r
+\r
+ if( (viewMenu.getItem(viewMenu.getItemCount()-2) instanceof JMenuItem))\r
+ {\r
+ viewMenu.insertSeparator(viewMenu.getItemCount()-1);\r
+ }\r
+\r
+ associateViewsMenu.removeAll();\r
+\r
+\r
+ JRadioButtonMenuItem item;\r
+ ButtonGroup buttonGroup = new ButtonGroup();\r
+ int i, iSize = aps.length;\r
+ final PCAPanel thisPCAPanel = this;\r
+ for(i=0; i<iSize; i++)\r
+ {\r
+ final AlignmentPanel ap = aps[i];\r
+ item = new JRadioButtonMenuItem(ap.av.viewName, ap.av==rc.av );\r
+ buttonGroup.add(item);\r
+ item.addActionListener(new ActionListener()\r
+ {\r
+ public void actionPerformed(ActionEvent evt)\r
+ {\r
+ rc.applyToAllViews = false;\r
+ rc.av = ap.av;\r
+ rc.ap = ap;\r
+ PaintRefresher.Register(thisPCAPanel, ap.av.getSequenceSetId());\r
+ }\r
+ });\r
+\r
+ associateViewsMenu.add(item);\r
+ }\r
+\r
+ final JRadioButtonMenuItem itemf = new JRadioButtonMenuItem("All Views");\r
+\r
+ buttonGroup.add(itemf);\r
+\r
+ itemf.setSelected(rc.applyToAllViews);\r
+ itemf.addActionListener(new ActionListener()\r
+ {\r
+ public void actionPerformed(ActionEvent evt)\r
+ {\r
+ rc.applyToAllViews = itemf.isSelected();\r
+ }\r
+ });\r
+ associateViewsMenu.add(itemf);\r
+\r
+ }\r
+\r
}\r