package com.link_intersystems.swing;
import java.awt.event.ActionEvent;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import javax.swing.AbstractAction;
import javax.swing.Action;
public class CompositeAction extends AbstractAction implements
PropertyChangeListener {
private static final long serialVersionUID = 3846981811584494081L;
ActionPropertySync propertySync = new ActionPropertySync(this);
private List<Action> actions = new ArrayList<Action>();
public CompositeAction(Action mainAction, Action... actions) {
this.actions.add(mainAction);
this.actions.addAll(Arrays.asList(actions));
propertySync.setSynchronization(mainAction);
propertySync.setSkipMissingPropertiesEnabled(true);
}
@Override
public void actionPerformed(ActionEvent e) {
for (Action action : actions) {
if (action.isEnabled()) {
action.actionPerformed(e);
}
}
}
@Override
public void propertyChange(PropertyChangeEvent evt) {
}
}