-
Feature Request
-
Resolution: Done
-
Major
-
None
-
None
JSR-283 (aka, JCR 2.0) includes a standard format called 'Compact Node Definition' that is used to declare node types, property definitions, and child node definitions.
Resources
The official grammar of the CND format is defined in Section 25.2 of the JCR 2.0 specification. The ModeShape project has in its documentation a tutorial for working with CND files.
The ModeShape project also has code to parse a CND file, and it's probably better to simply copy this code and simplify/customize it to the editor's needs rather than have the editor depend on the ModeShape project for just these classes (which probably aren't perfectly usable as is for the editor).
There are also example CNDs in the ModeShape codebase.
Requirements
- Edit any .cnd file in the workspace (Priority 1)
- View the file source, with support for select/copy (Priority 1)
- Edit the file source, with support for paste (Priority 3)
- Syntax highlighting (color keywords, quoted strings, comments) of file source would be a nice-to-have (Priority 2)
- Problem markers (in file source, Problems view) would be a nice-to-have (Priority 3)
- Form-based editor:
- view/edit/add/remove namespace declarations (Priority 1)
- view/edit/add/remove node type and its attributes and supertypes (Priority 1)
- view/edit/add/remove property definition (and its attributes) for a selected node type (Priority 1)
- view/edit/add/remove child node definition (and its attributes) for a selected node type (Priority 1)
- Preferences for
- using long, medium, or short forms of attributes (e.g., "abstract" vs "abs" vs "a") (Priority 2, start out w/ long)
Other ideas
- It would be nice if the user doesn't have to scroll in the form editor when working on a node type.
- Is it possible to optionally see the both inherited and explicit property definitions and child node definitions? Perhaps the inherited definitions might be grey-ed out and non-editable. One issue might be how to know which node type it came from (without cluttering up the UI).