package jetbrains.mps.ide.script.plugin;
/*Generated by MPS */
import jetbrains.mps.workbench.action.BaseAction;
import com.intellij.openapi.project.DumbAware;
import org.jetbrains.mps.openapi.model.SNode;
import java.util.List;
import org.jetbrains.mps.openapi.model.SModel;
import org.jetbrains.mps.openapi.module.SModule;
import jetbrains.mps.project.MPSProject;
import com.intellij.openapi.actionSystem.AnActionEvent;
import java.util.Map;
import org.jetbrains.mps.openapi.module.SearchScope;
import java.util.ArrayList;
import jetbrains.mps.ide.actions.MPSCommonDataKeys;
import jetbrains.mps.internal.collections.runtime.ListSequence;
public class RunMigrationScriptAction extends BaseAction implements DumbAware {
private SNode myScript;
private boolean myApplyToSelection;
private List<SModel> myModels;
private List<SModule> myModules;
private MPSProject myProject;
public RunMigrationScriptAction(SNode script, String name, boolean applyToSelection) {
super(name);
myScript = script;
myApplyToSelection = applyToSelection;
}
@Override
protected void doExecute(AnActionEvent e, Map<String, Object> _params) {
SearchScope scope;
if (myApplyToSelection) {
scope = AbstractMigrationScriptHelper.createMigrationScope(myModules, myModels);
} else {
scope = AbstractMigrationScriptHelper.createMigrationScope(myProject);
}
if (!(scope.getModels().iterator().hasNext())) {
return;
}
List<SNode> scripts = new ArrayList<SNode>();
scripts.add(myScript);
AbstractMigrationScriptHelper.doRunScripts(scripts, scope, myProject);
}
@Override
protected boolean collectActionData(AnActionEvent e, Map<String, Object> _params) {
if (!(super.collectActionData(e, _params))) {
return false;
}
myProject = e.getData(MPSCommonDataKeys.MPS_PROJECT);
if (myProject == null) {
return false;
}
myModels = new ArrayList<SModel>();
if (e.getData(MPSCommonDataKeys.MODELS) != null) {
for (SModel model : ListSequence.fromList(e.getData(MPSCommonDataKeys.MODELS))) {
myModels.add(model);
}
}
myModules = new ArrayList<SModule>();
if (e.getData(MPSCommonDataKeys.MODULES) != null) {
for (SModule module : ListSequence.fromList(e.getData(MPSCommonDataKeys.MODULES))) {
myModules.add(module);
}
}
return true;
}
}