In working with Tapestry I find myself getting confused by the
number of components and their parameters, even when using the excellent Spindle
plugin. I haven't written an Eclipse plugin yet so I put together a plugin,
building on the Spindle classes to browse the components available in my
project.
The plugin adds a new view the
'Palette' to Eclipse. The image below shows the Palette on the left of the
source code editor area (click on the image to see a larger
view).
The
Palette consists of a tree of Tapestry components, organized by namespace.
Selecting a component in the tree displays a summary in the lower part of the
view showing the component description and listing required and optional
parameters along with their
descriptions.
Once I got this far I
looked into using the Palette as a source for component editing data. I reviewed
the Eclipse drag and drop API and eclipse extensions for adding drag and drop
functionality to existing views and editors. I was able to add drop
functionality to the Spindle TemplateEditor so that dragging a component out of
the Palette onto the editor inserts a <span> tag with an implicit
component declaration, including attributes for required parameters at the
current insertion point (you have to click in the editor at the point at which
you want the component declaration to be inserted). If a range of text is
selected and the dragged component allows a body the span will wrap the
selection, otherwise an error dialog appears.
Warning: The drop/editing code works on
Linux but not on Mac OS X.
This is
my first cut at the plugin, there is only minimal error checking. The Palette
requires that a Tapestry project (created with Spindle) is the current project
and there is at least one open source code editor in the workspace when the
Palette is opened. It refreshes too often and there are some issues with
resizing the view.
The plugin requires
that the Spindle plugin is
installed.
Unzip in your Eclipse install
directory and restart Eclipse.
To open
the Palette use the Window > Show View > Other > Tapestry > Palette
menu. Make sure a Tapestry project is the current project and at least one
editor window is open.
I'd like to add
support for adding component declarations to the specification file, a wizard
for setting component id and parameter values and support for inserting tags
other than <span> for certain components, such as <input> tags for
components representing form
elements.
Many of the components,
especially in the contrib library are missing descriptions and many components,
have no descriptions for their
parameters.
I'm working on getting the
drag and drop working on Mac OS X so I can work on this on my
powerbook.