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

Difference between revisions of "Sphinx/Main features"

(Creation of the page)
 
(Restructuration of the page)
 
(One intermediate revision by the same user not shown)
Line 1: Line 1:
 +
{| align="right"
 +
| __TOC__
 +
|}
 
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.
 
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|Sphinx architecture]].
 
The list of features that is presented here is not exhaustive.
 
The list of features that is presented here is not exhaustive.
  
==Editing domains==
+
==Core components==
  
 +
===Editing domains===
 +
====Objective====
 
{| border=1
 
{| border=1
 
  ! Without Sphinx
 
  ! Without Sphinx
Line 13: Line 19:
 
  |}
 
  |}
  
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.
+
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.
+
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===
+
====Implementation====
 
The management of the editing domains is ensure by class <code>WorkspaceEditingDomainManager</code>. It is based on the knowledge of the mapping between the resources and the editing domains that is determined by an instance of <code>IWorkspaceEditingDomainMapping</code>.
 
The management of the editing domains is ensure by class <code>WorkspaceEditingDomainManager</code>. It is based on the knowledge of the mapping between the resources and the editing domains that is determined by an instance of <code>IWorkspaceEditingDomainMapping</code>.
  
Line 24: Line 30:
 
The class <code>WorkspaceEditingDomainUtil</code> is intended to retrieve an editing domain.
 
The class <code>WorkspaceEditingDomainUtil</code> is intended to retrieve an editing domain.
  
==Extended common navigators==
+
===Meta-model descriptors===
''To be continued.''
+
====Objective====
 
+
==Form editors==
+
''To be continued.''
+
 
+
==Meta-model descriptors==
+
 
{| border=1
 
{| border=1
 
  ! Without Sphinx
 
  ! Without Sphinx
Line 42: Line 43:
 
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.
 
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===
+
====Implementation====
 
The description of a meta-model is done by a class that implements <code>IMetaModelDescriptor</code>.
 
The description of a meta-model is done by a class that implements <code>IMetaModelDescriptor</code>.
 
This meta-model descriptor shall be declared with the extension point <code>org.eclipse.sphinx.emf.metaModelDescriptors</code>.
 
This meta-model descriptor shall be declared with the extension point <code>org.eclipse.sphinx.emf.metaModelDescriptors</code>.
  
==Resource scopes==
+
===Resource scopes===
 
''To be continued.''
 
''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==

Latest revision as of 04:44, 1 June 2012

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