package jetbrains.mps.lang.editor.menus.tests; /*Generated by MPS */ import java.util.List; import jetbrains.mps.openapi.editor.menus.transformation.TransformationMenuItem; import jetbrains.mps.openapi.editor.EditorComponent; import jetbrains.mps.openapi.editor.EditorContext; import org.jetbrains.mps.openapi.model.SNode; import org.jetbrains.mps.openapi.module.SRepository; import jetbrains.mps.openapi.editor.menus.transformation.TransformationMenuLookup; import jetbrains.mps.lang.editor.menus.transformation.DefaultTransformationMenuLookup; import jetbrains.mps.smodel.language.LanguageRegistry; import jetbrains.mps.lang.smodel.generator.smodelAdapter.SNodeOperations; import jetbrains.mps.baseLanguage.closures.runtime.Wrappers; import jetbrains.mps.nodeEditor.menus.MenuUtil; import org.jetbrains.mps.openapi.model.SNodeReference; import jetbrains.mps.lang.editor.menus.transformation.NamedTransformationMenuLookup; import jetbrains.mps.lang.core.behavior.INamedConcept__BehaviorDescriptor; import jetbrains.mps.smodel.adapter.structure.MetaAdapterFactory; public class MenuLoadingUtils { public static List<TransformationMenuItem> loadDefaultMenu(EditorComponent editorComponent, final String location) { final EditorContext editorContext = editorComponent.getEditorContext(); SNode node = editorComponent.getEditedNode(); SRepository repository = editorContext.getRepository(); final TransformationMenuLookup lookup = new DefaultTransformationMenuLookup(LanguageRegistry.getInstance(repository), SNodeOperations.getConcept(node)); final Wrappers._T<List<TransformationMenuItem>> items = new Wrappers._T<List<TransformationMenuItem>>(); repository.getModelAccess().runReadAction(new Runnable() { public void run() { items.value = MenuUtil.createMenu(lookup, location, editorContext.getSelectedCell()); } }); return items.value; } public static List<TransformationMenuItem> loadNamedMenu(EditorComponent editorComponent, SNodeReference menuNodeReference, String location) { return loadNamedMenu(editorComponent, MenuLoadingUtils.getMenuFqName(menuNodeReference, editorComponent), location); } private static List<TransformationMenuItem> loadNamedMenu(EditorComponent editorComponent, String menuFqName, final String location) { final EditorContext editorContext = editorComponent.getEditorContext(); SNode node = editorComponent.getEditedNode(); SRepository repository = editorContext.getRepository(); final TransformationMenuLookup lookup = new NamedTransformationMenuLookup(LanguageRegistry.getInstance(repository), SNodeOperations.getConcept(node), menuFqName); final Wrappers._T<List<TransformationMenuItem>> items = new Wrappers._T<List<TransformationMenuItem>>(); repository.getModelAccess().runReadAction(new Runnable() { public void run() { items.value = MenuUtil.createMenu(lookup, location, editorContext.getSelectedCell()); } }); return items.value; } private static String getMenuFqName(final SNodeReference menuNode, EditorComponent editorComponent) { final SRepository repository = editorComponent.getEditorContext().getRepository(); final Wrappers._T<String> fqName = new Wrappers._T<String>(); repository.getModelAccess().runReadAction(new Runnable() { public void run() { fqName.value = INamedConcept__BehaviorDescriptor.getFqName_idhEwIO9y.invoke(SNodeOperations.cast(menuNode.resolve(repository), MetaAdapterFactory.getInterfaceConcept(0xceab519525ea4f22L, 0x9b92103b95ca8c0cL, 0x110396eaaa4L, "jetbrains.mps.lang.core.structure.INamedConcept"))); } }); return fqName.value; } }