/**
   * 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
    ViewPackage theViewPackage =
        (ViewPackage) EPackage.Registry.INSTANCE.getEPackage(ViewPackage.eNS_URI);
    FlowPackage theFlowPackage =
        (FlowPackage) EPackage.Registry.INSTANCE.getEPackage(FlowPackage.eNS_URI);
    ToolkitsPackage theToolkitsPackage =
        (ToolkitsPackage) EPackage.Registry.INSTANCE.getEPackage(ToolkitsPackage.eNS_URI);
    EnvironmentPackage theEnvironmentPackage =
        (EnvironmentPackage) EPackage.Registry.INSTANCE.getEPackage(EnvironmentPackage.eNS_URI);

    // Add subpackages
    getESubpackages().add(theViewPackage);
    getESubpackages().add(theFlowPackage);
    getESubpackages().add(theToolkitsPackage);

    // Create type parameters

    // Set bounds for type parameters

    // Add supertypes to classes
    cinematicElementEClass.getESuperTypes().add(theEnvironmentPackage.getObeoDSMObject());
    namedElementEClass.getESuperTypes().add(this.getCinematicElement());
    abstractPackageEClass.getESuperTypes().add(this.getNamedElement());
    packageEClass.getESuperTypes().add(this.getAbstractPackage());
    cinematicRootEClass.getESuperTypes().add(this.getAbstractPackage());
    eventEClass.getESuperTypes().add(this.getNamedElement());

    // Initialize classes and features; add operations and parameters
    initEClass(
        cinematicElementEClass,
        CinematicElement.class,
        "CinematicElement",
        IS_ABSTRACT,
        !IS_INTERFACE,
        IS_GENERATED_INSTANCE_CLASS);

    initEClass(
        namedElementEClass,
        NamedElement.class,
        "NamedElement",
        IS_ABSTRACT,
        !IS_INTERFACE,
        IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(
        getNamedElement_Name(),
        ecorePackage.getEString(),
        "name",
        null,
        0,
        1,
        NamedElement.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_UNSETTABLE,
        !IS_ID,
        IS_UNIQUE,
        !IS_DERIVED,
        IS_ORDERED);

    initEClass(
        abstractPackageEClass,
        AbstractPackage.class,
        "AbstractPackage",
        IS_ABSTRACT,
        !IS_INTERFACE,
        IS_GENERATED_INSTANCE_CLASS);
    initEReference(
        getAbstractPackage_Flows(),
        theFlowPackage.getFlow(),
        null,
        "flows",
        null,
        0,
        -1,
        AbstractPackage.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        IS_COMPOSITE,
        IS_RESOLVE_PROXIES,
        !IS_UNSETTABLE,
        IS_UNIQUE,
        !IS_DERIVED,
        IS_ORDERED);
    initEReference(
        getAbstractPackage_ViewContainers(),
        theViewPackage.getViewContainer(),
        null,
        "viewContainers",
        null,
        0,
        -1,
        AbstractPackage.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        IS_COMPOSITE,
        IS_RESOLVE_PROXIES,
        !IS_UNSETTABLE,
        IS_UNIQUE,
        !IS_DERIVED,
        IS_ORDERED);
    initEReference(
        getAbstractPackage_SubPackages(),
        this.getPackage(),
        null,
        "subPackages",
        null,
        0,
        -1,
        AbstractPackage.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        IS_COMPOSITE,
        IS_RESOLVE_PROXIES,
        !IS_UNSETTABLE,
        IS_UNIQUE,
        !IS_DERIVED,
        IS_ORDERED);

    initEClass(
        packageEClass,
        org.obeonetwork.dsl.cinematic.Package.class,
        "Package",
        !IS_ABSTRACT,
        !IS_INTERFACE,
        IS_GENERATED_INSTANCE_CLASS);

    initEClass(
        cinematicRootEClass,
        CinematicRoot.class,
        "CinematicRoot",
        !IS_ABSTRACT,
        !IS_INTERFACE,
        IS_GENERATED_INSTANCE_CLASS);
    initEReference(
        getCinematicRoot_Toolkits(),
        theToolkitsPackage.getToolkit(),
        null,
        "toolkits",
        null,
        0,
        -1,
        CinematicRoot.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_COMPOSITE,
        IS_RESOLVE_PROXIES,
        !IS_UNSETTABLE,
        IS_UNIQUE,
        !IS_DERIVED,
        IS_ORDERED);

    initEClass(
        eventEClass, Event.class, "Event", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    // Create resource
    createResource(eNS_URI);
  }
  /**
   * 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
    CinematicPackage theCinematicPackage =
        (CinematicPackage) EPackage.Registry.INSTANCE.getEPackage(CinematicPackage.eNS_URI);
    EnvironmentPackage theEnvironmentPackage =
        (EnvironmentPackage) EPackage.Registry.INSTANCE.getEPackage(EnvironmentPackage.eNS_URI);
    ToolkitsPackage theToolkitsPackage =
        (ToolkitsPackage) EPackage.Registry.INSTANCE.getEPackage(ToolkitsPackage.eNS_URI);

    // Create type parameters

    // Set bounds for type parameters

    // Add supertypes to classes
    abstractViewElementEClass.getESuperTypes().add(theCinematicPackage.getNamedElement());
    abstractViewElementEClass.getESuperTypes().add(theEnvironmentPackage.getBoundableElement());
    viewContainerEClass.getESuperTypes().add(this.getAbstractViewElement());
    viewElementEClass.getESuperTypes().add(this.getAbstractViewElement());
    viewActionEClass.getESuperTypes().add(theCinematicPackage.getNamedElement());
    viewEventEClass.getESuperTypes().add(theCinematicPackage.getEvent());
    viewContainerReferenceEClass.getESuperTypes().add(this.getAbstractViewElement());

    // Initialize classes and features; add operations and parameters
    initEClass(
        abstractViewElementEClass,
        AbstractViewElement.class,
        "AbstractViewElement",
        IS_ABSTRACT,
        !IS_INTERFACE,
        IS_GENERATED_INSTANCE_CLASS);
    initEReference(
        getAbstractViewElement_Widget(),
        theToolkitsPackage.getWidget(),
        null,
        "widget",
        null,
        0,
        1,
        AbstractViewElement.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_COMPOSITE,
        IS_RESOLVE_PROXIES,
        !IS_UNSETTABLE,
        IS_UNIQUE,
        !IS_DERIVED,
        IS_ORDERED);
    initEReference(
        getAbstractViewElement_Actions(),
        this.getViewAction(),
        null,
        "actions",
        null,
        0,
        -1,
        AbstractViewElement.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        IS_COMPOSITE,
        IS_RESOLVE_PROXIES,
        !IS_UNSETTABLE,
        IS_UNIQUE,
        !IS_DERIVED,
        IS_ORDERED);
    initEReference(
        getAbstractViewElement_Events(),
        this.getViewEvent(),
        null,
        "events",
        null,
        0,
        -1,
        AbstractViewElement.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        IS_COMPOSITE,
        IS_RESOLVE_PROXIES,
        !IS_UNSETTABLE,
        IS_UNIQUE,
        !IS_DERIVED,
        IS_ORDERED);
    initEAttribute(
        getAbstractViewElement_Label(),
        ecorePackage.getEString(),
        "label",
        null,
        0,
        1,
        AbstractViewElement.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_UNSETTABLE,
        !IS_ID,
        IS_UNIQUE,
        !IS_DERIVED,
        IS_ORDERED);

    initEClass(
        viewContainerEClass,
        ViewContainer.class,
        "ViewContainer",
        !IS_ABSTRACT,
        !IS_INTERFACE,
        IS_GENERATED_INSTANCE_CLASS);
    initEReference(
        getViewContainer_OwnedElements(),
        this.getAbstractViewElement(),
        null,
        "ownedElements",
        null,
        0,
        -1,
        ViewContainer.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        IS_COMPOSITE,
        IS_RESOLVE_PROXIES,
        !IS_UNSETTABLE,
        IS_UNIQUE,
        !IS_DERIVED,
        IS_ORDERED);
    initEReference(
        getViewContainer_ViewContainers(),
        this.getViewContainer(),
        null,
        "viewContainers",
        null,
        0,
        -1,
        ViewContainer.class,
        IS_TRANSIENT,
        IS_VOLATILE,
        !IS_CHANGEABLE,
        !IS_COMPOSITE,
        IS_RESOLVE_PROXIES,
        !IS_UNSETTABLE,
        IS_UNIQUE,
        IS_DERIVED,
        IS_ORDERED);
    initEReference(
        getViewContainer_ViewElements(),
        this.getViewElement(),
        null,
        "viewElements",
        null,
        0,
        -1,
        ViewContainer.class,
        IS_TRANSIENT,
        IS_VOLATILE,
        !IS_CHANGEABLE,
        !IS_COMPOSITE,
        IS_RESOLVE_PROXIES,
        !IS_UNSETTABLE,
        IS_UNIQUE,
        IS_DERIVED,
        IS_ORDERED);
    initEReference(
        getViewContainer_ViewContainerReferences(),
        this.getViewContainerReference(),
        null,
        "viewContainerReferences",
        null,
        0,
        -1,
        ViewContainer.class,
        IS_TRANSIENT,
        IS_VOLATILE,
        !IS_CHANGEABLE,
        !IS_COMPOSITE,
        IS_RESOLVE_PROXIES,
        !IS_UNSETTABLE,
        IS_UNIQUE,
        IS_DERIVED,
        IS_ORDERED);

    initEClass(
        viewElementEClass,
        ViewElement.class,
        "ViewElement",
        !IS_ABSTRACT,
        !IS_INTERFACE,
        IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(
        getViewElement_Required(),
        ecorePackage.getEBoolean(),
        "required",
        null,
        0,
        1,
        ViewElement.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_UNSETTABLE,
        !IS_ID,
        IS_UNIQUE,
        !IS_DERIVED,
        IS_ORDERED);
    initEReference(
        getViewElement_Type(),
        theEnvironmentPackage.getType(),
        null,
        "type",
        null,
        0,
        1,
        ViewElement.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_COMPOSITE,
        IS_RESOLVE_PROXIES,
        !IS_UNSETTABLE,
        IS_UNIQUE,
        !IS_DERIVED,
        IS_ORDERED);

    initEClass(
        viewActionEClass,
        ViewAction.class,
        "ViewAction",
        !IS_ABSTRACT,
        !IS_INTERFACE,
        IS_GENERATED_INSTANCE_CLASS);

    initEClass(
        viewEventEClass,
        ViewEvent.class,
        "ViewEvent",
        !IS_ABSTRACT,
        !IS_INTERFACE,
        IS_GENERATED_INSTANCE_CLASS);
    initEReference(
        getViewEvent_Type(),
        theToolkitsPackage.getWidgetEventType(),
        null,
        "type",
        null,
        0,
        1,
        ViewEvent.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_COMPOSITE,
        IS_RESOLVE_PROXIES,
        !IS_UNSETTABLE,
        IS_UNIQUE,
        !IS_DERIVED,
        IS_ORDERED);

    initEClass(
        viewContainerReferenceEClass,
        ViewContainerReference.class,
        "ViewContainerReference",
        !IS_ABSTRACT,
        !IS_INTERFACE,
        IS_GENERATED_INSTANCE_CLASS);
    initEReference(
        getViewContainerReference_ViewContainer(),
        this.getViewContainer(),
        null,
        "viewContainer",
        null,
        1,
        1,
        ViewContainerReference.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_COMPOSITE,
        IS_RESOLVE_PROXIES,
        !IS_UNSETTABLE,
        IS_UNIQUE,
        !IS_DERIVED,
        IS_ORDERED);
  }