This package provides a framework for abstracting platform-specific calls
away from the platform-independent DrJava codebase. The main code tree
contains platform-independent code to access and execute the platform-specific
implementations, which are kept in separate code trees.
The PlatformSupport interface defines the calls which must be
supported by all platform implementations. DefaultPlatform
provides a platform-independent implementation. For convenience, all platform
implementations extend DefaultPlatform , inheriting default
implementations for all methods that are not tailored for that platform.
PlatformFactory is a factory class which contains all logic for
identifying the host platform and instantiating the appropriate
PlatformSupport implementation. This is performed statically,
and the result is stored as a singleton field for easy access. Client
code can access platform-specific calls like so:
PlatformFactory.ONLY.method() . PlatformFactory
currently differentiates between Windows, Mac OS X, and the default platform.
Note that in order to reference a new platform implementation, it must already
be compiled and added to the classpath. The current platforms are built
with special ant targets which add the class files to platforms.jar in the
lib directory.
In order to add a new platform-specific feature to DrJava, you must follow
these steps:
-
Add a new method to
PlatformSupport . Make sure it is
properly documented.
-
Provide a default implementation in
DefaultPlatform . Often
this will be an empty method body. Document why it does what it does (or
doesn't).
-
Privode a platform-specific implementation for the necessary platforms.
Platforms which will use the default method do not need to be modified.
-
Write a test case that reveals the platform-specific behavior, or ensures
that all platforms produce expected results.
-
Rebuild the modified platform code using the appropriate systems.
|