Everything Parsley Template Editor provides
Open bundle templates (.wo folders) or standalone templates (.html files) in a tabbed editor with synchronized views for the HTML template, WOD bindings, API definitions, and WOO settings. Each tab provides specialized editing for its file type.
The Usages tab answers “who uses this component?” — a reverse dependency view showing every component in the workspace that references the current one as an element. Results appear in a two-column table (component name and project) with double-click navigation to jump straight to the using template. The scan runs in the background on first activation; hit Refresh to re-scan. Works across projects.
Standalone templates (.html files not inside .wo folders) have full editor support: autocomplete, keypath validation, and build-time validation — all on par with traditional bundle template components. This is a key enabler for ng-objects, where standalone templates are the primary component format.
Distinct colors for HTML tags, OGNL keypaths, string constants, and dynamic binding values. A subtle background tint on <wo:> tags makes component boundaries visually distinct from surrounding HTML. Parser control tags (<p:raw>, <p:comment>) are rendered with a muted tint.
A structural outline view showing the element hierarchy. Selecting an element in the outline navigates to it in the editor, and moving the cursor in the editor updates the outline selection.
A breadcrumb bar above the editor shows the element hierarchy at the cursor position, providing context for deeply nested templates.
Type <wo: and press Ctrl+Space to see all available component types, filtered by the project’s framework (ng-objects or WebObjects). Selecting a component inserts the correct tag form — self-closing (<wo:str />) for elements without child content, or opening+closing pairs (<wo:form></wo:form>) for content components. Required bindings are pre-inserted with the cursor inside the quotes, so you can start typing the value immediately.
Inside a <wo:> tag, Ctrl+Space shows all valid binding names for that component type, read from the component's .api definition and Java class.
When editing a binding value, Ctrl+Space offers OGNL keypath completions resolved against the component's Java class — walking the full keypath chain and suggesting keys at each level.
Typing </ and pressing Ctrl+Space suggests the correct close tag for the innermost open element. Correctly handles self-closing tags and attribute values containing /.
In the WOD editor, Ctrl+Space completes element type names and binding names with context-aware filtering.
Binding values are validated against the component's Java class in real time. Invalid keypaths are underlined with squiggly markers and reported in the Problems view. Validation re-runs automatically when Java classes or .api files are saved.
The editor catches common template authoring errors: missing = between an attribute name and value (negate"true" instead of negate="true"), missing closing > on tags, and miscapitalized tag shortcuts. Each error includes a descriptive message with the correct syntax.
When a keypath segment or element type name is invalid, the editor suggests close matches — "Did you mean 'name'?" for a mistyped key, or "Did you mean 'str'?" for a mistyped tag name. Suggestions use Damerau–Levenshtein string distance, catching transpositions, insertions, deletions, substitutions, and capitalization errors.
Press Cmd+1 anywhere on a line with a validation error to apply a fix instantly. Works for both keypath errors and element type errors. When a line has multiple errors, proposals for all of them appear in the popup.
Right-click an error in the Problems view and select Quick Fix to see replacement suggestions. Applying a fix opens the file, replaces the invalid text, and removes the marker.
Hovering over a squiggly-underlined error shows the validation message inline. Hovering over a <wo:ComponentName> tag shows the component’s API documentation — accepted bindings, required/settable markers, and defaults. When both are available, the error appears first with documentation below.
The shared API model (WebObjectDefinitions.xml) is accessed under synchronization, preventing false validation errors from concurrent DOM reads — a fix for a long-standing intermittent issue.
<p:raw>Wrapping content in <p:raw>...</p:raw> treats it as literal text — no dynamic tag processing. Useful for embedding example code that contains <wo:> tags without them being treated as live bindings. Content is excluded from validation.
<p:comment>Wrapping content in <p:comment>...</p:comment> creates a template-level comment that is stripped entirely from output, unlike HTML comments which are sent to the client. Content is invisible to validation.
Eclipse’s Find References (Ctrl+Shift+G) includes template references in the standard Search view. Search for references to a method or field and the results include binding key references from the component’s own template. Search for references to a component or element class and the results include <wo:TypeName> tags and WOD declarations across the project and all dependent projects.
F3 on a <wo:ComponentName> tag jumps straight to the Java class declaration — the standard Eclipse “Open Declaration” shortcut, working in templates. Ctrl+Click on element type names in the WOD editor, on binding values (keypath navigation), and on inline WOD element references in templates also works.
Quick switching between a component’s files: Cmd+Alt+1 opens the Java class, Cmd+Alt+2 the HTML template, Cmd+Alt+3 the WOD file, Cmd+Alt+5 the API definition. The API shortcut works from any editor context — for WOElements without an associated component template, it opens the API editor directly, creating a blank .api file if none exists.
Cmd+Shift+X opens a dialog to quickly find and open any component by name, from anywhere in the workspace.
Renaming a component’s Java class via Refactor > Rename automatically renames its .wo folder, contained template files, and .api file. A “Rename Component…” context menu action on .wo folders provides the reverse direction. All references in other templates (<wo:OldName> tags and WOD type declarations) are updated across the project.
Renaming a method or field in a component’s Java class via Refactor > Rename automatically updates binding key references in the component’s own WOD and HTML template files. Key paths are handled correctly — only the first segment is renamed. KVC getter/setter prefixes (get, set, is, _) are stripped automatically when deriving the binding key.
Cmd+2, R on an element tag enters linked rename mode — editing the tag name simultaneously updates the matching close tag. Works on <wo:> tags, HTML tags, and parser control tags.
Cmd+2, E extracts the selected HTML into a new component — creating the component files, replacing the selection with a <wo:NewComponentName/> tag, and opening the new component for editing. The extracted HTML is automatically dedented to start at column 0. Creates standalone .html templates for ng-objects projects and .wo bundles for WebObjects projects.
Cmd+2, X is the inverse of Extract Component — it extracts everything around the selection into a new wrapper component. The wrapper’s template contains the original page structure with <wo:content /> where the selection was; the original template becomes just the selection wrapped in a <wo:WrapperName> tag. Ideal for extracting reusable page layouts (nav, header, footer) into wrapper components.
Cmd+2, W extracts inline bindings from a <wo:> tag in the template into the separate WOD file, replacing the tag with a reference.
Cmd+2, I converts a <webobject name="X"> tag to inline <wo:Type> syntax, inlining the bindings from the WOD file and removing the WOD declaration. The reverse of Cmd+2, W.
Convert between standalone templates and bundle templates in both directions. “Convert to Standalone Template” on .wo folders replaces <webobject> tags with inline <wo:Type> syntax, moves the HTML out, and deletes the .wo folder. “Convert to Bundle Template” on standalone .html files wraps them in a .wo folder with an empty .wod file. Both support multi-selection.
When Cmd+1 is invoked on an unresolved binding key, the quick-fix opens the appropriate dialog: Create Action for action bindings (generating a method returning WOActionResults/NGActionResults) or Create Key for other bindings (generating a property accessor). The dialog type is detected automatically from the binding name.
Context menu actions to delete an entire element (including children) or unwrap a tag (removing the tag but keeping its content).
Cmd+Shift+F reformats the template with consistent indentation. Configurable tabs vs. spaces and indent size via Preferences → Parsley → Template Formatting. The formatter preserves original line structure, blank lines between elements, non-ASCII characters, entities, and spaces between inline tags.
Cmd+6 opens a dialog to browse and insert any available component type. The dialog includes search, filtering, and shows component descriptions from .api files.
The editor toolbar provides one-click insertion for common components: WOString, WOConditional, WORepetition, WOHyperlink, WOTextField, WOForm, WOSubmitButton, WOImage, WOCheckBox, WORadioButton, WOPopUpButton, and more.
A view showing all available bindings for the component under the cursor. Bindings can be dragged from the inspector directly into the template or WOD file.
A Package Explorer variant designed for WebObjects and ng-objects development. Bundle template folders are expandable (showing their contained files), unlike the standard Package Explorer where they appear as opaque folders.
WO-specific source folders (src/main/components, src/main/woresources, src/main/webserver-resources) are pulled up to the project root level alongside standard Java source folders, keeping the tree shallow.
Projects are decorated with framework badges — ng-objects or WebObjects — making it easy to tell at a glance which framework each project uses.
Component source folders are marked with a "wo" badge overlay. Full-path labels (src/main/components) replace Eclipse's default shortened names, while preserving EGit branch decorators.
Custom icons for bundle template folders with problem marker overlays, visible across all Eclipse views (explorer, search results, etc.).
Create new ng-objects or WebObjects Maven projects from scratch — complete projects with a sample Main component, ready to run. The wizard generates all source files and imports the project using m2e.
Create new components with a choice between Standalone template (ng-objects style) and Bundle template (WebObjects style). The default format is auto-detected from the project type. For bundle templates, the wizard generates HTML, WOD, WOO, and Java files; for standalone templates, just the HTML and Java files.
A multi-page form editor for .api files. Define component bindings (name, type, required/optional), validation rules, display metadata, and creation/deletion behavior through a structured UI rather than editing XML directly.
Rename a binding in the API editor and update all template references in one step. Enable “Refactor on rename” (top-right checkbox), rename one or more bindings, save — a refactoring preview shows every .html and .wod file that uses the old name. The scan covers the source project and all projects that depend on it transitively.
Saving an .api file immediately revalidates all open component editors. Mark a binding as required, save — and every open template that uses that component instantly shows or clears the corresponding validation markers.
Works with both ng-objects and WebObjects projects in the same workspace. Per-project framework detection uses build.properties (project.base=ng or project.base=wo) with automatic classpath probing as a fallback.
Component files (.html, .wod, .woo, .api) automatically open in the Parsley editor — for any file inside a .wo folder, or for component files in ng-objects projects. Coexists with WOLips without conflicts.
Parsley coexists cleanly with WOLips in the same Eclipse installation. By default, Parsley activates for projects with project.base in build.properties. A preference in Preferences → Parsley → WOLips Coexistence lets Parsley handle all recognized WO/NG projects, even without project.base.
A Maven preference page detects whether your settings.xml has the WOCommunity repository configured and offers a one-click button to add it. The WOCommunity archetype catalog is registered automatically for the New Maven Project wizard.
Customizable colors for HTML tags, WOD syntax, OGNL expressions, and string constants in both the template and WOD editors.
Control which validation rules are active and their severity levels (error, warning, info). Custom validation rules can be defined for specific binding patterns.
Define custom abbreviations for frequently used inline WOD binding patterns, speeding up template authoring.
A dedicated Eclipse perspective optimized for WebObjects/ng-objects development. Layout: Parsley Explorer and Type Hierarchy on the left, editors in the center, Problems and Console at the bottom, Outline on the right. Includes Debug, Java, and Team/EGit action sets.