Tooling Kernel Concepts, Plugins and Services
The kernel is organized as a set of services partitioned into UI and non-UI services. Non-UI services are implemented in the org.fortiss.tooling.kernel plugin, while UI services can be found in org.fortiss.tooling.kernel.ui plugin. In the following we will abbreviate the package name reducing it to kernel or kernel.ui. In general the package structure of the UI part is similar to that of the non-UI part, so we will only state exceptions when necessary.
Each service is identified by a service interface, which provides the public interface to the service (see kernel.service package, e.g. IElementCompositorService). Most of the services are related to an extension point and allow the application (built on top of the kernel) to extend its functionality with specific implementations. For example, the IElementCompositorService allows an application to define model element compositions (i.e. which EMF objects can be contained in other objects, e.g., a Component can contain a StateAutomatonSpecification).
Extensions to the kernel services are realized by implementing a handler interface provided by the kernel (see kernel.extension package). Within the communication between the kernel and its extensions additional data may be required (see kernel.extension.data) or exceptions may be raised (see kernel.extension.exception package). The extension point schemas for the kernel extensions can found in the schema folder of the kernel and kernel.ui plugins.
Note that the kernel also provides abstract base implementations for most of the handler interfaces, which are located in the kernel.extension.base package.
This section briefly describes the plugins of the Tooling Kernel 2.0.
This plugin repackages several libraries (mostly Apache). This plugin does not provide a meta-model.
This plugin repackages several user interface related libraries and classes from different sources.
This plugin provides the non-UI related kernel services: persistency, element and connection compositors, transformations, prototypes, constraints. The meta-model provides the core concepts of named and ID labeled elements and project root elements.
This plugin provides the UI related kernel services: navigator, element handling, editors, edit part factories, markers, context menus and actions.
This plugin provides the base implementation for hierarchical models and graphical description techniques based on those. The meta-model provides a generic hierarchical, graph-like base model extended with model element specifications and references. It also provides the layout information meta-model.
This plugin provides base implementation for graphical editors using the Eclipse GEF framework (Version 3, not the renew Version 5+).
Kernel Introspection System Service (KISS)
The documentation of the kernel services as well as an introspective interface is available in every running instance of a kernel-based tool. This section describes this feature, which is called the *Kernel Introspection System Service*. The KISS is used to provide a self-describing feature to the kernel services. It also provides an introspection facility to most of the kernel services. For example, all registered prototypes of the prototype service can be listed.
KISS is integrated into the running instance of the kernel-based tool. You can access it by using the Quick Access menu. Hit Ctrl-3 (Linux and Windows) or CMD-3 (MacOS X) and type KISS. This opens the KISS view in Your current Eclipse perspective. Double-click the view header to enlarge it to the whole window.
KISS provides You with a list of all kernel services, which can be introspected. When You select any service the details list to the right is updated and the service description at the bottom is displayed.
Filter details lists
The list of detailed information can be searched by typing into the search field at the to You should always use a search term that begins with a star character to find any related information.
Copy class names with context menu
When one or more columns of the details information list displays a class name, this string can be copied to Your clipboard using the right-click context menu. This way You can easily switch back to Your development instance and start a class lookup with the class name pasted from Your clipboard.