JAL-1767 port save/load PCA panel to JAXB - JAL-3063
[jalview.git] / src / jalview / gui / PCAPanel.java
index da1dffe..df0cd03 100644 (file)
@@ -21,6 +21,7 @@
 package jalview.gui;
 
 import jalview.analysis.scoremodels.ScoreModels;
+import jalview.api.AlignViewportI;
 import jalview.api.analysis.ScoreModelI;
 import jalview.api.analysis.SimilarityParamsI;
 import jalview.bin.Cache;
@@ -64,15 +65,15 @@ public class PCAPanel extends GPCAPanel
 
   private static final int MIN_HEIGHT = 250;
 
-  RotatableCanvas rc;
+  private RotatableCanvas rc;
 
   AlignmentPanel ap;
 
   AlignmentViewport av;
 
-  PCAModel pcaModel;
+  private PCAModel pcaModel;
 
-  int top = 0;
+  private int top = 0;
 
   private IProgressIndicator progressBar;
 
@@ -120,14 +121,14 @@ public class PCAPanel extends GPCAPanel
 
     ScoreModelI scoreModel = ScoreModels.getInstance()
             .getScoreModel(modelName, ap);
-    pcaModel = new PCAModel(seqstrings, seqs, nucleotide, scoreModel,
-            params);
+    setPcaModel(new PCAModel(seqstrings, seqs, nucleotide, scoreModel,
+            params));
     PaintRefresher.Register(this, av.getSequenceSetId());
 
-    rc = new RotatableCanvas(alignPanel);
-    this.getContentPane().add(rc, BorderLayout.CENTER);
+    setRotatableCanvas(new RotatableCanvas(alignPanel));
+    this.getContentPane().add(getRotatableCanvas(), BorderLayout.CENTER);
 
-    addKeyListener(rc);
+    addKeyListener(getRotatableCanvas());
     validate();
 
     this.setMinimumSize(new Dimension(MIN_WIDTH, MIN_HEIGHT));
@@ -139,7 +140,7 @@ public class PCAPanel extends GPCAPanel
    */
   protected void close_actionPerformed()
   {
-    pcaModel = null;
+    setPcaModel(null);
   }
 
   @Override
@@ -147,13 +148,13 @@ public class PCAPanel extends GPCAPanel
   {
     Color col = JColorChooser.showDialog(this,
             MessageManager.getString("label.select_background_colour"),
-            rc.bgColour);
+            getRotatableCanvas().getBgColour());
 
     if (col != null)
     {
-      rc.bgColour = col;
+      getRotatableCanvas().setBgColour(col);
     }
