package jetbrains.mps.ide.devkit.actions; /*Generated by MPS */ import jetbrains.mps.nodeEditor.IntentionActionsProvider; import org.jetbrains.annotations.NotNull; import com.intellij.openapi.actionSystem.AnAction; import jetbrains.mps.openapi.intentions.IntentionExecutable; import javax.swing.Icon; import jetbrains.mps.intentions.icons.IntentionIconProvider; import jetbrains.mps.workbench.action.BaseAction; import com.intellij.openapi.actionSystem.AnActionEvent; import java.util.Map; import jetbrains.mps.project.Project; import jetbrains.mps.ide.actions.MPSCommonDataKeys; import org.jetbrains.mps.openapi.model.SNodeReference; import org.jetbrains.mps.openapi.model.SNode; import com.intellij.openapi.ui.Messages; import jetbrains.mps.ide.project.ProjectHelper; import jetbrains.mps.openapi.navigation.NavigationSupport; import jetbrains.mps.intentions.IntentionsManager; public class IntentionActionsProviderImpl implements IntentionActionsProvider { @NotNull public AnAction[] getIntentionActions(@NotNull final IntentionExecutable intention) { Icon icon = new IntentionIconProvider(intention.getDescriptor().getKind()).getIcon(); AnAction[] actions = {new BaseAction("Go to Intention Declaration", "Go to declaration of this intention", icon) { @Override protected void doExecute(AnActionEvent e, Map<String, Object> params) { final Project mpsProject = e.getData(MPSCommonDataKeys.MPS_PROJECT); mpsProject.getModelAccess().runWriteInEDT(new Runnable() { public void run() { SNodeReference nodeRef = intention.getDescriptor().getIntentionNodeReference(); SNode intentionNode = (nodeRef == null ? null : nodeRef.resolve(mpsProject.getRepository())); if (intentionNode == null) { Messages.showErrorDialog(ProjectHelper.toIdeaProject(mpsProject), String.format("Could not find declaration for %s intention (%s)", intention.getClass().getSimpleName(), intention.getClass().getName()), "Intention Declaration"); } else { NavigationSupport.getInstance().openNode(mpsProject, intentionNode, true, true); NavigationSupport.getInstance().selectInTree(mpsProject, intentionNode, false); } } }); } }, new BaseAction("Disable This Intention", "Disables this intention type", icon) { @Override protected void doExecute(AnActionEvent e, Map<String, Object> params) { IntentionsManager.getInstance().disableIntention(intention.getDescriptor().getPersistentStateKey()); } }}; return actions; } }