June 10, 2007

Verbosio progress, 06/10/2007

I keep telling myself I'm two to three weeks away from a proof-of-concept release. Unfortunately, finding those weeks is proving very difficult. Hence, not much outward progress on Verbosio lately.

Just a way you can edit DTD entities with the XML you're also editing!

It also is a little dynamic:

Finally, the changes you're making don't apply until you hit the "OK" button. If you then open up the DTD document, you'll see the DTD itself also has the new value:

I had originally written this so the DTD entity would be exposed beneath the attribute value, so you could change the DTD name and value by independent textboxes. One glance at that user interface told me it wasn't going to work - it was going to be non-obvious. So I redesigned it from scratch. The "goalposts" you see in these images are actually SVG markup, living anonymously within a XBL binding on a <markup:entity-box/> element inside a XUL document. That's four different XML languages, plus JavaScript - one of those languages being a graphics language - all working together to give an unique look and feel which I hope is intuitive. XULRunner 1.9a5 just smiles at this and says, "More, please."

The effects aren't perfect, and neither is the implementation. For instance, if you type into the textbox something larger than the textbox's visual size, the goalposts move outside the textbox's horizontal boundaries. Also, actually committing the changes (clicking "Ok") does far more DOM operations than are strictly necessary. Here, all that Verbosio should need to do is a few attribute modifications, but in reality it also does node insertions and removals. So the code, while functional, needs some optimization.

The change log, as usual, is in the extended entry.

2007-06-10 08:19  ajvincent

	* verbosio/www/screenshots.html: Add images for June 10, 2007 to
	  screenshots page.

2007-06-10 08:15  ajvincent

	* verbosio/www/images/Jun10_2007/: showDTDEntity.png,
	  showDTDEntity_thumb.png: Fix screenshots showing the DTD entity
	  for the first time.

2007-06-10 08:07  ajvincent

	* verbosio/www/screenshots.html: Switch screenshots.html to using
	  thumbnails for April 26, 2007.

2007-06-10 08:05  ajvincent

	* verbosio/www/images/: Apr26_2007/menuitemEdit_thumb.png,
	  Apr26_2007/previewPanel_thumb.png, Jun10_2007/dtdUpdated.png,
	  Jun10_2007/dtdUpdated_thumb.png, Jun10_2007/editDTDEntity.png,
	  Jun10_2007/editDTDEntity_thumb.png, Jun10_2007/itemEdit.png,
	  Jun10_2007/itemEdit_thumb.png, Jun10_2007/showDTDEntity.png,
	  Jun10_2007/showDTDEntity_thumb.png: Add new screenshots and
	  thumbnails for June 10, 2007.  Add thumbnails for April 26, 2007.

2007-06-10 02:00  ajvincent

	*
	  verbosio/src/generic-viewers/preview-edit/content/preview-edit.js:
	  Teach preview document viewer how to react to mutation DOM events
	  from the master document.

2007-06-10 01:52  ajvincent

	* verbosio/src/core/content/verbosio.js: Register added wrappers
	  with the mutation event registry.

2007-06-10 01:51  ajvincent

	* verbosio/src/xpathgen/components/nsXPathGenerator.js: Post new
	  XPathGenerator component (from bug 319768 @
	  bugzilla.mozilla.org).  Not an exact copy, but close enough.

2007-06-10 01:49  ajvincent

	* verbosio/src/core/components/entityManager.js: Convert assertion
	  (possibly bogus) to warning; editing DTD entities seems to work
	  without the assertion.

2007-06-10 01:47  ajvincent

	* verbosio/src/core/content/tools/mutationEvents.js: Remove unused
	  eventSubtreeModifiedDispatcher for mutationEventRegistry.  Update
	  mutationEventRegistry to reflect current API (gDocumentPack
	  instead of unused documentRegistry).	Add new
	  mutationEventNotifier to notify document viewers of mutation
	  events.

2007-06-10 01:44  ajvincent

	* verbosio/src/core/content/bindings/verbosio.xml: Remove some
	  excessively noisy dump statements.

2007-06-09 18:35  ajvincent

	* verbosio/src/core/components/templateXTF.js: Update the template
	  when the user types something into a textbox.

2007-06-09 18:27  ajvincent

	* verbosio/src/core/content/verbosio.js: Fix API change on
	  txnDispatcher.executeListeners:  gDocumentPack owns the
	  transaction manager, not individual document wrappers.

