dmh.swing.enumselect.EnumSelectAction.java Source code

Java tutorial

Introduction

Here is the source code for dmh.swing.enumselect.EnumSelectAction.java

Source

/**
 * Junk - EnumSelectAction.java
 * Copyright 2011 Dave Huffman (dave dot huffman at me dot com).
 * Open source under the BSD 3-Clause License.
 */
package dmh.swing.enumselect;

import java.awt.event.ActionEvent;
import java.util.Observable;

import javax.swing.Action;

import org.apache.commons.lang.StringUtils;

import dmh.swing.AbstractActionObserver;

/**
 * Action object representing the selection of an enum value.
 *
 * @author davehuffman
 */
public final class EnumSelectAction<T extends Enum<T>> extends AbstractActionObserver {
    private static final long serialVersionUID = 1L;

    private final T enumValue;
    private final EnumSelectable<T> enumSelectable;

    /**
     * Construct a new enum select action.
     * @param enumValue The value this action represents.
     * @param enumSelectable Handler object for enum selections.
     */
    EnumSelectAction(T enumValue, EnumSelectable<T> enumSelectable) {
        super(StringUtils.capitalize(enumValue.toString().toLowerCase()));
        this.enumValue = enumValue;
        this.enumSelectable = enumSelectable;
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        enumSelectable.onEnumSelect(enumValue, e);
    }

    @Override
    public void update(Observable o, Object arg) {
        putValue(Action.SELECTED_KEY, (enumValue == arg));
    }

    T getEnumValue() {
        return enumValue;
    }
}