April 26, 2007

Verbosio progress, 04/26/2007

It's meat and potatoes time.

As I've mentioned in earlier posts, I've spent some time creating a "preview" or rendered view of a XML document the user is editing:

Of course, seeing the document alone is no fun. You want to be able to edit it. That's what Verbosio is for.

So let's say you hit Ctrl+E (right now you have to click) on the selected menu item. What do you get? How about, oh, an interface for changing that menu item's properties?

This is what I've been dreaming of for the last year and a half: a way to edit XUL on the fly, visually. (Of course, it's not just XUL - not in the long run. XUL's simply what I chose to work with first.)

It's also supporting my vision for Verbosio: having extensions drive most of the work, while Verbosio handles the common tasks. The preview viewer is provided by a Verbosio extension. The yellow box is provided by Verbosio's core, while its contents (the "XML markup template") come from another Verbosio extension. Support for the document you see comes from the same Verbosio extension as the markup template, a XUL language extension. The XUL language extension also provides some metadata about the XUL language in another component (including some basics about how to handle whitespace). Another extension told Verbosio how to open the chrome application the user is editing.

This is a starting point. I'm going to expand it soon, so that you can:

  • Work with sets of elements (like radio buttons inside a radio group, or cells in a table)
  • Build your own templates within Verbosio, using documents you have open in Verbosio
  • Edit DTD localization entities underneath the labels you see
  • Create templates for creating new documents in supported XML languages from scratch

Sometime after that - once I fix other API issues and some pretty important regressions - I'll release Verbosio 0.1 alpha 1. My changelog is in the extended entry.

In the meantime, I'm also very aware of the need to get other eyes on the code behind Verbosio. Just recently, Paul Rouget borrowed my chrome registry viewer code for his CodeEditor tool. That to me is a solid vindication of what I've been trying to do.

At the same time, the entire Verbosio code base is unreviewed and only partially documented. Sooner or later, I'm going to need volunteers who are willing to work with Verbosio - and me - and improve the hackety-hack code I'm crafting from scratch. Very little of this code, as it now stands, would pass any realistic peer review. So I will start asking, as of now, if other people want to directly involve themselves in the Verbosio project over the next few months.

I just want fellow developers to start thinking about it. I couldn't really do that before, because it's so hard to put into words what Verbosio is all about. Now, hopefully with the screenshots above, the vision can become clearer.

For now, though... the steak's on the barbecue.

2007-04-26 21:42  ajvincent

        * verbosio/www/screenshots.html: Add screenshots for April 26, 2007
          to Verbosio's screenshots page.

2007-04-26 20:41  ajvincent

	* verbosio/www/images/Apr26_2007/: menuitemEdit.png,
	  previewPanel.png: Add screenshots of the preview view of the
	  document, and a first look at the XUL menuitem editing template.

2007-04-26 17:05  ajvincent

	* verbosio/src/: core/components/templateXTF.js,
	  core/content/template.css,
	  generic-viewers/preview-edit/content/preview-edit.js,
	  generic-viewers/preview-edit/content/preview-edit.xul,
	  markup-languages/xul/content/templates.xml: More samples of a XML
	  markup template at work.  More!  (Also remove an assert that
	  proved inappropriate.)

2007-04-26 16:34  ajvincent

	* verbosio/src/: core/components/templateXTF.js,
	  core/content/templateFrame.xul,
	  core/content/bindings/template.xml,
	  core/idl/xeIMarkupLanguage.idl, misc/uuid.txt: More XML markup
	  template commits:  Implement setting of template UI fields from a
	  source node.	Implement  element for read-only
	  templates. Also add basic code (unsupported as yet) for
	  ,  elements.

2007-04-26 16:12  ajvincent

	* verbosio/src/core/app-resources/ecma-debug.js: Add stack dumping
	  to the assert function.

2007-04-25 20:40  ajvincent

	* verbosio/src/core/content/: appOverlay.js, appOverlay.xul: Add
	  code to open testing app's chrome://verbosio/content/verbosio.xul
	  for faster testing.

2007-04-25 20:37  ajvincent

	* verbosio/src/core/: chrome.manifest.in,
	  content/bindings/menudeck.xml: Override the XUL Widgets menudeck
	  widget to wallpaper over a trunk regression.	Expect this change
	  to be backed out in the future.

2007-04-24 22:21  ajvincent

	*
	  verbosio/src/generic-viewers/preview-edit/content/preview-edit.js:
	  Drop debugging dump statements.

2007-04-24 22:16  ajvincent

	*
	  verbosio/src/generic-viewers/preview-edit/content/preview-edit.js:
	  Fix Mac bustage, where floatBox doesn't appear onscreen close to
	  the target element.

2007-04-24 00:15  ajvincent

	*
	  verbosio/src/generic-viewers/preview-edit/content/preview-edit.js:
	  Hide floating templates frame when the preview editor loses
	  focus.

2007-04-24 00:06  ajvincent

	* verbosio/src/:
	  generic-viewers/preview-edit/content/preview-edit.js,
	  core/content/templateFrame.xul: Add API for viewing markup
	  templates, based on the wrapped document the user wishes to edit.

2007-04-24 00:04  ajvincent

	* verbosio/src/core/content/template.css: Remove some currently
	  dead XBL bindings.

2007-04-24 00:04  ajvincent

	*
	  verbosio/src/generic-viewers/preview-edit/content/preview-edit.xul:
	  Give the template iframe some style (height, width).

