package oripa.appstate;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
/**
* A template for grouped state.
* @author koji
*
* @param <GroupEnum> Enum of group identifier
*/
public class ApplicationState<GroupEnum> implements GroupMember<GroupEnum> {
private final GroupEnum group;
private ArrayList<ActionListener> actions = new ArrayList<ActionListener>();
// TODO: use a class different from ActionListener which performs with no parameters.
/**
* A constructor which binds a group and actions.
* @param group group identifier
* @param actions actions to be performed on this state.
*/
public ApplicationState(GroupEnum group, ActionListener[] actions) {
this.group = group;
addActions(actions);
}
public void addAction(ActionListener action){
this.actions.add(action);
}
public void addActions(ActionListener[] actions){
if(actions == null){
return;
}
for(ActionListener action : actions){
addAction(action);
}
}
/**
* performs actions of this state.
*
* @param e
*/
public void performActions(ActionEvent e){
if(actions == null){
return;
}
for(ActionListener action : actions){
action.actionPerformed(e);
}
}
@Override
public GroupEnum getGroup() {
return group;
}
}