The
ide package is where all JSR 198 packages are rooted. There
are two types of packages in the
ide package:
- 1. Extension writer packages, and
- 2. Service provider packages.
By convention, the latter are named
spi and are located under
the corresponding extension writer package. The extension writer packages
contain interfaces and classes intended for extension writers to implement
and/or use, while the
spi packages contain abstract classes and
default implementations that must be extended by IDE service providers in
order to support JSR 198. Extension writers should never import classes
from the
spi packages.
The extension writer packages can be grouped into two categories:
- 1. Extension hook packages, and
- 2. Support packages.
Extension hook packages contain the interfaces and classes
encapsulating an IDE's integration hooks. Integration hooks are the
points an IDE defines where extension writers can integrate new IDE
functionality. These packages are:
- The command package: containing interfaces and classes
involved in the definition and execution of commands.
- The editor package: containing interfaces and classes
used to define new editors and the support to manage them.
- The event package: containing interfaces and classes for
listeneting to IDE specific events.
- The extension package: containing interfaces and classes
encapsulaing an extension and its hooks, and the registry to record
all extensions.
- The log package: containing interfaces and classes used to
define new log pages.
- The menu package: containing interfaces and classes used to
define new actions, and menus.
- The model package: contaning interfaces and classes used to
access an IDE's data model, and define new document types.
- The preference package: containing interfaces and classes used
to define new IDE preferences.
- The view package: containing interfaces and classes used to
define new graphical user interfaces.
- The wizard package: containing interfaces anc classes used to
define new document creation wizards.
In general, these packages contain "feature" and "listener" interfaces that
are usually implemented by the extension writer, and a "manager" interface
that must be implemented by the IDE service provider. The "manager" interface
provides the API to access and manipulate the extension writer "feature"
interface implementations. For example, the
editor package declares
the
Editor
"feature" interface, the
EditorListener
"listener" interface, and the
EditorManager
"manager" interface.
The first two are implemented by extension writers, while the third one
by IDE service providers. The IDE service provider implementation can be
found under the
spi packages. A similar pattern repeats in the other
extension hook packages.
Support packages contain supporting interfaces and classes whose
implementation are generally provided by IDE service providers and are
mainly for the use of extension writers. These packages are:
- The net package: contains a virtual file system that uses
URI
s to address objects on any file system.
- The util package: contains utility classes.
In addition to the packages described above, the
ide package contains
a number of interfaces and classes. One of those interfaces, the
IDE
interface is the central repository where all other IDE
services are accessed. Extension writers can access any of the service
implementations using the IDE interface.
Another class in the IDEConstants
class. Extension writers
can find there IDE constants identifying menus, and views.