2007-04-24 00:03  ajvincent

	* verbosio/src/markup-languages/xul/content/templates.xml: Markup
	  template elements should have a menulabel element, in order to
	  fit with  widget.

2007-04-24 00:02  ajvincent

	* verbosio/src/core/components/templateXTF.js: Implement
	  nsIXTFElement.cloneState for .

2007-04-23 18:35  ajvincent

	* verbosio/src/core/components/xeTestEngine.js: Add XUL doc test 2
	  to xeITestEngine.runAllTests().

2007-04-23 18:28  ajvincent

	* verbosio/src/: core/components/templateXTF.js,
	  core/idl/xeIXMLLanguagePackService.idl,
	  markup-languages/xul/components/xul-language.js, misc/uuid.txt:
	  Add Verbosio markup template language pack.  Add routines to
	  xeIMarkupTemplate.rateSupport for initial checking of a node
	  against its equivalent template.  This includes a whitespaceMap
	  object which caches results from various
	  xeIXMLLanguagePackService.handleWhitespace() calls.

2007-04-23 18:00  ajvincent

	* verbosio/src/misc/component.js.in: Multi-component JavaScript
	  module template:  Support service factories a little easier, by
	  removing the need for Service.prototype; just use a global
	  service object, and Module.addService().

2007-04-23 13:33  ajvincent

	* verbosio/src/: code-languages/css/components/css-document.js,
	  code-languages/css/components/css-language.js,
	  code-languages/javascript/components/js-document.js,
	  code-languages/javascript/components/jsLanguagePack.js,
	  code-languages/javascript/components/jsSourceMap.js,
	  code-languages/xul-application/components/application-ini.js,
	  core/components/DTDDocumentWrapper.js,
	  core/components/XMLDocumentWrapper.js,
	  core/components/documentFile.js,
	  core/components/entityManager.js,
	  core/components/nodePositionService.js,
	  core/components/templateXTF.js,
	  core/components/textDocumentWrapper.js,
	  core/components/verbosio-utils.js,
	  core/components/verbosioEditor.js,
	  core/components/virtualProtocol.js,
	  core/components/xblLanguagePack.js,
	  core/components/xeBaseURIMap.js, core/components/xeFileSearch.js,
	  core/components/xeTestEngine.js,
	  core/components/xmlLanguagePack.js,
	  core/content/bindings/valuepanel.xml,
	  core/content/tools/xeTransactionCommon.js,
	  document-packs/verbosio-app/components/verbosio-app.js,
	  document-packs/xul-application/components/xul-application.js,
	  generic-viewers/inspector/content/inspectorOverlay.js,
	  generic-viewers/source-edit/content/bindings/source-editor.xml,
	  markup-languages/xul/components/xul-document.js,
	  markup-languages/xul/components/xul-language.js,
	  misc/component.js.in, xpathgen/components/nsXPathGenerator.js:
	  QueryInterface cleanup.

2007-04-22 14:29  ajvincent

	* verbosio/src/core/components/xeTestEngine.js: Add initial test
	  code framework for markup templates.

2007-04-21 14:32  ajvincent

	*
	  verbosio/src/generic-viewers/preview-edit/content/preview-edit.js:
	  Get templates corresponding to a DOM node the user selects.

2007-04-21 14:31  ajvincent

	* verbosio/src/: core/components/templateXTF.js,
	  core/components/verbosio-utils.js,
	  core/idl/xeIMarkupLanguage.idl,
	  core/idl/xeIVerbosioUtilsService.idl, misc/uuid.txt: Add initial
	  support for searching Verbosio's markup language templates
	  against a selected DOM node.

2007-04-21 14:21  ajvincent

	* verbosio/src/core/content/: verbosio.js,
	  tools/namespaceRegistry.js: Rewrite namespace registry to reflect
	  more recent API, and use Verbosio utilities service.

2007-04-21 14:19  ajvincent

	* verbosio/src/markup-languages/xul/content/templates.xml: Reduce
	  cruft in templates.xml to immediately testable levels.  I'm
	  moving the markup language bindings to XTF and almost starting
	  over.

2007-04-21 14:17  ajvincent

	* verbosio/src/markup-languages/xul/verbosio-data.xml: Minor bugs
	  in verbosio-data.xml for XUL language extension.

2007-04-21 14:15  ajvincent

	* verbosio/src/core/components/entityManager.js: Entity manager was
	  calling for Verbosio utilities a little too soon.

2007-04-21 10:03  ajvincent

	*
	  verbosio/src/generic-viewers/preview-edit/content/preview-edit.js:
	  Minor adjustments to floatBox:  use click events instead of
	  mousemove (we should really make this selection-dependent), and
	  bail out if the target node hasn't changed from the last such
	  event.

2007-04-21 09:55  ajvincent

	* verbosio/src/: core/components/templateXTF.js, misc/uuid.txt:
	  Initial check-in of XTF binding for XML elements in the markup
	  namespace.

2007-04-17 23:24  ajvincent

	* verbosio/src/: core/content/templateFrame.xul,
	  generic-viewers/preview-edit/content/preview-edit.js,
	  generic-viewers/preview-edit/content/preview-edit.xul,
	  generic-viewers/preview-edit/skin/preview-edit/preview-edit.css:
	  Lay groundwork for positioned editing templates.  Thanks to
	  bzbarsky for suggesting iframe inside box.
Posted by WeirdAl at April 26, 2007 7:24 PM
Comments

Great job!

Posted by: Bo at April 27, 2007 5:23 AM