GUI Plugin Framework

This Framework is in its early stages and has no stable implementation yet

An application may depend on some abstraction, for which user interaction is desirable but in no way mandatory. Let's use the ComputingModule abstraction as an example:
  • The application uses computing modules internally to organize its work;
  • The application may want to allow the user to interact with computing modules using a GUI dialog box, for example to allow the user to start and stop individual computing modules;

The problem is that by doing so, every application using computing modules now strongly depends on a particular user interface. For example, you may want to have an in-house application that uses a closed source commercial component library such as XXX, providing the powerful cxGrid data grid. This code however, cannot be distributed as an open source application. Using the GUI plugin Framework, you can provide multiple implementations of the Computing Module Manager:
  • A complete editor that requires the cxGrid commercial component, that cannot be distributed outside of your organization;
  • A simplified editor that only requires a ListView, but that can be distributed freely;
  • A specialized editor that integrates as a Visual Studio component, if your application can be used from VS

The GUI Plugin Framework therefore implements an Inversion of Control strategy:
  • The system defines a specific operation that needs to be performed. In our case, the operation is Manage Computing Modules.
  • Each plugin defines the operation it implements.
  • The system enumerates available plugins, and binds the plugin to the requested operation.

When the application wants to let the user manage computing modules, it just calls the Manage Computing Module operation, which in turn will call the appropriate plugin. The application does not explicitly depend on any of the plugins.

The plugin directory

To be designed. See the INI File Manifesto of initial thoughts.
Application Framework
Configuration Framework

Last edited Apr 13, 2010 at 6:51 PM by sleclercq, version 6


No comments yet.