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.