121 lines
5.5 KiB
Text
121 lines
5.5 KiB
Text
WINDOWBUILDER PROPERTY SHEET LIBRARY
|
|
-------------------------------------
|
|
|
|
This project is a fork of a subset of the WindowBuilder Eclipse
|
|
plugin: http://www.eclipse.org/windowbuilder/
|
|
|
|
Specifically, it contains the subset of WindowBuilder related to the
|
|
propertysheet, intended for reuse in AOSP by the ADT plugin.
|
|
|
|
The fork was modified as follows:
|
|
* Started with revision 424 from the trunk:
|
|
http://dev.eclipse.org/svnroot/tools/org.eclipse.windowbuilder/trunk
|
|
|
|
* Extracted the property package from org.eclipse.wb.core:
|
|
src/org/eclipse/wb/internal/core/model/property
|
|
and then everything it transitively references. This turns out to
|
|
be a lot. I then started pruning out references to code we don't
|
|
need, such as support for editing Java constructs such as enums, or
|
|
dealing with a Java code model, etc. This means some of the files
|
|
have been edited to remove methods and fields. For example, the
|
|
property category code was modified to no longer support the
|
|
persistent storage of categories.
|
|
|
|
* The WindowBuilder code depended on a number of Apache Commons
|
|
libraries such as collections, lang, etc. Since ADT already uses
|
|
Guava, which provides a lot of the same functionality, I replaced
|
|
all the Commons calls with Guava calls in order to avoid having to
|
|
make ADT depend on (and load at runtime) the Commons libraries.
|
|
|
|
* Finally, the propertysheet code was made into a library instead of a
|
|
plugin, such that it can be loaded into the ADT plugin. This meant
|
|
mostly rewriting the DesignerPlugin class. It has kept its name
|
|
(since a lot of code references it for logging, resource loading
|
|
etc), but it is no longer an actual plugin. Instead it has init and
|
|
dispose methods for use by the AdtPlugin, and for logging it
|
|
delegates to the ADT plugin, etc.
|
|
|
|
* Icons were moved into the DesignerPlugin package such that the
|
|
resource loading code could use a relative path, since with an
|
|
absolute path it would be looking in the embedding plugin's
|
|
resources.
|
|
|
|
* To be consistent with the ADT codebase, I converted the files from
|
|
\r\n to \n newlines. Other than that, all formatting was left
|
|
unmodified.
|
|
|
|
* Removed unused resources such as unreferences colors from
|
|
IColorConstants, unneeded messages from ModelMessages, and so on.
|
|
|
|
* Note also that this Eclipse project is using a modified version of
|
|
the standard ADT Eclipse compiler settings: methods overriding other
|
|
methods and interfaces *without* using an @Override annotation are
|
|
ignored, since they were not using @Override annotations in the
|
|
WindowBuilder source base.
|
|
|
|
|
|
ADT ENHANCEMENTS
|
|
------------------
|
|
* I also modified the propertysheet in a few ways to add features
|
|
needed by ADT. These are all bracketed in the codebase with
|
|
// BEGIN ADT MODIFICATIONS
|
|
...
|
|
// END ADT MODIFICATIONS
|
|
|
|
Specifically, I made the property table able to expand all and
|
|
collapse all. Properties have sorting priorities, and have separate
|
|
name and title attributes (and tooltips show the property name
|
|
rather than the title.) Text property editors allow field completion
|
|
by providing IContentProposalProvider (and optionally
|
|
ILabelProvider) instances via their getAdapter method. And the
|
|
property table will color values differently based on whether the
|
|
property is modified. (This allows us to draw default attributes
|
|
differently). Finally, the propertysheet now supports "expand by
|
|
default" (and for certain categories to be excluded, such as
|
|
deprecations).
|
|
|
|
WINDOW DOCKING
|
|
---------------
|
|
|
|
The window docking support (the "FlyoutControlComposite" and
|
|
supporting classes) was also included, since it's used to present the
|
|
property sheet view in ADT. This code was also modified in a couple of
|
|
minor ways, using the same modification markers as above:
|
|
- Support invisible children (where the whole flyout is hidden)
|
|
- Added a "dismiss hover" method used to hide a temporary hover
|
|
(needed when the hovers are used with native drag & drop)
|
|
- Added a listener interface and notification when window states chane
|
|
(used to auto-zoom the layout canvas when windows are collapsed or
|
|
expanded).
|
|
- Changed the sizeall cursor used for dragging composites from the SWT
|
|
SIZE_ALL cursor to the HAND cursor since (at least on Mac) the
|
|
cursor looked wrong for docking.
|
|
|
|
UPDATES
|
|
--------
|
|
|
|
We should keep an eye on the propertysheet code in WindowBuilder and
|
|
migrate bug fixes and feature enhancements. To do that, first check
|
|
out revision 424 from
|
|
http://dev.eclipse.org/svnroot/tools/org.eclipse.windowbuilder/trunk
|
|
That's the same baseline that this fork was based on.
|
|
You can limit the checkout to just the org.eclipse.wb.core tree.
|
|
|
|
Then check out the newest revision of WindowBuilder in a separate
|
|
directory.
|
|
|
|
Now diff the two trees. Look for diffs in the packages related to the
|
|
propertysheet; this is going to be the packages that are present in
|
|
this library. If any of the diffs are related to the propertysheet or
|
|
supporting code, apply them to this library, and then update this
|
|
document to contain the new baseline revision (use 'svnversion .' to
|
|
get the number). Note that the diffs may need some rewriting if they
|
|
reference Apache Commons code.
|
|
|
|
Note that the ComponentsPropertiesPage.java class which is the main
|
|
window in WindowBuilder is not used in our implementation; we instead
|
|
have the PropertySheetPage class in ADT, so changes in that class
|
|
should be checked to see whether they apply to our property sheet page
|
|
(which uses the PropertyTable in a similar way, but obviously is based
|
|
around our own UI model rather than the WindowBuilder ObjectInfo
|
|
model.
|