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); } }