2007-06-09 18:25  ajvincent

	* verbosio/src/core/content/templateFrame.xul: Fix assertions for
	  scope not having a Components property.'

2007-06-09 18:23  ajvincent

	* verbosio/src/core/components/documentFile.js: Back out part of
	  documentFile.js rev 1.14, as it broke support for Windows.

2007-06-09 16:57  ajvincent

	* verbosio/src/core/app-resources/ecma-debug.js: Fix minor
	  regression with warn() calls.

2007-06-09 16:47  ajvincent

	* verbosio/src/core/content/templateFrame.xul: Add commands for
	  accepting and canceling a template's changes.

2007-06-09 16:46  ajvincent

	* verbosio/src/core/content/tools/xeTransactionCommon.js: Add an
	  entity change action for recorded transactions.

2007-06-09 16:45  ajvincent

	* verbosio/src/core/components/entityManager.js: Track the owner
	  node of an entity through clones.  Also, update each attribute
	  only once.

2007-06-09 16:43  ajvincent

	* verbosio/src/core/: components/templateXTF.js,
	  idl/xeIMarkupLanguage.idl: Implement exporting of document
	  fragments from an edited markup template.  These fragments will
	  replace the original node they edit.

2007-06-09 16:42  ajvincent

	* verbosio/src/core/content/verbosio.js: The verbosio.advanceTxn()
	  call should not need a xeIDocumentWrapper argument.

2007-06-03 22:58  ajvincent

	* verbosio/src/core/components/xeBaseURIMap.js: Kill Windows
	  newline characters.

2007-06-03 22:57  ajvincent

	* verbosio/src/backport.pl.in: As module files currently live in
	  the components directory, copy them to the modules directory
	  before backporting to srcdir.

2007-06-03 22:52  ajvincent

	* verbosio/src/core/components/: nodePositionService.js,
	  templateXTF.js, textDocumentWrapper.js, verbosio-utils.js,
	  virtualProtocol.js, xeBaseURIMap.js, xeFileSearch.js,
	  xeTestEngine.js: Code redux:	Use XPCOMUtils.jsm,
	  ArrayConverter.jsm, ecma-debug.jsm, XMLValidator.jsm modules, and
	  drop a lot of redundant code as a result.

2007-06-03 22:48  ajvincent

	* verbosio/src/core/components/xblLanguagePack.js: Strict warning
	  fix:	lose a trailing comma.

2007-06-03 21:32  ajvincent

	* verbosio/src/core/components/verbosioEditor.js: Kill
	  verbosioEditor.js - the transaction that originally needed it
	  turned out to be unnecessary.

2007-06-03 17:27  ajvincent

	* verbosio/src/core/components/entityManager.js: Code redux:  Use
	  XPCOMUtils.jsm, ArrayConverter.jsm, ecma-debug.jsm,
	  XMLValidate.jsm modules for entityManager.js.

2007-06-03 17:26  ajvincent

	* verbosio/src/core/modules/ecma-debug.jsm: ECMA Debug module
	  clean-up.

2007-06-03 17:25  ajvincent

	* verbosio/src/core/modules/XMLValidator.jsm: Don't dump the
	  JavaScript stack for XMLValidator.validate() failures.

2007-06-03 16:47  ajvincent

	* verbosio/src/core/: components/documentFile.js,
	  modules/XMLValidator.jsm: Code redux:  Add XMLValidator
	  JavaScript module.  Use XMLValidator.jsm for documentFile.js.

