Skip to main content

Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

Sphinx/Main features

< Sphinx(Redirected from Sphinx main features)

This page aims at providing information about the main features of Sphinx. It also provides information on the classes that support these features to help the adopter to use them.

The contents of this page is organized with respect to the main blocks of the Sphinx architecture. The list of features that is presented here is not exhaustive.

Core components

Editing domains

Objective

Without Sphinx One editing domain per editor
With Sphinx A shared editing domain per kind of meta-model

An editing domain is a concept of EMF. It manages a self-contained set of interrelated EMF models and the commands that modify them. Usually, the EMF editors have their own editing domain. Thus, each editor modifies its own copy of the model. In case of huge models, all the editors will allocate memory to load their own copy.

With Sphinx, a shared editing domain is used to edit multiple models. Thus, several editors can contribute to the edition of the same model in memory. It becomes also possible to modify this model through the common navigator views and the property view. In case of huge models, only one copy is loaded in memory.

Implementation

The management of the editing domains is ensure by class WorkspaceEditingDomainManager. It is based on the knowledge of the mapping between the resources and the editing domains that is determined by an instance of IWorkspaceEditingDomainMapping.

By default, all the resources related to the same meta-model descriptor are mapped on the same editing domain.

The class WorkspaceEditingDomainUtil is intended to retrieve an editing domain.

Meta-model descriptors

Objective

Without Sphinx Each model is contained in one resource. The kind of model is identified by the extension of the filename.
With Sphinx Each meta-model is explicitly described.

Identifying the meta-model of a model by the extension of the filename does not allow fine management, such as support for various versions of the meta-model. Sphinx offers a mechanism to explicitly describe the meta-models in use, and in particular each version of these meta-models. This mechanism may be used to select the appropriate editor to open a given model, or to ensure model transformations from one version to another one.

Implementation

The description of a meta-model is done by a class that implements IMetaModelDescriptor. This meta-model descriptor shall be declared with the extension point org.eclipse.sphinx.emf.metaModelDescriptors.

Resource scopes

To be continued.

Navigator & editor sockets

Extended common navigators

To be continued.

Form editors

To be continued.

Validation runtime extensions

Compare & merge integration

M2x integration

Back to the top