Sean Parent wrote in mail to adobe-source-devel regarding his thoughts on a visual editor for Eve files:

I have some thoughts - Foster may have some also - he implemented the original Expresso -

  • The basic UI that I envision is a two view editor - a tree view showing the UI elements and a preview.

The tree view should be fairly simple - showing an icon for the view type and the name property (after localize is executed) for the item - if no name property then the view type is displayed

 [] My Dialog
  -- row
    () OK
    () Cancel
  • Drag and drop (including multiple items) - should be allowed within the tree view as well as between the tree view and preview windows.

  • The preview window should be live - meaning you can select elements directly in it and drag items around. Items can be dropped into containers (containers should highlight to show you where the item will be dropped.

  • An inspector palette should be present to show you the properties of the view selected. I would only show the editable properties and possibly organize them into panels - you might want a debugging palette or panel which shows the calculated properties. This palette should be fairly easy to create with Eve (and Adam) - I’ve been meaning to construct this part with the current system just to show the properties of each of the widgets types.

  • Shortcuts for typical properties should be provided - ctrl-[ - ] for align left, center, right, etc…

  • A palette of the available widgets that can be dropped onto either the tree view or the preview would be great.

  • Within the inspector palette I would allow expressions - not just values - for the properties.

  • From an implementation standpoint - the Eve (and Adam) languages have been designed to support roundtrip editing - this is why the comments are in the syntax - so they can be associated with particular elements and carried through an editor. The way to build such a beast is to replace the eve_evaluate file that captures the information from the parser and populate a structure for the editor (possibly using the forest library).

  • One implementation hole that I know of at the moment is that there is no way way to erase an item from a layout - but I believe that could be easily added.

  • Bonus points for a live source view
  • Double bonus points for alternative syntaxes (especially an XML based one)
  • Triple bonus points for a property model view (a table of cells and expressions) - and drag-drop to connect
  • 50 bonus points for a property model visualizer (likely using GrafViz)