package jetbrains.mps.ide.devkit.actions; /*Generated by MPS */ import jetbrains.mps.workbench.action.BaseAction; import javax.swing.Icon; import jetbrains.mps.icons.MPSIcons; import org.jetbrains.annotations.NotNull; import com.intellij.openapi.actionSystem.AnActionEvent; import java.util.Map; import jetbrains.mps.ide.actions.MPSCommonDataKeys; import jetbrains.mps.ide.ui.tree.module.ProjectModuleTreeNode; import jetbrains.mps.project.MPSProject; import org.jetbrains.mps.openapi.module.SModule; import javax.swing.tree.TreeNode; import jetbrains.mps.project.AbstractModule; import jetbrains.mps.smodel.Language; import jetbrains.mps.baseLanguage.closures.runtime.Wrappers; import jetbrains.mps.ide.dialogs.project.creation.NewModelDialog; import jetbrains.mps.smodel.SModelStereotype; import org.jetbrains.mps.openapi.model.SModel; import jetbrains.mps.project.structure.modules.LanguageDescriptor; public class NewAccessoryModel_Action extends BaseAction { private static final Icon ICON = MPSIcons.Nodes.Models.AccessoryModel; public NewAccessoryModel_Action() { super("New Accessory Model", "", ICON); this.setIsAlwaysVisible(false); this.setExecuteOutsideCommand(true); } @Override public boolean isDumbAware() { return true; } @Override public void doUpdate(@NotNull AnActionEvent event, final Map<String, Object> _params) { event.getPresentation().setText(((event.getData(MPSCommonDataKeys.TREE_NODE) instanceof ProjectModuleTreeNode ? "" : "New ")) + "Accesory Model"); } @Override protected boolean collectActionData(AnActionEvent event, final Map<String, Object> _params) { if (!(super.collectActionData(event, _params))) { return false; } { MPSProject p = event.getData(MPSCommonDataKeys.MPS_PROJECT); if (p == null) { return false; } } { SModule p = event.getData(MPSCommonDataKeys.CONTEXT_MODULE); if (p == null) { return false; } } { TreeNode p = event.getData(MPSCommonDataKeys.TREE_NODE); if (p == null) { return false; } } return true; } @Override public void doExecute(@NotNull final AnActionEvent event, final Map<String, Object> _params) { if (!(event.getData(MPSCommonDataKeys.CONTEXT_MODULE) instanceof AbstractModule)) { return; } final Language language = ((Language) event.getData(MPSCommonDataKeys.CONTEXT_MODULE)); final Wrappers._T<NewModelDialog> d = new Wrappers._T<NewModelDialog>(); event.getData(MPSCommonDataKeys.MPS_PROJECT).getModelAccess().runReadAction(new Runnable() { public void run() { d.value = new NewModelDialog(event.getData(MPSCommonDataKeys.MPS_PROJECT), ((AbstractModule) event.getData(MPSCommonDataKeys.CONTEXT_MODULE)), language.getModuleName(), SModelStereotype.NONE, true); } }); d.value.show(); final SModel result = d.value.getResult(); if (result == null) { return; } event.getData(MPSCommonDataKeys.MPS_PROJECT).getModelAccess().executeCommand(new Runnable() { public void run() { LanguageDescriptor descriptor = language.getModuleDescriptor(); descriptor.getAccessoryModels().add(result.getReference()); language.save(); } }); } }