ActionUpdateOptionsEnum.java

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

import java.awt.event.ActionEvent;

import javax.swing.JComboBox;

import com.github.celldynamics.quimp.plugin.protanalysis.ProtAnalysisOptions.IEnumDataType;

/**
 * Action to set Enum based types.
 * 
 * <p>Set value for any datatype that implements {@link IEnumDataType} {@link ProtAnalysisOptions}.
 * 
 * @author p.baniukiewicz
 *
 */
@SuppressWarnings("serial")
public class ActionUpdateOptionsEnum extends ProtAnalysisAbstractAction {

  private IEnumDataType val;

  /**
   * Main constructor.
   * 
   * @param name name
   * @param desc description
   * @param ui reference to outer class
   * @param option reference to parameter to be changed
   */
  public ActionUpdateOptionsEnum(String name, String desc, ProtAnalysisUi ui,
          IEnumDataType option) {
    super(name, desc, ui);
    this.val = option;
  }

  /*
   * (non-Javadoc)
   * 
   * @see
   * com.github.celldynamics.quimp.plugin.protanalysis.ProtAnalysisAbstractAction#actionPerformed(
   * java.awt.event.ActionEvent)
   */
  @Override
  public void actionPerformed(ActionEvent e) {
    JComboBox<?> cmp = ((JComboBox<?>) e.getSource());
    Object item = cmp.getSelectedItem();
    if (item instanceof Enum) { // for JComboBox<Number> just get selected value
      logger.trace("val: " + item.toString());
      val.setCurrent((Enum<?>) item);
    } else {
      throw new RuntimeException("This JComboBox is not supported");
    }

    logger.trace(ui.getModel().getOptions().serialize());

  }

}