package jetbrains.mps.execution.api.settings;
/*Generated by MPS */
import javax.swing.AbstractAction;
import org.jetbrains.annotations.NotNull;
import javax.swing.Action;
import jetbrains.mps.baseLanguage.closures.runtime._FunctionTypes;
import java.awt.event.ActionEvent;
import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeEvent;
public class ActionWrapper extends AbstractAction {
@NotNull
private final Action myAction;
@NotNull
private final _FunctionTypes._void_P1_E0<? super ActionEvent> myCallback;
public ActionWrapper(@NotNull Action action, @NotNull _FunctionTypes._void_P1_E0<? super ActionEvent> callback) {
super((String) action.getValue(Action.NAME));
setEnabled(action.isEnabled());
myAction = action;
myAction.addPropertyChangeListener(new PropertyChangeListener() {
@Override
public void propertyChange(PropertyChangeEvent event) {
putValue(event.getPropertyName(), event.getNewValue());
}
});
myCallback = callback;
}
@Override
public void actionPerformed(ActionEvent event) {
myAction.actionPerformed(event);
myCallback.invoke(event);
}
}