Tooling Kernel Concepts, Plugins and Services ============================================= Kernel Concepts --------------- 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. Kernel Plugins -------------- This section briefly describes the plugins of the Tooling Kernel 2.0. ### org.fortiss.tooling.common This plugin repackages several libraries (mostly Apache). This plugin does not provide a meta-model. ### org.fortiss.tooling.common.ui This plugin repackages several user interface related libraries and classes from different sources. ### org.fortiss.tooling.kernel 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. ### org.fortiss.tooling.kernel.ui This plugin provides the UI related kernel services: navigator, element handling, editors, edit part factories, markers, context menus and actions. ### org.fortiss.tooling.base 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. ### org.fortiss.tooling.base.ui 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. ### Accessing KISS 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. ![](pictures/kiss_accessing.png) ### Using KISS 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. ![](pictures/kiss_in_action.png) #### 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.