-    rc.repaint();
+    getRotatableCanvas().repaint();
   }
 
   /**
@@ -174,15 +175,15 @@ public class PCAPanel extends GPCAPanel
     progress.setProgressBar(message, progId);
     try
     {
-      pcaModel.calculate();
+      getPcaModel().calculate();
 
       xCombobox.setSelectedIndex(0);
       yCombobox.setSelectedIndex(1);
       zCombobox.setSelectedIndex(2);
 
-      pcaModel.updateRc(rc);
+      getPcaModel().updateRc(getRotatableCanvas());
       // rc.invalidate();
-      top = pcaModel.getTop();
+      setTop(getPcaModel().getTop());
 
     } catch (OutOfMemoryError er)
     {
@@ -199,7 +200,7 @@ public class PCAPanel extends GPCAPanel
     {
       Desktop.addInternalFrame(this,
               MessageManager.formatMessage("label.calc_title", "PCA",
-                      pcaModel.getScoreModelName()),
+                      getPcaModel().getScoreModelName()),
               475, 450);
     }
     working = false;
@@ -212,16 +213,16 @@ public class PCAPanel extends GPCAPanel
   @Override
   protected void doDimensionChange()
   {
-    if (top == 0)
+    if (getTop() == 0)
     {
       return;
     }
 
-    int dim1 = top - xCombobox.getSelectedIndex();
-    int dim2 = top - yCombobox.getSelectedIndex();
-    int dim3 = top - zCombobox.getSelectedIndex();
-    pcaModel.updateRcView(dim1, dim2, dim3);
-    rc.resetView();
+    int dim1 = getTop() - xCombobox.getSelectedIndex();
+    int dim2 = getTop() - yCombobox.getSelectedIndex();
+    int dim3 = getTop() - zCombobox.getSelectedIndex();
+    getPcaModel().updateRcView(dim1, dim2, dim3);
+    getRotatableCanvas().resetView();
   }
 
   /**
@@ -254,7 +255,7 @@ public class PCAPanel extends GPCAPanel
     CutAndPasteTransfer cap = new CutAndPasteTransfer();
     try
     {
-      cap.setText(pcaModel.getDetails());
+      cap.setText(getPcaModel().getDetails());
       Desktop.addInternalFrame(cap,
               MessageManager.getString("label.pca_details"), 500, 500);
     } catch (OutOfMemoryError oom)
@@ -267,7 +268,7 @@ public class PCAPanel extends GPCAPanel
   @Override
   protected void showLabels_actionPerformed()
   {
-    rc.showLabels(showLabels.getState());
+    getRotatableCanvas().showLabels(showLabels.getState());
   }
 
   @Override
@@ -285,7 +286,7 @@ public class PCAPanel extends GPCAPanel
   public void originalSeqData_actionPerformed()
   {
     // JAL-2647 disabled after load from project (until save to project done)
-    if (pcaModel.getInputData() == null)
+    if (getPcaModel().getInputData() == null)
     {
       Cache.log.info(
               "Unexpected call to originalSeqData_actionPerformed - should have hidden this menu action.");
@@ -307,7 +308,7 @@ public class PCAPanel extends GPCAPanel
     {
     }
 
-    Object[] alAndColsel = pcaModel.getInputData()
+    Object[] alAndColsel = getPcaModel().getInputData()
             .getAlignmentAndHiddenColumns(gc);
 
     if (alAndColsel != null && alAndColsel[0] != null)
@@ -389,11 +390,11 @@ public class PCAPanel extends GPCAPanel
     {
       pg.translate((int) pf.getImageableX(), (int) pf.getImageableY());
 
-      rc.drawBackground(pg);
-      rc.drawScene(pg);
-      if (rc.drawAxes)
+      getRotatableCanvas().drawBackground(pg);
+      getRotatableCanvas().drawScene(pg);
+      if (getRotatableCanvas().drawAxes)
       {
-        rc.drawAxes(pg);
+        getRotatableCanvas().drawAxes(pg);
       }
 
       if (pi == 0)
@@ -427,8 +428,8 @@ public class PCAPanel extends GPCAPanel
 
   void makePCAImage(ImageMaker.TYPE type)
   {
-    int width = rc.getWidth();
-    int height = rc.getHeight();
+    int width = getRotatableCanvas().getWidth();
+    int height = getRotatableCanvas().getHeight();
 
     ImageMaker im;
 
@@ -452,11 +453,11 @@ public class PCAPanel extends GPCAPanel
 
     if (im.getGraphics() != null)
     {
-      rc.drawBackground(im.getGraphics());
-      rc.drawScene(im.getGraphics());
-      if (rc.drawAxes)
+      getRotatableCanvas().drawBackground(im.getGraphics());
+      getRotatableCanvas().drawScene(im.getGraphics());
+      if (getRotatableCanvas().drawAxes)
       {
-        rc.drawAxes(im.getGraphics());
+        getRotatableCanvas().drawAxes(im.getGraphics());
       }
       im.writeImage();
     }
@@ -476,7 +477,7 @@ public class PCAPanel extends GPCAPanel
   {
     AlignmentPanel[] aps = PaintRefresher
             .getAssociatedPanels(av.getSequenceSetId());
-    if (aps.length == 1 && rc.av == aps[0].av)
+    if (aps.length == 1 && getRotatableCanvas().av == aps[0].av)
     {
       associateViewsMenu.setVisible(false);
       return;
@@ -498,17 +499,18 @@ public class PCAPanel extends GPCAPanel
 
     for (int i = 0; i < iSize; i++)
     {
-      final AlignmentPanel ap = aps[i];
-      item = new JRadioButtonMenuItem(ap.av.getViewName(), ap.av == rc.av);
+      final AlignmentPanel panel = aps[i];
+      item = new JRadioButtonMenuItem(panel.av.getViewName(),
+              panel.av == getRotatableCanvas().av);
       buttonGroup.add(item);
       item.addActionListener(new ActionListener()
       {
         @Override
         public void actionPerformed(ActionEvent evt)
         {
-          rc.applyToAllViews = false;
-          rc.av = panel.av;
-          rc.ap = panel;
+          getRotatableCanvas().setApplyToAllViews(false);
+          getRotatableCanvas().av = panel.av;
+          getRotatableCanvas().ap = panel;
           PaintRefresher.Register(PCAPanel.this,
                   panel.av.getSequenceSetId());
         }
@@ -522,13 +524,13 @@ public class PCAPanel extends GPCAPanel
 
     buttonGroup.add(itemf);
 
-    itemf.setSelected(rc.applyToAllViews);
+    itemf.setSelected(getRotatableCanvas().isApplyToAllViews());
     itemf.addActionListener(new ActionListener()
     {
       @Override
       public void actionPerformed(ActionEvent evt)
       {
-        rc.applyToAllViews = itemf.isSelected();
+        getRotatableCanvas().setApplyToAllViews(itemf.isSelected());
       }
     });
     associateViewsMenu.add(itemf);
@@ -548,7 +550,7 @@ public class PCAPanel extends GPCAPanel
     CutAndPasteTransfer cap = new CutAndPasteTransfer();
     try
     {
-      cap.setText(pcaModel.getPointsasCsv(false,
+      cap.setText(getPcaModel().getPointsasCsv(false,
               xCombobox.getSelectedIndex(), yCombobox.getSelectedIndex(),
               zCombobox.getSelectedIndex()));
       Desktop.addInternalFrame(cap, MessageManager
@@ -574,7 +576,7 @@ public class PCAPanel extends GPCAPanel
     CutAndPasteTransfer cap = new CutAndPasteTransfer();
     try
     {
-      cap.setText(pcaModel.getPointsasCsv(true,
+      cap.setText(getPcaModel().getPointsasCsv(true,
               xCombobox.getSelectedIndex(), yCombobox.getSelectedIndex(),
               zCombobox.getSelectedIndex()));
       Desktop.addInternalFrame(cap, MessageManager.formatMessage(
@@ -686,11 +688,11 @@ public class PCAPanel extends GPCAPanel
   @Override
   protected void resetButton_actionPerformed()
   {
-    int t = top;
-    top = 0; // ugly - prevents dimensionChanged events from being processed
+    int t = getTop();
+    setTop(0); // ugly - prevents dimensionChanged events from being processed
     xCombobox.setSelectedIndex(0);
     yCombobox.setSelectedIndex(1);
-    top = t;
+    setTop(t);
     zCombobox.setSelectedIndex(2);
   }
 
@@ -738,7 +740,42 @@ public class PCAPanel extends GPCAPanel
    */
   public void setInputData(AlignmentView data)
   {
-    pcaModel.setInputData(data);
+    getPcaModel().setInputData(data);
     originalSeqData.setVisible(data != null);
   }
+
+  public AlignViewportI getAlignViewport()
+  {
+    return av;
+  }
+
+  public PCAModel getPcaModel()
+  {
+    return pcaModel;
+  }
+
+  public void setPcaModel(PCAModel pcaModel)
+  {
+    this.pcaModel = pcaModel;
+  }
+
+  public RotatableCanvas getRotatableCanvas()
+  {
+    return rc;
+  }
+
+  public void setRotatableCanvas(RotatableCanvas rc)
+  {
+    this.rc = rc;
+  }
+
+  public int getTop()
+  {
+    return top;
+  }
+
+  public void setTop(int top)
+  {
+    this.top = top;
+  }
 }