This is an extension point for programmatical contribution of Simantics project framework features. Project features are used to incorporate custom logic into the loading/activation and deactivation of a project.
Projects can be loaded, activated and deactivated also headlessly (without UI) and thus project features should not depend on being able to access Workbench UI.
The IProjectFeature implementation for this extension.
A short description of project feature, a name.
A description of the project feature, possibly verbose.
Informs whether this project feature should be published to users in UI's that visualize user selectable project features in some manner.
For example top level project features should always be published in order to give Simantics Project Manager users the possibility to select the feature to be used in their project.
If a value is not given, <code>false</code> is assumed.
Attached to a project feature, tells that it requires the listed project features as its prerequisited in order to be properly initializable.
These requirements are used to determine the initialization order of project features through topological sorting. The dependency network formed by the requires-definitions must be acyclic.
The ID of the referenced project feature extension.
Set to true to signify that this project feature requirement is optional and that no error/warning should be issued if it does not exist. Defaults to false.
Indicates to the project feature subsystem that the parent project feature is to be injected as a requirement of the injection target project feature. It will thus become a required prerequisite of the identified feature.
Logically this dependency injection only creates a requires relationship from targetId to id. If the injection target project feature does not exist, nothing happens since there's can be no requires dependency either.
This is an inverse mechanism to the requires element.
These requirements are used to determine the initialization order of project features through topological sorting. The dependency network formed by the requires-definitions must be acyclic.
The ID of the injection target project feature extension.
A project feature can be tagged with any number of platform P2 Installable Unit (IU) IDs, feature group IDs in particular. If any of those IU IDs match what is marked as installed in the project, the feature will be included in project loading. The version specifier must also be an inclusive match if one is specified.
A P2 Installable Unit (IU) ID of a. Most often the ID of a feature group IU.
Version specifier for a feature bundle reference. This attribute is not mandatory. Leaving it empty means that the project feature can be used with any version of the specified feature.
Version is specified as a single version or a version range, such as [1.0.0,2.0.0). Versions shall respect the pattern "(\\d+).(\\d+).(\\d+).([a-zA-Z_0-9\\-]+)". Defining only a single version instead of a version range means that any version greater than or equal to the specified one will be accepted.
16.9.2010
This example is taken from the Simantics System Dynamic package. It demonstrates the use of all current features of the extension point, namely project features, dependencies between project features and bindings between project features and platform features.
<pre>
<extension
point="org.simantics.project.feature">
<feature
description="System dynamics modelling project. Create system dynamics models and simulate them with OpenModelica."
class="org.simantics.sysdyn.ui.project.SysdynProject"
id="org.simantics.sysdyn.project"
label="System Dynamics Project"
published="true">
<requires id="org.simantics.sysdyn.dependencies"/>
<requires id="org.simantics.simulation.experimentManager"/>
<installGroup id="org.simantics.sysdyn" version="[1.0.0,2.0.0)"/>
</feature>
<feature
class="org.simantics.project.features.DependencyValidationFeature:http://www.simantics.org/Sysdyn-1.1/ImportedOntologies"
id="org.simantics.sysdyn.dependencies"
label="System Dynamics ontology dependencies">
</feature>
</extension>
</pre>
The main entry point to project feature facilities is <code>org.simantics.project.ProjectFeatures</code>. It is a facade for handling an<code> IProjectFeatureRegistry</code> and its <code>IProjectFeatureExtension</code>s.
<p>
See <code>org.simantics.project.Projects</code> for project life-cycle related utilities, such as creation, loading and removal from database. <code>org.simantics.project.IProject</code> serves as handle object for a loaded project. It is an <code>IHintContext</code> and can thus be used to store arbitrary keyed hints.
See <code>org.simantics.project.internal.ProjectFeatureRegistry</code>, <code>org.simantics.project.internal.ProjectFeatureExtension</code> and <code>org.simantics.project.impl.Project</code> for the supplied implementation for this extension point's API.
Copyright (c) 2007, 2010 Association for Decentralized Information Management in Industry THTH ry.<br/>
All rights reserved. This program and the accompanying materials are made available under the terms of the Eclipse Public License v1.0 which accompanies this distribution, and is available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>