package jetbrains.mps.lang.structure.editor;

/*Generated by MPS */

import jetbrains.mps.nodeEditor.EditorAspectDescriptorBase;
import org.jetbrains.annotations.NotNull;
import java.util.Collection;
import jetbrains.mps.openapi.editor.descriptor.ConceptEditor;
import org.jetbrains.mps.openapi.language.SAbstractConcept;
import java.util.Collections;
import jetbrains.mps.openapi.editor.descriptor.TransformationMenu;
import jetbrains.mps.openapi.editor.descriptor.NamedMenuId;
import java.util.Arrays;
import jetbrains.mps.openapi.editor.descriptor.SubstituteMenu;
import jetbrains.mps.lang.smodel.ConceptSwitchIndex;
import jetbrains.mps.lang.smodel.ConceptSwitchIndexBuilder;
import jetbrains.mps.smodel.adapter.ids.MetaIdFactory;

public class EditorAspectDescriptorImpl extends EditorAspectDescriptorBase {
  @NotNull
  public Collection<ConceptEditor> getDeclaredEditors(SAbstractConcept concept) {
    SAbstractConcept cncpt = ((SAbstractConcept) concept);
    switch (conceptIndex.index(cncpt)) {
      case 0:
        return Collections.<ConceptEditor>singletonList(new AttributeInfo_Editor());
      case 1:
        return Collections.<ConceptEditor>singletonList(new AttributeInfo_AttributedConcept_Editor());
      case 2:
        return Collections.<ConceptEditor>singletonList(new AttributeInfo_IsMultiple_Editor());
      case 3:
        return Collections.<ConceptEditor>singletonList(new ConceptDeclaration_Editor());
      case 4:
        return Collections.<ConceptEditor>singletonList(new ConceptDeclarationReference_Editor());
      case 5:
        return Collections.<ConceptEditor>singletonList(new ConstrainedDataTypeDeclaration_Editor());
      case 6:
        return Collections.<ConceptEditor>singletonList(new DeprecatedNodeAnnotation_Editor());
      case 7:
        return Collections.<ConceptEditor>singletonList(new DocumentationObjectiveRef_Editor());
      case 8:
        return Collections.<ConceptEditor>singletonList(new DocumentedNodeAnnotation_Editor());
      case 9:
        return Collections.<ConceptEditor>singletonList(new EnumCustomMethodReplacementInfo_Editor());
      case 10:
        return Collections.<ConceptEditor>singletonList(new EnumMigrationInfo_Editor());
      case 11:
        return Collections.<ConceptEditor>singletonList(new EnumPropertyMigrationInfo_Editor());
      case 12:
        return Collections.<ConceptEditor>singletonList(new EnumerationDataTypeDeclaration_Old_Editor());
      case 13:
        return Collections.<ConceptEditor>singletonList(new EnumerationDeclaration_Editor());
      case 14:
        return Collections.<ConceptEditor>singletonList(new EnumerationMemberDeclaration_Editor());
      case 15:
        return Collections.<ConceptEditor>singletonList(new EnumerationMemberDeclaration_Old_Editor());
      case 16:
        return Collections.<ConceptEditor>singletonList(new ExperimentalAPINodeAttribute_Editor());
      case 17:
        return Collections.<ConceptEditor>singletonList(new InterfaceConceptDeclaration_Editor());
      case 18:
        return Collections.<ConceptEditor>singletonList(new InterfaceConceptReference_Editor());
      case 19:
        return Collections.<ConceptEditor>singletonList(new LinkDeclaration_Editor());
      case 20:
        return Collections.<ConceptEditor>singletonList(new MarkerInterfaceAttribute_Editor());
      case 21:
        return Collections.<ConceptEditor>singletonList(new PrimitiveDataTypeDeclaration_Editor());
      case 22:
        return Collections.<ConceptEditor>singletonList(new PropertyDeclaration_Editor());
      case 23:
        return Collections.<ConceptEditor>singletonList(new RefPresentationTemplate_Editor());
      case 24:
        return Collections.<ConceptEditor>singletonList(new SmartReferenceAttribute_Editor());
      default:
    }
    return Collections.<ConceptEditor>emptyList();
  }


