package jetbrains.mps.console.base.behavior; /*Generated by MPS */ import jetbrains.mps.core.aspects.behaviour.BaseBHDescriptor; import org.apache.log4j.Logger; import org.apache.log4j.LogManager; import org.jetbrains.mps.openapi.language.SAbstractConcept; import jetbrains.mps.smodel.adapter.structure.MetaAdapterFactory; import jetbrains.mps.core.aspects.behaviour.api.BehaviorRegistry; import jetbrains.mps.smodel.language.ConceptRegistry; import jetbrains.mps.core.aspects.behaviour.api.SMethod; import jetbrains.mps.core.aspects.behaviour.SMethodBuilder; import jetbrains.mps.core.aspects.behaviour.SJavaCompoundTypeImpl; import jetbrains.mps.core.aspects.behaviour.SModifiersImpl; import jetbrains.mps.core.aspects.behaviour.AccessPrivileges; import jetbrains.mps.console.tool.ConsoleContext; import jetbrains.mps.console.tool.ConsoleStream; import java.util.List; import java.util.Arrays; import org.jetbrains.annotations.NotNull; import org.jetbrains.mps.openapi.model.SNode; import jetbrains.mps.lang.smodel.generator.smodelAdapter.SLinkOperations; import jetbrains.mps.internal.collections.runtime.ListSequence; import jetbrains.mps.lang.smodel.generator.smodelAdapter.SConceptOperations; import jetbrains.mps.internal.collections.runtime.IWhereFilter; import org.jetbrains.mps.openapi.language.SConcept; import jetbrains.mps.smodel.SNodeUtil; import jetbrains.mps.internal.collections.runtime.ISelector; import jetbrains.mps.lang.smodel.query.behavior.HelpProvider__BehaviorDescriptor; import jetbrains.mps.lang.smodel.generator.smodelAdapter.SNodeOperations; import java.util.Deque; import jetbrains.mps.internal.collections.runtime.LinkedListSequence; import java.util.LinkedList; import jetbrains.mps.internal.collections.runtime.Sequence; import java.util.ArrayList; import jetbrains.mps.internal.collections.runtime.IListSequence; import org.apache.log4j.Level; import jetbrains.mps.internal.collections.runtime.IRightCombinator; import jetbrains.mps.lang.structure.behavior.AbstractConceptDeclaration__BehaviorDescriptor; import jetbrains.mps.core.aspects.behaviour.api.SConstructor; import org.jetbrains.annotations.Nullable; import jetbrains.mps.core.aspects.behaviour.api.BHMethodNotFoundException; public final class HelpCommand__BehaviorDescriptor extends BaseBHDescriptor { private static final Logger LOG = LogManager.getLogger(HelpCommand__BehaviorDescriptor.class); private static final SAbstractConcept CONCEPT = MetaAdapterFactory.getConcept(0xde1ad86d6e504a02L, 0xb306d4d17f64c375L, 0x690b986730a1f80L, "jetbrains.mps.console.base.structure.HelpCommand"); private static final BehaviorRegistry REGISTRY = ConceptRegistry.getInstance().getBehaviorRegistry(); public static final SMethod<Void> doExecute_id2SpVAIqougW = new SMethodBuilder<Void>(new SJavaCompoundTypeImpl(Void.class)).name("doExecute").modifiers(SModifiersImpl.create(8, AccessPrivileges.PUBLIC)).concept(CONCEPT).id("2SpVAIqougW").registry(REGISTRY).build(SMethodBuilder.createJavaParameter(ConsoleContext.class, ""), SMethodBuilder.createJavaParameter(ConsoleStream.class, "")); public static final SMethod<String> getShortHelp_idqgIopNa9Hb = new SMethodBuilder<String>(new SJavaCompoundTypeImpl(String.class)).name("getShortelp").modifiers(SModifiersImpl.create(9, AccessPrivileges.PUBLIC)).concept(CONCEPT).id("qgIopNa9Hb").registry(REGISTRY).build(); public static final SMethod<String> getHelpPage_id64VftqEen2L = new SMethodBuilder<String>(new SJavaCompoundTypeImpl(String.class)).name("getHelpPage").modifiers(SModifiersImpl.create(9, AccessPrivileges.PUBLIC)).concept(CONCEPT).id("64VftqEen2L").registry(REGISTRY).build(); private static final List<SMethod<?>> BH_METHODS = Arrays.<SMethod<?>>asList(doExecute_id2SpVAIqougW, getShortHelp_idqgIopNa9Hb, getHelpPage_id64VftqEen2L); private static void ___init___(@NotNull SNode __thisNode__) { } /*package*/ static void doExecute_id2SpVAIqougW(@NotNull SNode __thisNode__, ConsoleContext context, ConsoleStream console) { if ((SLinkOperations.getTarget(__thisNode__, MetaAdapterFactory.getContainmentLink(0xde1ad86d6e504a02L, 0xb306d4d17f64c375L, 0x690b986730a1f80L, 0x60279080c2f4192bL, "target")) == null)) { Iterable<SAbstractConcept> constructions = ListSequence.fromList(SConceptOperations.getAllSubConcepts(MetaAdapterFactory.getInterfaceConcept(0x1a8554c4eb8443baL, 0x8c346f0d90c6e75aL, 0x690b986730edd07L, "jetbrains.mps.lang.smodel.query.structure.HelpProvider"), context.getOutputWindow().getConsoleModel())).where(new IWhereFilter<SAbstractConcept>() { public boolean accept(SAbstractConcept it) { return (it instanceof SConcept) && SNodeUtil.isDefaultSubstitutable(it); } }).sort(new ISelector<SAbstractConcept, String>() { public String select(SAbstractConcept it) { return (String) HelpProvider__BehaviorDescriptor.getGroup_id60B$833p9Uj.invoke(SNodeOperations.asSConcept(it)); } }, true).alsoSort(new ISelector<SAbstractConcept, String>() { public String select(SAbstractConcept it) { return (String) HelpProvider__BehaviorDescriptor.getKind_id64VftqEenf4.invoke(SNodeOperations.asSConcept(it)); } }, true).alsoSort(new ISelector<SAbstractConcept, String>() { public String select(SAbstractConcept it) { return it.getName(); } }, true); Deque<SAbstractConcept> groupedConstructions = LinkedListSequence.fromLinkedListNew(new LinkedList<SAbstractConcept>()); for (SAbstractConcept e : Sequence.fromIterable(constructions)) { if (HelpProvider__BehaviorDescriptor.getGroup_id60B$833p9Uj.invoke(SNodeOperations.asSConcept(e)) != check_x46ur7_a0a0c0a0a(LinkedListSequence.fromLinkedListNew(groupedConstructions).last())) { LinkedListSequence.fromLinkedListNew(groupedConstructions).addElement(null); } LinkedListSequence.fromLinkedListNew(groupedConstructions).addElement(e); } List<List<String>> resultList = ListSequence.fromListWithValues(new ArrayList<List<String>>(), LinkedListSequence.fromLinkedListNew(groupedConstructions).select(new ISelector<SAbstractConcept, IListSequence<String>>() { public IListSequence<String> select(SAbstractConcept it) { try { return ListSequence.fromListAndArray(new ArrayList<String>(), HelpProvider__BehaviorDescriptor.getShortDisplayString_id64VftqEenfn.invoke(SNodeOperations.asSConcept(it)), HelpProvider__BehaviorDescriptor.getShortHelp_idqgIopNa9Hb.invoke(SNodeOperations.asSConcept(it))); } catch (RuntimeException e) { if (LOG.isEnabledFor(Level.WARN)) { LOG.warn("Concept " + it.getQualifiedName() + " implements ConsoleHelpProvider but does not implement getHelp() method", e); } try { return ListSequence.fromListAndArray(new ArrayList<String>(), HelpProvider__BehaviorDescriptor.getShortDisplayString_id64VftqEenfn.invoke(SNodeOperations.asSConcept(it)), ""); } catch (RuntimeException e1) { return ListSequence.fromListAndArray(new ArrayList<String>(), it.getName(), ""); } } } })); List<Integer> maxLens = ListSequence.fromList(new LinkedList<Integer>()); for (int i = 0; i < ListSequence.fromList(resultList).select(new ISelector<List<String>, Integer>() { public Integer select(List<String> it) { return ListSequence.fromList(it).count(); } }).foldRight(0, new IRightCombinator<Integer, Integer>() { public Integer combine(Integer it, Integer s) { return Math.max(s, it); } }); i++) { int maxLength = 0; for (List<String> row : ListSequence.fromList(resultList)) { int length = check_x46ur7_a0a0b0f0a0a(ListSequence.fromList(row).getElement(i)); if (length > maxLength) { maxLength = length; } } ListSequence.fromList(maxLens).addElement(maxLength); } StringBuilder output = new StringBuilder(); for (List<String> row : ListSequence.fromList(resultList)) { for (int i = 0; i < ListSequence.fromList(maxLens).count(); i++) { output.append((ListSequence.fromList(row).getElement(i) == null ? "" : ListSequence.fromList(row).getElement(i))); if (i < ListSequence.fromList(maxLens).count() - 1) { for (int j = check_x46ur7_a0a0b0a0i0a0a(ListSequence.fromList(row).getElement(i)); j < ListSequence.fromList(maxLens).getElement(i) + 2; j++) { output.append(" "); } } } output.append("\n"); } console.addText("Constructions available in console:\n\n"); console.addText(output.toString()); } else if ((boolean) AbstractConceptDeclaration__BehaviorDescriptor.isSubconceptOf_id73yVtVlWOga.invoke(SLinkOperations.getTarget(SLinkOperations.getTarget(__thisNode__, MetaAdapterFactory.getContainmentLink(0xde1ad86d6e504a02L, 0xb306d4d17f64c375L, 0x690b986730a1f80L, 0x60279080c2f4192bL, "target")), MetaAdapterFactory.getReferenceLink(0xde1ad86d6e504a02L, 0xb306d4d17f64c375L, 0x60279080c2f3b209L, 0x60279080c2f3f8d6L, "command")), SNodeOperations.getNode("r:935ba0ee-7291-4caa-a807-d76e8fc69391(jetbrains.mps.lang.smodel.query.structure)", "473081947981012231"))) { String helpPage; try { SAbstractConcept chp = (SAbstractConcept) SNodeOperations.asSConcept(SLinkOperations.getTarget(SLinkOperations.getTarget(__thisNode__, MetaAdapterFactory.getContainmentLink(0xde1ad86d6e504a02L, 0xb306d4d17f64c375L, 0x690b986730a1f80L, 0x60279080c2f4192bL, "target")), MetaAdapterFactory.getReferenceLink(0xde1ad86d6e504a02L, 0xb306d4d17f64c375L, 0x60279080c2f3b209L, 0x60279080c2f3f8d6L, "command"))); helpPage = HelpProvider__BehaviorDescriptor.getHelpPage_id64VftqEen2L.invoke(SNodeOperations.asSConcept(chp)); String helpHead = HelpProvider__BehaviorDescriptor.getDisplayString_id5YxQmqOFZEf.invoke(SNodeOperations.asSConcept(chp)) + " : " + HelpProvider__BehaviorDescriptor.getKind_id64VftqEenf4.invoke(SNodeOperations.asSConcept(chp)) + "\n" + HelpProvider__BehaviorDescriptor.getShortHelp_idqgIopNa9Hb.invoke(SNodeOperations.asSConcept(chp)); if ((helpPage != null && helpPage.length() > 0)) { console.addText(helpHead + "\n\n" + helpPage); } else { console.addText(helpHead); } } catch (RuntimeException ignored) { } } } /*package*/ static String getShortHelp_idqgIopNa9Hb(@NotNull SAbstractConcept __thisConcept__) { return "display this help or a help page for a specific command"; } /*package*/ static String getHelpPage_id64VftqEen2L(@NotNull SAbstractConcept __thisConcept__) { return "When called without any arguments, lists all available commands with their brief description.\nWhen a command is specified, help specific to that command is printed."; } /*package*/ HelpCommand__BehaviorDescriptor() { super(REGISTRY); } @Override protected void initNode(@NotNull SNode node, @NotNull SConstructor constructor, @Nullable Object[] parameters) { ___init___(node); } @Override protected <T> T invokeSpecial0(@NotNull SNode node, @NotNull SMethod<T> method, @Nullable Object[] parameters) { int methodIndex = BH_METHODS.indexOf(method); if (methodIndex < 0) { throw new BHMethodNotFoundException(this, method); } switch (methodIndex) { case 0: doExecute_id2SpVAIqougW(node, (ConsoleContext) parameters[0], (ConsoleStream) parameters[1]); return null; default: throw new BHMethodNotFoundException(this, method); } } @Override protected <T> T invokeSpecial0(@NotNull SAbstractConcept concept, @NotNull SMethod<T> method, @Nullable Object[] parameters) { int methodIndex = BH_METHODS.indexOf(method); if (methodIndex < 0) { throw new BHMethodNotFoundException(this, method); } switch (methodIndex) { case 1: return (T) ((String) getShortHelp_idqgIopNa9Hb(concept)); case 2: return (T) ((String) getHelpPage_id64VftqEen2L(concept)); default: throw new BHMethodNotFoundException(this, method); } } @NotNull @Override public List<SMethod<?>> getDeclaredMethods() { return BH_METHODS; } @NotNull @Override public SAbstractConcept getConcept() { return CONCEPT; } private static String check_x46ur7_a0a0c0a0a(SAbstractConcept checkedDotOperand) { if (null != checkedDotOperand) { return HelpProvider__BehaviorDescriptor.getGroup_id60B$833p9Uj.invoke(SNodeOperations.asSConcept(checkedDotOperand)); } return null; } private static int check_x46ur7_a0a0b0f0a0a(String checkedDotOperand) { if (null != checkedDotOperand) { return checkedDotOperand.length(); } return 0; } private static int check_x46ur7_a0a0b0a0i0a0a(String checkedDotOperand) { if (null != checkedDotOperand) { return checkedDotOperand.length(); } return 0; } }