PageRenderTime 49ms CodeModel.GetById 21ms RepoModel.GetById 1ms app.codeStats 0ms

/plugins/mps-build/languages/build/source_gen/jetbrains/mps/build/editor/BuildStringPart_SubstituteMenu.java

https://github.com/JetBrains/MPS
Java | 303 lines | 279 code | 23 blank | 1 comment | 14 complexity | fc02dd2524a7db55f06653acc8ec9a73 MD5 | raw file
  1. package jetbrains.mps.build.editor;
  2. /*Generated by MPS */
  3. import jetbrains.mps.nodeEditor.menus.substitute.SubstituteMenuBase;
  4. import org.jetbrains.annotations.NotNull;
  5. import java.util.List;
  6. import jetbrains.mps.lang.editor.menus.MenuPart;
  7. import jetbrains.mps.openapi.editor.menus.substitute.SubstituteMenuItem;
  8. import jetbrains.mps.openapi.editor.menus.substitute.SubstituteMenuContext;
  9. import java.util.ArrayList;
  10. import jetbrains.mps.lang.editor.menus.substitute.ConstraintsFilteringSubstituteMenuPartDecorator;
  11. import jetbrains.mps.lang.editor.menus.EditorMenuDescriptorBase;
  12. import jetbrains.mps.smodel.SNodePointer;
  13. import jetbrains.mps.lang.editor.menus.ParameterizedMenuPart;
  14. import org.jetbrains.mps.openapi.model.SNode;
  15. import org.jetbrains.annotations.Nullable;
  16. import jetbrains.mps.scope.Scope;
  17. import jetbrains.mps.internal.collections.runtime.Sequence;
  18. import jetbrains.mps.internal.collections.runtime.IWhereFilter;
  19. import jetbrains.mps.lang.smodel.generator.smodelAdapter.SNodeOperations;
  20. import jetbrains.mps.internal.collections.runtime.ISelector;
  21. import jetbrains.mps.lang.editor.menus.substitute.SingleItemSubstituteMenuPart;
  22. import org.apache.log4j.Logger;
  23. import jetbrains.mps.lang.editor.menus.substitute.DefaultSubstituteMenuItem;
  24. import jetbrains.mps.openapi.editor.menus.EditorMenuTraceInfo;
  25. import jetbrains.mps.smodel.action.SNodeFactoryOperations;
  26. import jetbrains.mps.lang.smodel.generator.smodelAdapter.SLinkOperations;
  27. import jetbrains.mps.editor.runtime.completion.CompletionItemInformation;
  28. import jetbrains.mps.smodel.presentation.NodePresentationUtil;
  29. import jetbrains.mps.smodel.runtime.IconResource;
  30. import jetbrains.mps.smodel.runtime.IconResourceUtil;
  31. import jetbrains.mps.lang.smodel.generator.smodelAdapter.SPropertyOperations;
  32. import java.util.regex.Pattern;
  33. import java.util.regex.Matcher;
  34. import jetbrains.mps.build.behavior.BuildStringContainer__BehaviorDescriptor;
  35. import jetbrains.mps.lang.editor.menus.ConceptMenusPart;
  36. import java.util.Collection;
  37. import jetbrains.mps.smodel.ConceptDescendantsCache;
  38. import org.jetbrains.mps.openapi.language.SAbstractConcept;
  39. import jetbrains.mps.lang.editor.menus.substitute.DefaultSubstituteMenuLookup;
  40. import jetbrains.mps.smodel.language.LanguageRegistry;
  41. import org.jetbrains.mps.openapi.language.SConcept;
  42. import jetbrains.mps.smodel.adapter.structure.MetaAdapterFactory;
  43. import org.jetbrains.mps.openapi.language.SInterfaceConcept;
  44. import org.jetbrains.mps.openapi.language.SReferenceLink;
  45. import org.jetbrains.mps.openapi.language.SProperty;
  46. public class BuildStringPart_SubstituteMenu extends SubstituteMenuBase {
  47. @NotNull
  48. @Override
  49. protected List<MenuPart<SubstituteMenuItem, SubstituteMenuContext>> getParts(final SubstituteMenuContext _context) {
  50. List<MenuPart<SubstituteMenuItem, SubstituteMenuContext>> result = new ArrayList<MenuPart<SubstituteMenuItem, SubstituteMenuContext>>();
  51. result.add(new ConstraintsFilteringSubstituteMenuPartDecorator(new SMP_Param_fvo6kj_a(), CONCEPTS.BuildVarRefStringPart$2T));
  52. result.add(new ConstraintsFilteringSubstituteMenuPartDecorator(new SMP_Action_fvo6kj_b(), CONCEPTS.BuildTextStringPart$3R));
  53. result.add(new SMP_Subconcepts_fvo6kj_c());
  54. return result;
  55. }
  56. @NotNull
  57. @Override
  58. public List<SubstituteMenuItem> createMenuItems(@NotNull SubstituteMenuContext context) {
  59. context.getEditorMenuTrace().pushTraceInfo();
  60. context.getEditorMenuTrace().setDescriptor(new EditorMenuDescriptorBase("default substitute menu for " + "BuildStringPart", new SNodePointer("r:00f69407-23a8-49a2-a236-9e89a32679aa(jetbrains.mps.build.editor)", "1741258697587202349")));
  61. try {
  62. return super.createMenuItems(context);
  63. } finally {
  64. context.getEditorMenuTrace().popTraceInfo();
  65. }
  66. }
  67. private class SMP_Param_fvo6kj_a extends ParameterizedMenuPart<SNode, SubstituteMenuItem, SubstituteMenuContext> {
  68. @NotNull
  69. @Override
  70. protected List<SubstituteMenuItem> createItems(SNode parameter, SubstituteMenuContext context) {
  71. return new SMP_Action_fvo6kj_a0(parameter).createItems(context);
  72. }
  73. @NotNull
  74. @Override
  75. public List<SubstituteMenuItem> createItems(@NotNull SubstituteMenuContext context) {
  76. context.getEditorMenuTrace().pushTraceInfo();
  77. context.getEditorMenuTrace().setDescriptor(new EditorMenuDescriptorBase("parameterized substitute menu part", new SNodePointer("r:00f69407-23a8-49a2-a236-9e89a32679aa(jetbrains.mps.build.editor)", "1741258697587202351")));
  78. try {
  79. return super.createItems(context);
  80. } finally {
  81. context.getEditorMenuTrace().popTraceInfo();
  82. }
  83. }
  84. @Nullable
  85. @Override
  86. protected Iterable<? extends SNode> getParameters(SubstituteMenuContext _context) {
  87. Scope scope = Scope.getScope(((_context.getCurrentTargetNode() != null) ? _context.getCurrentTargetNode() : _context.getParentNode()), null, CONCEPTS.BuildMacro$qd);
  88. if (scope == null) {
  89. return null;
  90. }
  91. return Sequence.fromIterable(scope.getAvailableElements(null)).where(new IWhereFilter<SNode>() {
  92. public boolean accept(SNode it) {
  93. return SNodeOperations.isInstanceOf(it, CONCEPTS.BuildVariableMacro$Rk);
  94. }
  95. }).select(new ISelector<SNode, SNode>() {
  96. public SNode select(SNode it) {
  97. return SNodeOperations.cast(it, CONCEPTS.BuildVariableMacro$Rk);
  98. }
  99. }).toListSequence();
  100. }
  101. private class SMP_Action_fvo6kj_a0 extends SingleItemSubstituteMenuPart {
  102. private final SNode myParameterObject;
  103. public SMP_Action_fvo6kj_a0(SNode parameterObject) {
  104. myParameterObject = parameterObject;
  105. }
  106. @Nullable
  107. @Override
  108. protected SubstituteMenuItem createItem(SubstituteMenuContext _context) {
  109. Item item = new Item(_context);
  110. String description;
  111. try {
  112. description = "Substitute item: " + item.getMatchingText("");
  113. description += ". Parameter object: " + myParameterObject;
  114. } catch (Throwable t) {
  115. Logger.getLogger(getClass()).error("Exception while executing getMatchingText() of the item " + item, t);
  116. return null;
  117. }
  118. _context.getEditorMenuTrace().pushTraceInfo();
  119. try {
  120. _context.getEditorMenuTrace().setDescriptor(new EditorMenuDescriptorBase(description, new SNodePointer("r:00f69407-23a8-49a2-a236-9e89a32679aa(jetbrains.mps.build.editor)", "1741258697587202430")));
  121. item.setTraceInfo(_context.getEditorMenuTrace().getTraceInfo());
  122. } finally {
  123. _context.getEditorMenuTrace().popTraceInfo();
  124. }
  125. return item;
  126. }
  127. private class Item extends DefaultSubstituteMenuItem {
  128. private final SubstituteMenuContext _context;
  129. private EditorMenuTraceInfo myTraceInfo;
  130. public Item(SubstituteMenuContext context) {
  131. super(CONCEPTS.BuildVarRefStringPart$2T, context);
  132. _context = context;
  133. }
  134. private void setTraceInfo(EditorMenuTraceInfo traceInfo) {
  135. myTraceInfo = traceInfo;
  136. }
  137. @Nullable
  138. @Override
  139. public SNode createNode(@NotNull String pattern) {
  140. SNode res = SNodeFactoryOperations.createNewNode(_context.getModel(), CONCEPTS.BuildVarRefStringPart$2T, null);
  141. SLinkOperations.setTarget(res, LINKS.macro$zsHz, myParameterObject);
  142. return res;
  143. }
  144. @Override
  145. public EditorMenuTraceInfo getTraceInfo() {
  146. return myTraceInfo;
  147. }
  148. @NotNull
  149. protected CompletionItemInformation createInformation(String pattern) {
  150. return new CompletionItemInformation(myParameterObject, CONCEPTS.BuildVarRefStringPart$2T, getMatchingText(pattern), getDescriptionText(pattern));
  151. }
  152. @Nullable
  153. @Override
  154. public String getDescriptionText(@NotNull String pattern) {
  155. if (myParameterObject instanceof SNode) {
  156. return NodePresentationUtil.descriptionText((SNode) myParameterObject);
  157. }
  158. return "" + myParameterObject;
  159. }
  160. @Nullable
  161. @Override
  162. public IconResource getIcon(@NotNull String pattern) {
  163. if (myParameterObject instanceof SNode) {
  164. return IconResourceUtil.getIconResourceForNode(((SNode) myParameterObject));
  165. }
  166. return null;
  167. }
  168. @Nullable
  169. @Override
  170. public String getMatchingText(@NotNull String pattern) {
  171. return "$" + SPropertyOperations.getString(myParameterObject, PROPS.name$MnvL);
  172. }
  173. }
  174. }
  175. }
  176. private class SMP_Action_fvo6kj_b extends SingleItemSubstituteMenuPart {
  177. @Nullable
  178. @Override
  179. protected SubstituteMenuItem createItem(SubstituteMenuContext _context) {
  180. Item item = new Item(_context);
  181. String description;
  182. try {
  183. description = "Substitute item: " + item.getMatchingText("");
  184. } catch (Throwable t) {
  185. Logger.getLogger(getClass()).error("Exception while executing getMatchingText() of the item " + item, t);
  186. return null;
  187. }
  188. _context.getEditorMenuTrace().pushTraceInfo();
  189. try {
  190. _context.getEditorMenuTrace().setDescriptor(new EditorMenuDescriptorBase(description, new SNodePointer("r:00f69407-23a8-49a2-a236-9e89a32679aa(jetbrains.mps.build.editor)", "1741258697587202512")));
  191. item.setTraceInfo(_context.getEditorMenuTrace().getTraceInfo());
  192. } finally {
  193. _context.getEditorMenuTrace().popTraceInfo();
  194. }
  195. return item;
  196. }
  197. private class Item extends DefaultSubstituteMenuItem {
  198. private final SubstituteMenuContext _context;
  199. private EditorMenuTraceInfo myTraceInfo;
  200. public Item(SubstituteMenuContext context) {
  201. super(CONCEPTS.BuildTextStringPart$3R, context);
  202. _context = context;
  203. }
  204. private void setTraceInfo(EditorMenuTraceInfo traceInfo) {
  205. myTraceInfo = traceInfo;
  206. }
  207. @Nullable
  208. @Override
  209. public SNode createNode(@NotNull String pattern) {
  210. SNode buildText = SNodeFactoryOperations.createNewNode(_context.getModel(), CONCEPTS.BuildTextStringPart$3R, null);
  211. SPropertyOperations.set(buildText, PROPS.text$lRuU, pattern);
  212. return buildText;
  213. }
  214. @Override
  215. public EditorMenuTraceInfo getTraceInfo() {
  216. return myTraceInfo;
  217. }
  218. @Nullable
  219. @Override
  220. public String getMatchingText(@NotNull String pattern) {
  221. if ((pattern == null || pattern.length() == 0)) {
  222. return "text";
  223. }
  224. {
  225. Pattern _pattern_0 = REGEXP;
  226. Matcher _matcher_0 = _pattern_0.matcher(pattern);
  227. if (_matcher_0.find()) {
  228. SNode container = (SNodeOperations.isInstanceOf(_context.getParentNode(), CONCEPTS.BuildString$bl) ? SNodeOperations.getParent(_context.getParentNode()) : _context.getParentNode());
  229. if (SNodeOperations.isInstanceOf(container, CONCEPTS.BuildStringContainer$o9)) {
  230. if ((boolean) BuildStringContainer__BehaviorDescriptor.isValidPart_id7XQqoCTkVIS.invoke(SNodeOperations.cast(container, CONCEPTS.BuildStringContainer$o9), pattern, (SNodeOperations.isInstanceOf(_context.getParentNode(), CONCEPTS.BuildString$bl) ? _context.getParentNode().getContainmentLink() : _context.getCurrentTargetNode().getContainmentLink()))) {
  231. return pattern;
  232. }
  233. } else if (!(pattern.contains("$"))) {
  234. return pattern;
  235. }
  236. return "text";
  237. }
  238. }
  239. return null;
  240. }
  241. }
  242. }
  243. public class SMP_Subconcepts_fvo6kj_c extends ConceptMenusPart<SubstituteMenuItem, SubstituteMenuContext> {
  244. protected Collection getConcepts(final SubstituteMenuContext _context) {
  245. return ConceptDescendantsCache.getInstance().getDirectDescendants(CONCEPTS.BuildStringPart$1V);
  246. }
  247. @NotNull
  248. @Override
  249. public List<SubstituteMenuItem> createItems(SubstituteMenuContext context) {
  250. context.getEditorMenuTrace().pushTraceInfo();
  251. context.getEditorMenuTrace().setDescriptor(new EditorMenuDescriptorBase("include menus for all the direct subconcepts of " + "BuildStringPart", new SNodePointer("r:00f69407-23a8-49a2-a236-9e89a32679aa(jetbrains.mps.build.editor)", "1741258697587202743")));
  252. try {
  253. return super.createItems(context);
  254. } finally {
  255. context.getEditorMenuTrace().popTraceInfo();
  256. }
  257. }
  258. @Override
  259. protected Collection<SubstituteMenuItem> createItemsForConcept(SubstituteMenuContext context, SAbstractConcept concept) {
  260. return context.createItems(new DefaultSubstituteMenuLookup(LanguageRegistry.getInstance(context.getEditorContext().getRepository()), concept));
  261. }
  262. }
  263. private static final Pattern REGEXP = Pattern.compile("[^\\$].*", 0);
  264. private static final class CONCEPTS {
  265. /*package*/ static final SConcept BuildVarRefStringPart$2T = MetaAdapterFactory.getConcept(0x798100da4f0a421aL, 0xb99171f8c50ce5d2L, 0x440d7ea3b68b7d01L, "jetbrains.mps.build.structure.BuildVarRefStringPart");
  266. /*package*/ static final SConcept BuildTextStringPart$3R = MetaAdapterFactory.getConcept(0x798100da4f0a421aL, 0xb99171f8c50ce5d2L, 0x440d7ea3b68b7d03L, "jetbrains.mps.build.structure.BuildTextStringPart");
  267. /*package*/ static final SConcept BuildMacro$qd = MetaAdapterFactory.getConcept(0x798100da4f0a421aL, 0xb99171f8c50ce5d2L, 0x4df58c6f18f84a1fL, "jetbrains.mps.build.structure.BuildMacro");
  268. /*package*/ static final SConcept BuildVariableMacro$Rk = MetaAdapterFactory.getConcept(0x798100da4f0a421aL, 0xb99171f8c50ce5d2L, 0x3449288aa0d560e2L, "jetbrains.mps.build.structure.BuildVariableMacro");
  269. /*package*/ static final SConcept BuildString$bl = MetaAdapterFactory.getConcept(0x798100da4f0a421aL, 0xb99171f8c50ce5d2L, 0x3cca41cd0fe51d4fL, "jetbrains.mps.build.structure.BuildString");
  270. /*package*/ static final SInterfaceConcept BuildStringContainer$o9 = MetaAdapterFactory.getInterfaceConcept(0x798100da4f0a421aL, 0xb99171f8c50ce5d2L, 0x7f76698a3953bbb4L, "jetbrains.mps.build.structure.BuildStringContainer");
  271. /*package*/ static final SConcept BuildStringPart$1V = MetaAdapterFactory.getConcept(0x798100da4f0a421aL, 0xb99171f8c50ce5d2L, 0x440d7ea3b68b7cffL, "jetbrains.mps.build.structure.BuildStringPart");
  272. }
  273. private static final class LINKS {
  274. /*package*/ static final SReferenceLink macro$zsHz = MetaAdapterFactory.getReferenceLink(0x798100da4f0a421aL, 0xb99171f8c50ce5d2L, 0x440d7ea3b68b7d01L, 0x440d7ea3b68b7d02L, "macro");
  275. }
  276. private static final class PROPS {
  277. /*package*/ static final SProperty name$MnvL = MetaAdapterFactory.getProperty(0xceab519525ea4f22L, 0x9b92103b95ca8c0cL, 0x110396eaaa4L, 0x110396ec041L, "name");
  278. /*package*/ static final SProperty text$lRuU = MetaAdapterFactory.getProperty(0x798100da4f0a421aL, 0xb99171f8c50ce5d2L, 0x440d7ea3b68b7d03L, 0x440d7ea3b68c4d56L, "text");
  279. }
  280. }