package jetbrains.mps.ide.actions; /*Generated by MPS */ import jetbrains.mps.workbench.action.BaseAction; import javax.swing.Icon; import com.intellij.openapi.actionSystem.AnActionEvent; import java.util.Map; import javax.swing.tree.TreeNode; import jetbrains.mps.internal.collections.runtime.MapSequence; import com.intellij.openapi.actionSystem.ActionGroup; import org.jetbrains.annotations.NotNull; import jetbrains.mps.project.MPSProject; import jetbrains.mps.ide.editor.MPSEditorDataKeys; import jetbrains.mps.baseLanguage.closures.runtime.Wrappers; import com.intellij.openapi.ui.popup.ListPopup; import jetbrains.mps.ide.projectPane.ProjectPaneActionGroups; import jetbrains.mps.ide.ui.tree.MPSTreeNode; import com.intellij.openapi.actionSystem.Presentation; import com.intellij.openapi.actionSystem.ActionPlaces; import com.intellij.openapi.actionSystem.ActionManager; import jetbrains.mps.workbench.action.ActionUtils; import com.intellij.openapi.ui.popup.JBPopupFactory; public class NewElement_Action extends BaseAction { private static final Icon ICON = null; public NewElement_Action() { super("New...", "", ICON); this.setIsAlwaysVisible(false); this.setExecuteOutsideCommand(true); this.addPlace(null); } @Override public boolean isDumbAware() { return true; } @Override public boolean isApplicable(AnActionEvent event, final Map<String, Object> _params) { return ((TreeNode) MapSequence.fromMap(_params).get("node")) != null || ((ActionGroup) MapSequence.fromMap(_params).get("group")) != null; } @Override public void doUpdate(@NotNull AnActionEvent event, final Map<String, Object> _params) { this.setEnabledState(event.getPresentation(), this.isApplicable(event, _params)); } @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); MapSequence.fromMap(_params).put("mpsProject", p); if (p == null) { return false; } } { TreeNode p = event.getData(MPSCommonDataKeys.TREE_NODE); MapSequence.fromMap(_params).put("node", p); } { ActionGroup p = event.getData(MPSEditorDataKeys.EDITOR_CREATE_GROUP); MapSequence.fromMap(_params).put("group", p); } return true; } @Override public void doExecute(@NotNull final AnActionEvent event, final Map<String, Object> _params) { final Wrappers._T<ListPopup> popup = new Wrappers._T<ListPopup>(null); ((MPSProject) MapSequence.fromMap(_params).get("mpsProject")).getRepository().getModelAccess().runReadAction(new Runnable() { public void run() { ActionGroup group = (((TreeNode) MapSequence.fromMap(_params).get("node")) != null ? ProjectPaneActionGroups.getQuickCreateGroup((MPSTreeNode) ((TreeNode) MapSequence.fromMap(_params).get("node"))) : ((ActionGroup) MapSequence.fromMap(_params).get("group"))); if (group != null) { Presentation pres = new Presentation(); AnActionEvent e = new AnActionEvent(event.getInputEvent(), event.getDataContext(), ActionPlaces.UNKNOWN, pres, ActionManager.getInstance(), 0); ActionUtils.updateGroup(group, e); popup.value = JBPopupFactory.getInstance().createActionGroupPopup("New", group, event.getDataContext(), JBPopupFactory.ActionSelectionAid.SPEEDSEARCH, false); } } }); if (popup.value == null) { return; } popup.value.showInBestPositionFor(event.getDataContext()); } }