Version 5 (modified by pav, 16 years ago) (diff) |
---|
Analysis
Overview
Plugins (or modules) are one of the main important parts which increase sophie platform flexibility and extensibility. The main purpose of this group of tasks is to provide functionality for enabling/disabling sophie modules while the application is running (in this revision the application has to be restarted to enable/disable a plugin). The config plugin palette will be improved to show more information about sophie plugins.
Task requirements
- In the plugin config palette when you click a module name a button 'enable' or 'disable' has to be shown depending on the plugin state.
- When enable/disable option is activated the effect will show after restarting sophie application.
- If the selected plugin cannot be disabled because some of the plugins depends on it, it can't be disabled. The user has to be informed about this with a dialog.
- If there are plugin dependencies which are needed for enabling the plugin and they are installed, they also become enabled after the restart.
- Note: the case when they are not installed should to be resolved in the next revision of the task. For now the user will be informed that there are no such dependencies installed to run the plugin he wants.
- (optional) Make a dialog with yes/no buttons so the user can choose what will be the behaviour when dependencies are shown.(i.e. if the plugin will be enabled with its dependencies or not enabled at all)
- Some of the plugins can't be disabled(i.e. core.modularity or core), so the . Think if there is a need to show these plugins on the config palette.
- Internal managing/configuration of the plugins has to be implemented - this is connected with the upper functionality
- Already implemented support of the sorting of plugins has to be reviewed and improved.
- The about information of each plugin has to be updated and rewritten.
Task result
- improved config palette
- source code - tests and implementation
Implementation idea
- Do not forget that there should be fake and true implementations of internal plugin configuration and managing.
- Create new module where plugin manager should be implemented - it will take care of enabling/disabling of the plugins.
- Research OSGI bundles and how to use them for dynamic plugin switching.
Related
GROUP_PLUGINS_R0
APP_PLUGIN_MANAGER_LIST_R0
APP_PLUGIN_MANAGER_CONFIGURE_R0
PLUGIN_SUPPORT_LIB_BASE_R1
How to demo
- Enable a plugin from the palette.
- Restart the application.
- Show that the plugin is running now.
- Repeat the steps using disable option.
- Show that some plugins can't be disabled.
Design
(Describe your design here.)
Implementation
(Describe and link the implementation results here (from the wiki or the repository).)
Testing
(Place the testing results here.)
Comments
(Write comments for this or later revisions here.)