ProtAnalysisAbstractAction.java

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

import java.awt.event.ActionEvent;

import javax.swing.AbstractAction;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.github.celldynamics.quimp.utils.UiTools;

/**
 * Abstract actions for Prot_Analysis UI.
 * 
 * @author baniu
 *
 */
@SuppressWarnings("serial")
public abstract class ProtAnalysisAbstractAction extends AbstractAction {
  protected final Logger logger = LoggerFactory.getLogger(this.getClass().getName());
  protected ProtAnalysisUi ui;
  // helpers retrieved from ui
  protected Prot_Analysis model;
  protected ProtAnalysisOptions options;

  /**
   * Constructor for calling actions without AbstractAction (as Listener but not Action).
   * 
   * <p>Allows to pass only reference to window and use it as in {@link ActionClearPoints}.
   * 
   * @param ui reference to window
   */
  public ProtAnalysisAbstractAction(ProtAnalysisUi ui) {
    this.ui = ui;
    this.model = ui.getModel();
    this.options = (ProtAnalysisOptions) model.getOptions();
  }

  /**
   * Default action.
   * 
   * @param name name of the action
   * @param desc description
   * @param ui reference to UI object
   */
  public ProtAnalysisAbstractAction(String name, String desc, ProtAnalysisUi ui) {
    super(name);
    putValue(SHORT_DESCRIPTION, UiTools.getToolTipString(desc));
    this.ui = ui;
    this.model = ui.getModel();
    this.options = (ProtAnalysisOptions) model.getOptions();
  }

  /**
   * Helper for updating current frame.
   */
  public void updateCurrentView() {
    ui.updateOverlay(ui.getImagePlus().getCurrentSlice());
  }

  /*
   * (non-Javadoc)
   * 
   * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
   */
  @Override
  public abstract void actionPerformed(ActionEvent e);

}