|
|
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.
|
|
|
|
|
|
![](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.
|
|
|
|
|
|
![](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.
|
|
|
|