  @NotNull
  @Override
  public Collection<TransformationMenu> getDeclaredDefaultTransformationMenus(SAbstractConcept concept) {
    SAbstractConcept cncpt = concept;
    switch (conceptIndex1.index(cncpt)) {
      case 0:
        return Collections.<TransformationMenu>singletonList(new ConceptDeclaration_TransformationMenu());
      case 1:
        return Collections.<TransformationMenu>singletonList(new InterfaceConceptReference_TransformationMenu());
      case 2:
        return Collections.<TransformationMenu>singletonList(new LinkDeclaration_TransformationMenu());
      default:
    }
    return Collections.<TransformationMenu>emptyList();
  }
  @NotNull
  @Override
  public Collection<TransformationMenu> getDeclaredNamedTransformationMenus(NamedMenuId menuId) {
    SAbstractConcept cncpt = (SAbstractConcept) menuId.getConcept();
    switch (conceptIndex2.index(cncpt)) {
      case 0:
        if (true) {
          switch (menuId.getFqName()) {
            case "jetbrains.mps.lang.structure.editor.CreateFirstDeclaration":
              return Arrays.asList(new TransformationMenu[]{new CreateFirstDeclaration()});
            case "jetbrains.mps.lang.structure.editor.CreateFirstDeclaration_ext_2":
              return Arrays.asList(new TransformationMenu[]{new CreateFirstDeclaration_ext_2()});
            case "jetbrains.mps.lang.structure.editor.CreateFirstDeclaration_ext_3":
              return Arrays.asList(new TransformationMenu[]{new CreateFirstDeclaration_ext_3()});
            default:
          }
        }
        break;
      case 1:
        if (true) {
          switch (menuId.getFqName()) {
            case "jetbrains.mps.lang.structure.editor.ConceptDeclaration_ApplySideTransforms":
              return Arrays.asList(new TransformationMenu[]{new ConceptDeclaration_ApplySideTransforms()});
            case "jetbrains.mps.lang.structure.editor.ConceptDeclaration_ApplySideTransforms_1":
              return Arrays.asList(new TransformationMenu[]{new ConceptDeclaration_ApplySideTransforms_1()});
            case "jetbrains.mps.lang.structure.editor.ConceptDeclaration_ApplySideTransforms_2":
              return Arrays.asList(new TransformationMenu[]{new ConceptDeclaration_ApplySideTransforms_2()});
            case "jetbrains.mps.lang.structure.editor.ConceptDeclaration_ext_1_RTransform_Menu":
              return Arrays.asList(new TransformationMenu[]{new ConceptDeclaration_ext_1_RTransform_Menu()});
            case "jetbrains.mps.lang.structure.editor.addAbstract":
              return Arrays.asList(new TransformationMenu[]{new addAbstract()});
            case "jetbrains.mps.lang.structure.editor.addFinal":
              return Arrays.asList(new TransformationMenu[]{new addFinal()});
            default:
          }
        }
        break;
      case 2:
        if (true) {
          switch (menuId.getFqName()) {
            case "jetbrains.mps.lang.structure.editor.InterfaceConceptDeclaration_ApplySideTransforms":
              return Arrays.asList(new TransformationMenu[]{new InterfaceConceptDeclaration_ApplySideTransforms()});
            case "jetbrains.mps.lang.structure.editor.InterfaceConceptDeclaration_ApplySideTransforms_1":
              return Arrays.asList(new TransformationMenu[]{new InterfaceConceptDeclaration_ApplySideTransforms_1()});
            case "jetbrains.mps.lang.structure.editor.InterfaceConceptDeclaration_ApplySideTransforms_2":
              return Arrays.asList(new TransformationMenu[]{new InterfaceConceptDeclaration_ApplySideTransforms_2()});
            default:
          }
        }
        break;
      default:
    }

    return Collections.<TransformationMenu>emptyList();
  }
  @NotNull
  @Override
  public Collection<SubstituteMenu> getDeclaredDefaultSubstituteMenus(SAbstractConcept concept) {
    SAbstractConcept cncpt = concept;
    switch (conceptIndex3.index(cncpt)) {
      case 0:
        return Collections.<SubstituteMenu>singletonList(new AttributeInfo_AttributedConcept_SubstituteMenu());
      case 1:
        return Collections.<SubstituteMenu>singletonList(new AttributeInfo_IsMultiple_SubstituteMenu());
      case 2:
        return Collections.<SubstituteMenu>singletonList(new ConceptDeclarationReference_SubstituteMenu());
      case 3:
        return Collections.<SubstituteMenu>singletonList(new DocumentationObjectiveRef_SubstituteMenu());
      case 4:
        return Collections.<SubstituteMenu>singletonList(new EnumCustomMethodReplacementInfo_SubstituteMenu());
      case 5:
        return Collections.<SubstituteMenu>singletonList(new InterfaceConceptReference_SubstituteMenu());
      case 6:
        return Collections.<SubstituteMenu>singletonList(new LinkDeclaration_SubstituteMenu());
      case 7:
        return Collections.<SubstituteMenu>singletonList(new PropertyDeclaration_SubstituteMenu());
      default:
    }
    return Collections.<SubstituteMenu>emptyList();
  }

