/**
   * Complete the initialization of the package and its meta-model. This method is guarded to have
   * no affect on any invocation but its first.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   *
   * @generated
   */
  public void initializePackageContents() {
    if (isInitialized) return;
    isInitialized = true;

    // Initialize package
    setName(eNAME);
    setNsPrefix(eNS_PREFIX);
    setNsURI(eNS_URI);

    // Obtain other dependent packages
    ApplicationPackageImpl theApplicationPackage =
        (ApplicationPackageImpl)
            EPackage.Registry.INSTANCE.getEPackage(ApplicationPackageImpl.eNS_URI);
    UiPackageImpl theUiPackage =
        (UiPackageImpl) EPackage.Registry.INSTANCE.getEPackage(UiPackageImpl.eNS_URI);
    CommandsPackageImpl theCommandsPackage =
        (CommandsPackageImpl) EPackage.Registry.INSTANCE.getEPackage(CommandsPackageImpl.eNS_URI);
    MenuPackageImpl theMenuPackage =
        (MenuPackageImpl) EPackage.Registry.INSTANCE.getEPackage(MenuPackageImpl.eNS_URI);

    // Create type parameters

    // Set bounds for type parameters

    // Add supertypes to classes
    partDescriptorEClass.getESuperTypes().add(theApplicationPackage.getApplicationElement());
    partDescriptorEClass.getESuperTypes().add(theUiPackage.getUILabel());
    partDescriptorEClass.getESuperTypes().add(theCommandsPackage.getHandlerContainer());
    partDescriptorEClass.getESuperTypes().add(theCommandsPackage.getBindings());

    // Initialize classes, features, and operations; add parameters
    initEClass(
        partDescriptorEClass,
        MPartDescriptor.class,
        "PartDescriptor",
        !IS_ABSTRACT,
        !IS_INTERFACE,
        IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
    initEAttribute(
        getPartDescriptor_AllowMultiple(),
        ecorePackage.getEBoolean(),
        "allowMultiple",
        null,
        0,
        1,
        MPartDescriptor.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_UNSETTABLE,
        !IS_ID,
        IS_UNIQUE,
        !IS_DERIVED,
        IS_ORDERED); //$NON-NLS-1$
    initEAttribute(
        getPartDescriptor_Category(),
        ecorePackage.getEString(),
        "category",
        null,
        0,
        1,
        MPartDescriptor.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_UNSETTABLE,
        !IS_ID,
        IS_UNIQUE,
        !IS_DERIVED,
        IS_ORDERED); //$NON-NLS-1$
    initEReference(
        getPartDescriptor_Menus(),
        theMenuPackage.getMenu(),
        null,
        "menus",
        null,
        0,
        -1,
        MPartDescriptor.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        IS_COMPOSITE,
        !IS_RESOLVE_PROXIES,
        !IS_UNSETTABLE,
        IS_UNIQUE,
        !IS_DERIVED,
        IS_ORDERED); //$NON-NLS-1$
    initEReference(
        getPartDescriptor_Toolbar(),
        theMenuPackage.getToolBar(),
        null,
        "toolbar",
        null,
        0,
        1,
        MPartDescriptor.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        IS_COMPOSITE,
        !IS_RESOLVE_PROXIES,
        !IS_UNSETTABLE,
        IS_UNIQUE,
        !IS_DERIVED,
        IS_ORDERED); //$NON-NLS-1$
    initEAttribute(
        getPartDescriptor_Closeable(),
        ecorePackage.getEBoolean(),
        "closeable",
        "false",
        0,
        1,
        MPartDescriptor.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_UNSETTABLE,
        !IS_ID,
        IS_UNIQUE,
        !IS_DERIVED,
        IS_ORDERED); //$NON-NLS-1$ //$NON-NLS-2$
    initEAttribute(
        getPartDescriptor_Dirtyable(),
        ecorePackage.getEBoolean(),
        "dirtyable",
        null,
        0,
        1,
        MPartDescriptor.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_UNSETTABLE,
        !IS_ID,
        IS_UNIQUE,
        !IS_DERIVED,
        IS_ORDERED); //$NON-NLS-1$
    initEAttribute(
        getPartDescriptor_ContributionURI(),
        ecorePackage.getEString(),
        "contributionURI",
        null,
        0,
        1,
        MPartDescriptor.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_UNSETTABLE,
        !IS_ID,
        IS_UNIQUE,
        !IS_DERIVED,
        IS_ORDERED); //$NON-NLS-1$
    initEAttribute(
        getPartDescriptor_Description(),
        ecorePackage.getEString(),
        "description",
        null,
        0,
        1,
        MPartDescriptor.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_UNSETTABLE,
        !IS_ID,
        IS_UNIQUE,
        !IS_DERIVED,
        IS_ORDERED); //$NON-NLS-1$
    initEAttribute(
        getPartDescriptor_LocalizedDescription(),
        ecorePackage.getEString(),
        "localizedDescription",
        null,
        0,
        1,
        MPartDescriptor.class,
        IS_TRANSIENT,
        IS_VOLATILE,
        !IS_CHANGEABLE,
        !IS_UNSETTABLE,
        !IS_ID,
        IS_UNIQUE,
        IS_DERIVED,
        IS_ORDERED); //$NON-NLS-1$
    initEAttribute(
        getPartDescriptor_Variables(),
        ecorePackage.getEString(),
        "variables",
        null,
        0,
        -1,
        MPartDescriptor.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_UNSETTABLE,
        !IS_ID,
        IS_UNIQUE,
        !IS_DERIVED,
        !IS_ORDERED); //$NON-NLS-1$
    initEReference(
        getPartDescriptor_Properties(),
        theApplicationPackage.getStringToStringMap(),
        null,
        "properties",
        null,
        0,
        -1,
        MPartDescriptor.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        IS_COMPOSITE,
        !IS_RESOLVE_PROXIES,
        !IS_UNSETTABLE,
        IS_UNIQUE,
        !IS_DERIVED,
        IS_ORDERED); //$NON-NLS-1$

    initEClass(
        partDescriptorContainerEClass,
        MPartDescriptorContainer.class,
        "PartDescriptorContainer",
        IS_ABSTRACT,
        IS_INTERFACE,
        IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
    initEReference(
        getPartDescriptorContainer_Descriptors(),
        this.getPartDescriptor(),
        null,
        "descriptors",
        null,
        0,
        -1,
        MPartDescriptorContainer.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        IS_COMPOSITE,
        !IS_RESOLVE_PROXIES,
        !IS_UNSETTABLE,
        IS_UNIQUE,
        !IS_DERIVED,
        IS_ORDERED); //$NON-NLS-1$
  }