As MVC Web Project plugin is totally extensible, it manages features. Features are simple keys that are added to a project. these keys are detected by some sub-plugins and are used to show/hide some sub-plugins.
For example, struts2 is seen as a feature. It must be enabled before user can create Struts2 actions. This feature may unlock several sub-plugins.
For example, if you choose to implement a struts 1 back-port, your users will have to enable struts 1 feature instead of struts 2 features. By the way, plugin will only deploy struts1 dependencies, and it will only display struts1 specific actions - this will reduce the number of buttons on toolbar and this will hide struts2 properties.
Features are declared in extension point com.alveole.studio.features .
Each feature has a name, and must define two wizards:
These wizards are used to add feature on project file, to define default properties for the feature, and to deploy feature dependencies (jar files) on target project.
Features may be queried using class Project in data-model, but they are also used as filters on some extension points. These extension points define feature requirements, and are only activated by plugin when features are enabled.