  private static final ConceptSwitchIndex conceptIndex = new ConceptSwitchIndexBuilder().put(MetaIdFactory.conceptId(0xc72da2b97cce4447L, 0x8389f407dc1158b7L, 0x29889a701b928195L), MetaIdFactory.conceptId(0xc72da2b97cce4447L, 0x8389f407dc1158b7L, 0x5405fd03496acb49L), MetaIdFactory.conceptId(0xc72da2b97cce4447L, 0x8389f407dc1158b7L, 0x5405fd034959f7dcL), MetaIdFactory.conceptId(0xc72da2b97cce4447L, 0x8389f407dc1158b7L, 0xf979ba0450L), MetaIdFactory.conceptId(0xc72da2b97cce4447L, 0x8389f407dc1158b7L, 0x6ed0e6c2f31b3f42L), MetaIdFactory.conceptId(0xc72da2b97cce4447L, 0x8389f407dc1158b7L, 0xfc268c7a37L), MetaIdFactory.conceptId(0xc72da2b97cce4447L, 0x8389f407dc1158b7L, 0x11d0a70ae54L), MetaIdFactory.conceptId(0xc72da2b97cce4447L, 0x8389f407dc1158b7L, 0x6d1df6c2700b0eb5L), MetaIdFactory.conceptId(0xc72da2b97cce4447L, 0x8389f407dc1158b7L, 0x6d1df6c2700b0ea9L), MetaIdFactory.conceptId(0xc72da2b97cce4447L, 0x8389f407dc1158b7L, 0x2e9237b686f1e943L), MetaIdFactory.conceptId(0xc72da2b97cce4447L, 0x8389f407dc1158b7L, 0x160b046db949c266L), MetaIdFactory.conceptId(0xc72da2b97cce4447L, 0x8389f407dc1158b7L, 0x5a14f1035942a5abL), MetaIdFactory.conceptId(0xc72da2b97cce4447L, 0x8389f407dc1158b7L, 0xfc26875dfbL), MetaIdFactory.conceptId(0xc72da2b97cce4447L, 0x8389f407dc1158b7L, 0x2e770ca32c607c5fL), MetaIdFactory.conceptId(0xc72da2b97cce4447L, 0x8389f407dc1158b7L, 0x2e770ca32c607c60L), MetaIdFactory.conceptId(0xc72da2b97cce4447L, 0x8389f407dc1158b7L, 0xfc321331b2L), MetaIdFactory.conceptId(0xc72da2b97cce4447L, 0x8389f407dc1158b7L, 0x5cd3594638ad845L), MetaIdFactory.conceptId(0xc72da2b97cce4447L, 0x8389f407dc1158b7L, 0x1103556dcafL), MetaIdFactory.conceptId(0xc72da2b97cce4447L, 0x8389f407dc1158b7L, 0x110356fc618L), MetaIdFactory.conceptId(0xc72da2b97cce4447L, 0x8389f407dc1158b7L, 0xf979bd086aL), MetaIdFactory.conceptId(0xc72da2b97cce4447L, 0x8389f407dc1158b7L, 0x4d7dcbe8bf135fd0L), MetaIdFactory.conceptId(0xc72da2b97cce4447L, 0x8389f407dc1158b7L, 0xfc3652de27L), MetaIdFactory.conceptId(0xc72da2b97cce4447L, 0x8389f407dc1158b7L, 0xf979bd086bL), MetaIdFactory.conceptId(0xc72da2b97cce4447L, 0x8389f407dc1158b7L, 0x7ab7b29c4d66855eL), MetaIdFactory.conceptId(0xc72da2b97cce4447L, 0x8389f407dc1158b7L, 0x7ab7b29c4d6297e8L)).seal();
  private static final ConceptSwitchIndex conceptIndex1 = new ConceptSwitchIndexBuilder().put(MetaIdFactory.conceptId(0xc72da2b97cce4447L, 0x8389f407dc1158b7L, 0xf979ba0450L), MetaIdFactory.conceptId(0xc72da2b97cce4447L, 0x8389f407dc1158b7L, 0x110356fc618L), MetaIdFactory.conceptId(0xc72da2b97cce4447L, 0x8389f407dc1158b7L, 0xf979bd086aL)).seal();
  private static final ConceptSwitchIndex conceptIndex2 = new ConceptSwitchIndexBuilder().put(MetaIdFactory.conceptId(0xc72da2b97cce4447L, 0x8389f407dc1158b7L, 0x1103553c5ffL), MetaIdFactory.conceptId(0xc72da2b97cce4447L, 0x8389f407dc1158b7L, 0xf979ba0450L), MetaIdFactory.conceptId(0xc72da2b97cce4447L, 0x8389f407dc1158b7L, 0x1103556dcafL)).seal();
  private static final ConceptSwitchIndex conceptIndex3 = new ConceptSwitchIndexBuilder().put(MetaIdFactory.conceptId(0xc72da2b97cce4447L, 0x8389f407dc1158b7L, 0x5405fd03496acb49L), MetaIdFactory.conceptId(0xc72da2b97cce4447L, 0x8389f407dc1158b7L, 0x5405fd034959f7dcL), MetaIdFactory.conceptId(0xc72da2b97cce4447L, 0x8389f407dc1158b7L, 0x6ed0e6c2f31b3f42L), MetaIdFactory.conceptId(0xc72da2b97cce4447L, 0x8389f407dc1158b7L, 0x6d1df6c2700b0eb5L), MetaIdFactory.conceptId(0xc72da2b97cce4447L, 0x8389f407dc1158b7L, 0x2e9237b686f1e943L), MetaIdFactory.conceptId(0xc72da2b97cce4447L, 0x8389f407dc1158b7L, 0x110356fc618L), MetaIdFactory.conceptId(0xc72da2b97cce4447L, 0x8389f407dc1158b7L, 0xf979bd086aL), MetaIdFactory.conceptId(0xc72da2b97cce4447L, 0x8389f407dc1158b7L, 0xf979bd086bL)).seal();
}
