ActionPolarPlot.java

package com.github.celldynamics.quimp.plugin.protanalysis;

import java.awt.event.ActionEvent;
import java.io.IOException;
import java.nio.file.Paths;

import com.github.celldynamics.quimp.QParamsQconf;
import com.github.celldynamics.quimp.QuimpException;
import com.github.celldynamics.quimp.QuimpException.MessageSinkTypes;
import com.github.celldynamics.quimp.filesystem.FileExtensions;
import com.github.celldynamics.quimp.filesystem.QconfLoader;
import com.github.celldynamics.quimp.plugin.qanalysis.STmap;
import com.github.celldynamics.quimp.utils.graphics.PolarPlot;

import ij.IJ;

/**
 * Action for generating polar plots for selected point.
 * 
 * <p>Read:
 * <ol>
 * <li>{@link ProtAnalysisOptions#gradientPoint}
 * </ol>
 * 
 * @author p.baniukiewicz
 *
 */
@SuppressWarnings("serial")
public class ActionPolarPlot extends ProtAnalysisAbstractAction {

  /**
   * Action creator.
   * 
   * @param name name
   * @param desc description
   * @param ui reference to outer class.
   */
  public ActionPolarPlot(String name, String desc, ProtAnalysisUi ui) {
    super(name, desc, ui);
  }

  /*
   * (non-Javadoc)
   * 
   * @see
   * com.github.celldynamics.quimp.plugin.protanalysis.ProtAnalysisAbstractAction#actionPerformed(
   * java.awt.event.ActionEvent)
   */
  @Override
  public void actionPerformed(ActionEvent e) {
    QconfLoader qconfLoader = ui.getModel().getQconfLoader();
    STmap[] stMap = ((QParamsQconf) qconfLoader.getQp()).getLoadedDataContainer().getQState();
    int h = 0;
    for (STmap mapCell : stMap) {
      try {
        PolarPlot pp = new PolarPlot(mapCell, options.gradientPoint);
        pp.labels = true;
        String fileToSave = Paths.get(qconfLoader.getQp().getPath(),
                qconfLoader.getQp().getFileName() + "_" + h + FileExtensions.polarPlotSuffix)
                .toString();
        pp.generatePlot(fileToSave);
        logger.info("Polar plot saved in " + fileToSave);
        if (ui.getModel().getSink() == MessageSinkTypes.GUI
                || ui.getModel().getSink() == MessageSinkTypes.IJERROR) {
          IJ.log("Polar plot saved in " + fileToSave);
        }
        h++;
      } catch (IOException ex) {
        new QuimpException(ex, ui.getModel().getSink()).handleException(null,
                "Problem with saving polar plots");
        break; // break loop
      }
    }
  }

}