2007-06-03 16:26  ajvincent

	* verbosio/src/core/modules/ArrayConverter.jsm: Add
	  ArrayConverter.jsm (from
	  https://bugzilla.mozilla.org/show_bug.cgi?id=380839 patch v1.1)

2007-06-03 16:18  ajvincent

	* verbosio/src/core/components/documentFile.js: Code redux:  use
	  ecma-debug.jsm for documentFile.js

2007-06-03 16:11  ajvincent

	* verbosio/src/: backport.pl.in, make-project.pl: Add support for
	  Verbosio JS modules to the build process.

2007-06-03 15:47  ajvincent

	* verbosio/src/core/modules/: ecma-debug.js, ecma-debug.jsm: Copy
	  verbosio/src/core/app-resources/ecma-debug.js rev 1.3 to
	  verbosio/src/core/modules/ecma-debug.jsm rev 1.1.

2007-06-03 15:46  ajvincent

	* verbosio/src/core/modules/ecma-debug.js: Copy
	  verbosio/src/core/app-resources/ecma-debug.js rev 1.3 to
	  verbosio/src/core/modules/ecma-debug.js rev 1.1.

2007-06-03 15:43  ajvincent

	* verbosio/src/core/app-resources/ecma-debug.js: Adjust
	  ecma-debug.js script in preparation for module import.

2007-06-03 15:30  ajvincent

	* verbosio/src/core/components/documentFile.js: Code redux:  use
	  XPCOMUtils.jsm for module code, documentFile.js

2007-06-02 23:27  ajvincent

	* verbosio/src/core/application.ini.in: Move Verbosio requirements
	  for base platform to XULRunner 1.9a5.

2007-06-01 22:07  ajvincent

	* verbosio/src/core/components/templateXTF.js: Remove
	  handleDefault() from templateXTF, as a result of mozilla.org bug
	  378247 being fixed.

2007-06-01 22:06  ajvincent

	* verbosio/src/core/idl/xeIDTDWrapper.idl: Code style change:
	  arguments for methods should be on different lines.

2007-06-01 22:06  ajvincent

	* verbosio/src/code-languages/css/components/css-document.js:
	  Factor out a couple more interfaces we know the CSS document
	  wrapper does not support.

2007-06-01 22:04  ajvincent

	* verbosio/src/: core/components/DTDDocumentWrapper.js,
	  core/components/entityManager.js,
	  core/components/xeTestEngine.js, core/idl/xeIEntityManager.idl,
	  document-packs/xul-application/components/xul-application.js: Add
	  support for changing the value of a DTD entity, and updating the
	  XML documents that entity affects.

2007-06-01 21:45  ajvincent

	* verbosio/src/core/idl/xeITransaction.idl: Drop
	  getAffectedWrappers() method; we're not doing validation work in
	  0.1a1.

2007-05-28 14:32  ajvincent

	* verbosio/src/core/content/verbosio.js: Remove the transaction
	  control object from verbosio.js.

2007-05-28 08:59  ajvincent

	* verbosio/src/core/components/xeTestEngine.js: Remove dead
	  testcase, and check caught errors a little more carefully.

2007-05-28 08:58  ajvincent

	* verbosio/src/: core/content/template.css,
	  generic-viewers/preview-edit/content/preview-edit.js: Move some
	  styling of markup template UI's around - most notably
	  overflow:scroll should belong to the  element.

2007-05-28 08:56  ajvincent

	* verbosio/src/core/components/documentFile.js: Add some
	  assertions, and bail out if we try to load a jarred file.

2007-05-28 08:55  ajvincent

	* verbosio/src/core/components/DTDDocumentWrapper.js: Update
	  DTDDocumentWrapper.js file to reflect minor changes (transaction
	  managers belonging to the doc pack, base wrappers for each DTD
	  wrapper, etc.

2007-05-28 08:50  ajvincent

	* verbosio/src/core/idl/: xeIDocumentWrapper.idl,
	  xeIPrecondition.idl: Forward-declare interfaces instead of
	  importing them.  This helps to isolate IDL syntax errors to a
	  specific file.

2007-05-28 08:48  ajvincent

	* verbosio/src/: core/components/entityManager.js,
	  document-packs/xul-application/components/xul-application.js,
	  generic-viewers/source-edit/content/source-edit.js,
	  generic-viewers/source-edit/content/bindings/source-editor.xml,
	  markup-languages/xul/components/xul-document.js: Document packs
	  should own entity managers, not XML document wrappers.  Also,
	  lose the xeITransactionControl implementation.

2007-05-28 08:45  ajvincent

	* verbosio/src/core/idl/: xeIDocumentPack.idl,
	  xeIEntityManager.idl, xeIXMLDocumentWrapper.idl: Document packs
	  should own entity managers, not XML document wrappers.

2007-05-28 08:43  ajvincent

	* verbosio/src/core/idl/xeIDTDWrapper.idl: JavaDoc fixes for
	  xeIDTDWrapper.idl.

2007-05-28 08:41  ajvincent

	* verbosio/src/core/: components/xeTransactionControl.js,
	  idl/xeITransactionControl.idl: Remove xeITransactionControl.idl,
	  xeTransactionControl.js.  They were not scalable (imagine doing
	  an action, opening a new document, undoing the action).

2007-05-11 20:39  ajvincent

	* verbosio/src/core/content/template.css: CSS error fix from
	  previous checkin.

2007-05-11 20:31  ajvincent

	* verbosio/src/core/content/verbosio.js: Update verbosio.js
	  transaction handling to reflect API changes at shutdown.

2007-05-11 20:29  ajvincent

	* verbosio/src/core/content/: template.css, bindings/template.xml:
	  Add 'goalposts' user interface indicators for DTD entity editing.
	  Work in progress.

2007-05-08 20:58  ajvincent

	* verbosio/src/: core/components/xeTestEngine.js,
	  document-packs/xul-application/components/xul-application.js,
	  document-packs/xul-application/content/xul-application.js:
	  Implement application pack component for XUL-based extensions.

2007-05-08 20:49  ajvincent

	* verbosio/src/core/content/tools/packTypesRegistry.js: Add XXX
	  comment for pack types registry.  It should use the native
	  category manager, but currently doesn't.

2007-05-08 20:46  ajvincent

	* verbosio/src/: core/components/xeTransactionControl.js,
	  misc/uuid.txt: Mark uuid's reserved, and use a new one for
	  xeTransactionControl's TransactionListener.

2007-05-07 22:32  ajvincent

	* verbosio/src/: core/components/entityManager.js,
	  core/components/templateXTF.js, core/components/xeTestEngine.js,
	  core/idl/xeIEntityManager.idl,
	  core/content/bindings/template.xml, misc/uuid.txt: Convert entity
	  references for attributes into xeIEntity objects - lose the
	  wrappedJSObject hacks.

2007-05-07 22:11  ajvincent

	* verbosio/src/core/components/virtualProtocol.js: Silence lots of
	  virtual protocol, virtual channel QI warnings.

2007-05-02 23:16  ajvincent

	* verbosio/src/core/content/verbosio.js: Bustage fix for previous
	  checkin.

2007-05-02 23:11  ajvincent

	* verbosio/src/core/content/verbosio.js: Transaction handling
	  rewrite, phase 1:  Rewrite xeITransaction to list document
	  wrappers it affects, and add xeTransactionControl.js, which
	  requires transactions implement xeITransaction and only modify
	  documents under their control.

2007-05-02 23:07  ajvincent

	* verbosio/src/core/: components/xeTestEngine.js,
	  components/xeTransactionControl.js, idl/xeIDocumentWrapper.idl,
	  idl/xeITransaction.idl, idl/xeITransactionControl.idl:
	  Transaction handling rewrite, phase 1:  Rewrite xeITransaction to
	  list document wrappers it affects, and add
	  xeTransactionControl.js, which requires transactions implement
	  xeITransaction and only modify documents under their control.

2007-05-01 21:55  ajvincent

	* verbosio/src/core/components/xeTestEngine.js: Automated test
	  regression fix (believed to be 1.9a4 tweak) - typeof
	  entityData['XUL_NS'] == 'object'.

2007-04-28 19:58  ajvincent

	* verbosio/src/markup-languages/xul/content/templates.xml: Show
	  entities to the user for the menuitem template.

2007-04-28 19:57  ajvincent

	* verbosio/src/core/: components/templateXTF.js,
	  content/template.css, content/templateFrame.xul,
	  content/bindings/template.xml: Add support for showing DTD
	  entities to the user.  Implement a  binding
	  for this.

2007-04-28 19:53  ajvincent

	* verbosio/src/core/components/entityManager.js: Adjust stored
	  entity maps to include the value of the entity (for text
	  entities), and the document wrapper it came from.

2007-04-28 19:51  ajvincent

	* verbosio/src/core/: components/DTDDocumentWrapper.js,
	  idl/xeIDTDWrapper.idl: Add baseWrapper property to xeIDTDWrapper.

2007-04-28 19:48  ajvincent

	* verbosio/src/core/idl/xeIVirtualFileService.idl: Remove dump
	  method from xeIVirtualFileService.

2007-04-28 15:01  ajvincent

	* verbosio/src/core/components/: virtualProtocol.js,
	  xeTestEngine.js: Bug 16934, clean up and review virtual://
	  protocol handler.  Also add testcase for protocol handler.
	  r=biesi

2007-04-27 20:26  ajvincent

	* verbosio/src/core/application.ini.in: Move Verbosio requirement
	  for XULRunner to a minimum version of 1.9a5pre.
Posted by WeirdAl at June 10, 2007 7:22 AM