summaryrefslogtreecommitdiff
path: root/propertysheet/README.txt
diff options
context:
space:
mode:
authorTor Norbye <tnorbye@google.com>2012-04-04 18:36:45 -0700
committerTor Norbye <tnorbye@google.com>2012-04-05 12:04:22 -0700
commit765e52e2d30d0754625b8c7af6c36e93612f15be (patch)
treec56a08ff179924eff51f0020fe530c8fd895406b /propertysheet/README.txt
parentb33fa4c8ce6b3d2c10eaa92c5c26019d7326bd4c (diff)
downloadeclipse-windowbuilder-765e52e2d30d0754625b8c7af6c36e93612f15be.tar.gz
Add WindowBuilder propertysheet code. See README.txt for details.
This reverts commit b33fa4c8ce6b3d2c10eaa92c5c26019d7326bd4c. Change-Id: I763357c42f933a52eda9b52988b785e092eac424
Diffstat (limited to 'propertysheet/README.txt')
-rw-r--r--propertysheet/README.txt105
1 files changed, 105 insertions, 0 deletions
diff --git a/propertysheet/README.txt b/propertysheet/README.txt
new file mode 100644
index 0000000..6c2feab
--- /dev/null
+++ b/propertysheet/README.txt
@@ -0,0 +1,105 @@
+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).
+
+
+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.