package jetbrains.mps.ide.devkit.actions; /*Generated by MPS */ import jetbrains.mps.workbench.action.BaseAction; import javax.swing.Icon; import org.jetbrains.annotations.NotNull; import com.intellij.openapi.actionSystem.AnActionEvent; import java.util.Map; import jetbrains.mps.smodel.language.LanguageAspectDescriptor; import org.jetbrains.mps.openapi.module.SModule; import jetbrains.mps.internal.collections.runtime.MapSequence; import jetbrains.mps.smodel.Language; import jetbrains.mps.util.NameUtil; import jetbrains.mps.ide.icons.IconManager; import jetbrains.mps.ide.icons.IdeIcons; import jetbrains.mps.ide.actions.MPSCommonDataKeys; import com.intellij.openapi.project.Project; import com.intellij.openapi.actionSystem.CommonDataKeys; import java.util.Collection; import org.jetbrains.mps.openapi.model.SModel; import com.intellij.openapi.application.ApplicationManager; import jetbrains.mps.ide.projectPane.ProjectPane; public class NewAspectModelByDescriptor_Action extends BaseAction { private static final Icon ICON = null; private String aspectId; public NewAspectModelByDescriptor_Action(String aspectId_par) { super("Aspect Model", "", ICON); this.aspectId = aspectId_par; this.setIsAlwaysVisible(false); this.setExecuteOutsideCommand(false); } @Override public boolean isDumbAware() { return true; } @Override public void doUpdate(@NotNull AnActionEvent event, final Map<String, Object> _params) { LanguageAspectDescriptor ad = NewAspectModelActionHelper.getAspectById(NewAspectModelByDescriptor_Action.this.aspectId); if (ad == null || !((((SModule) MapSequence.fromMap(_params).get("module")) instanceof Language))) { disable(event.getPresentation()); return; } enable(event.getPresentation()); event.getPresentation().setText(NameUtil.capitalize(ad.getPresentableAspectName()) + " Aspect"); Icon icon = IconManager.getIconForResource(ad.getIconResource()); event.getPresentation().setIcon((icon != null ? icon : IdeIcons.MODEL_ICON)); NewAspectModelByDescriptor_Action.this.setEnabledState(event.getPresentation(), ad.canCreate(((SModule) MapSequence.fromMap(_params).get("module")))); } @Override protected boolean collectActionData(AnActionEvent event, final Map<String, Object> _params) { if (!(super.collectActionData(event, _params))) { return false; } { SModule p = event.getData(MPSCommonDataKeys.MODULE); MapSequence.fromMap(_params).put("module", p); if (p == null) { return false; } } { Project p = event.getData(CommonDataKeys.PROJECT); MapSequence.fromMap(_params).put("ideaProject", p); if (p == null) { return false; } } return true; } @Override public void doExecute(@NotNull final AnActionEvent event, final Map<String, Object> _params) { LanguageAspectDescriptor ad = NewAspectModelActionHelper.getAspectById(NewAspectModelByDescriptor_Action.this.aspectId); ad.create(((Language) ((SModule) MapSequence.fromMap(_params).get("module")))); // we need it since tree is updated later final Collection<SModel> aspectModels = ad.getAspectModels(((SModule) MapSequence.fromMap(_params).get("module"))); if (aspectModels.size() == 1) { ApplicationManager.getApplication().invokeLater(new Runnable() { public void run() { ProjectPane.getInstance(((Project) MapSequence.fromMap(_params).get("ideaProject"))).selectModel(aspectModels.iterator().next(), false); } }); } } @NotNull public String getActionId() { StringBuilder res = new StringBuilder(); res.append(super.getActionId()); res.append("#"); res.append(aspectId_State((String) this.aspectId)); res.append("!"); return res.toString(); } public static String aspectId_State(String object) { return object; } }