File:  [mozdev] / xulmaker / www / roadmap.html
Revision 1.5: download - view: text, annotated - select for diffs - revision graph
Mon May 17 15:42:50 2004 UTC (15 years, 9 months ago) by franklin
Branches: MAIN
CVS tags: HEAD
correction to email address

<!-- content -->
<h2 class="page-header">Roadmap</h2>

<p>The following is the general roadmap of upcoming releases (See ToDo for how this relates
to identified enhancements.)</p>
     	    
<dl>
     <dt>v0.50</dt>
     <dd>Current (beta) release</dd>
     <dd>Fix more of the known bugs</dd>
	 <dd>Editable Text View</dd>
     <dd>use of XML Schema as XUL Specification to fully define all XUL elements and attributes</dd>
     <dd>View Preferences</dd>
     <dd>Move Elements</dd>
	 <dd>Clipboard (cut, copy, and paste)</dd>
     <dd>Whitespace</dd>
     <dt>v0.60</dt>
     <dd>Floating/Container Views</dd>
	 <dd>populate menulists from XBL which is built from XUL Schema</dd>
     <dd>Context Popup Window for Properties</dd>
     <dd>Tooltips and/or Statusbar Display of Element</dd>
     <dd>Move Elements (Drag and Drop)</dd>
     <dd>Add Elements (Drag and Drop from palette)</dd>
     <dd>Replace ID usage with XPath</dd>
	 <dd>Insert (assign) CSS Stylesheet, Overlays, JavaScript file</dd>
	 <dd>Build non-window XUL files - overlay, wizard, dialog</dd>
     <dd>Events</dd>
     <dt>v0.70</dt>
     <dd>Element Explorer becomes DOM Inspector</dd>
     <dt>v0.80</dt>
     <dd>focus on developer efficiency</dd>
     <dd>Generating UI Parts from Templates</dd>
     <dd>Design menus</dd>
     <dd>Design broadcasters and observers</dd>
     <dd>Design tree elements</dd>
     <dd>Sizing and Flexing</dd>
     <dt>v0.90</dt>
     <dd>Print capability</dd>
     <dt>v1.0</dt>
     <dd>production release</dd>
     <dt>v1.10</dt>
     <dd>remote application launch</dd>
     <dt>v1.20</dt>
     <dd>editable source code view, colour coded (integration of <code>view-source:</code> and <code>&lt;editor&gt;</code></dd>
     <dd>simultaneous views - design view, source code view</dd>
     <dt>v1.30</dt>
     <dd>Designers (integration of Cascades, ScriptEditor, mozcvs, xpimaker)</dd>
     <dd>Define Dynamic Content with XBL</dd>
     <dd>XSLT Transformation of XUL to HTML</dd>
     <dd>Spoof IE</dd>
</dl>
     	 	    
<a name="todo"/>
<h2 class="page-header">ToDo (Enhancements)</h2>

<a name="todo-viewpreferences"/>
<h3>View Preferences</h3>

<p>The make-up of the various toolbars should be customizeable. The Palette Toolbar,
in particular, is impractically large if it includes all XUL elements. The user should
be able to select a set that is particular to his/her use.</p>
<p>This could be implemented as a dialog window which is launched from the
<code>Options</code> menu and/or from the <code>View | Toolbars</code> menuitem.</p>
<pre>
+-------------------------------+
| View Preferences              |
+-------------------------------+
|                               |
| +----------+      +---------+ |
| |          |      |         | |
| |          |  |<| |         | |
| |          |      |         | |
| |          |      |         | |
| |          |  |>| |         | |
| |          |      |         | |
| |          |      |         | |
| +----------+      +---------+ |
|                               |
+-------------------------------+
</pre>

<a name="todo-xpath"/>
<h3>Replace ID usage with XPath</h3>

<p>At the moment XULMaker insists that every, and I mean every element must have an ID. 
This is because the tree code as well as other parts of the program use IDs to keep track
of what's going on, and while there is nothing intrinsically wrong with this
(XULMaker generates unique IDs for you) it isn't great for readability or just general elegance.
The proposal is to move the internal code over to using XPaths instead of IDs.
(This depends on the working of XPath - part of Mozilla's XML Extras project, as does XML Schema.)</p>
 
<a name="todo-move"/>
<h3>Move Elements (including Drag and Drop)</h3>

<p>Using Drag and Drop, one should be able to move elements around -
within the design document, in the Element Explorer (tree) and from the
Palette Toolbar.</p>

<a name="todo-events"/>
<h3>Events</h3>

<p>We need to separate events that are part of the deliverable XUL (design) document
and what are events that are put into the design document for the purpose of operating
XULMaker. As a minimum the xm: events need to be stripped off for serialization and
saving and put back on when loading and parsing. A simple strategy would be to use
right-click events for XULMaker operations.<p>

<p>(Michael Hearn started with this in version 0.20, which exists in the CVS repository,
but was never completed as a release.</p>

<a name="todo-whitespace"/>
<h3>Whitespace</h3>

<p>Whitespace is not properly generated in the XUL document and reflected in the
serialized XUL document. Whitespace should be preserved going round-robin between
these two representations of the XUL document. (This may in part be a Mozilla issue.)
We should be able to set/unset a "pretty-print" flag to control the whitespace generation.</p>

<p>See <a href="http://www.mozilla.org/docs/dom/technote/whitespace/">http://www.mozilla.org/docs/dom/technote/whitespace/</a>
for comments on whitespace in XUL. Also look at "prettifier.js" (as referenced in version 0.20 of XULMaker)
which defines DOMPrettifier. It supposedly used by the XMLSerializer.</p>

<a name="todo-views"/>
<h3>Floating/Container Views</h3>

<p>The application views - Element Explorer, Attribute Explorer, Document View and
Support View should be consistently defined as "floating views" a la
the javascript debugger - venkman, which allows for views to be moved around within
the application view and even made floating.</p>
<p>Views should be stand-alone. They should have a titlebar and perhaps their own
controller UI - menubars and toolbars.</p>
<p>venkman uses <code>&lt;floatingview&gt;</code> and <code>&lt;viewcontainer&gt;</code>
tags within the XUL definitions and some javascript files. See the <code>venkman.jar</code>
file and its containing <code>venkman.xul</code>, <code>venkman-views.xul</code> and
<code>venkman-views.js</code> files.</p>

<a name="todo-context"/>
<h3>Context Popup Window for Properties - Attributes Inspector</h3>

<p>A right-click on the "active" element should result in the popup of the Attributes Inspector view
(as a floating view). The context version of the Attributes Inspector should probably be labelled
for the particular element and not change content as a different "active" element is selected.</p>

<a name="todo-tooltips"/>
<h3>Tooltips and/or Statusbar Display of Element</h3>

<p>The XML text of an element and it's attributes could be displayed in a tooltip and/or in the statusbar
when hovering over an element in the design view</p>
<p>Example:<br/>
<div style="width: 200px; border: solid 1px; background-color: yellow"><code>&lt;label value="hello"/&gt;</code></div>

<a name="todo-dominspector"/>
<h3>Element Explorer becomes DOM Inspector</h3>

<p>We would like all the functionality of the DOM Inspector for the Element
Explorer. This could possibly be accomplished by replacing the Element Explorer
view with some of the major components of the DOM Inspector. (These components
would be referenced as <code>chrome:</code> files rather than be packaged as
part of XULMaker. Hopefully the DOM Inspector offers us a generic enough interface.)

<a name="todo-templates"/>
<h3>Generating UI Parts from Templates</h3>

<p>We can provide various samples for a XUL user to leverage from, but we should be able to do better.
We should be able to define and use templates for entire application documents and document fragments.
In particular, we should be able to provide assistance in building hierarchical trees, lists, grids,
tabpanels (tabbox), menus, toolbars and some more sophisticated UI such as views a la venkman.</p>
<p>Some of these UI parts could possibly be generated from parameters collected in a dialog.</p>

<a name="todo-sizing"/>
<h3>Sizing and Flexing</h3>

<p>The user should be able to select a "Sizing and Flexing" pattern to be applied to subsequent
construction/element generation. When changing this only elements that are subsequently constructed
are to be affected. Flexing policy should chose between "packed" (the usual default) and "expanded to fill the page".
We should be able to "size" a box using drag gestures - which results in giving an element width
and height attributes. We should also be able to remove them very simply, i.e. with the minimum
keystroke and mouse action.</p>

<a name="todo-print"/>
<h3>Print</h3>

<p>Add some print capability. Be able to print the following:</p>
<ul>
	<li>XUL Document DOM tree (Element Explorer)</li>
	<li>XUL Document design view</li>
	<li>XUL Document browser view</li>
	<li>XUL Document code view</li>
</ul>

<a name="todo-remote"/>
<h3>Remote Application</h3>

<p>XULMaker should be able to run as a remote application.</p>
<p>In particular, this means setting some security to access the chrome,
e.g. components, preferences, etc. This involves the use of security
certificates.</p>
<p><code>chrome:</code> protocol would be replaced by <code>file:</code>
and <code>http:</code> protocol in some places. We should also be able to
deal with URL's instead of local files for data, i.e. add a
<code>File | Open resource by URL</code> menuitem.</p>

<a name="todo-designers"/>
<h3>Designers (Integration)</h3>

<p>To evolve XULMaker into a full blown XUL IDE we need to add or integrate various
other designers. The following designers are suggested:</p>
<ul>
	<li>CSS Designer (integrate "Cascades")</li>
	<li>Theme Designer (integrate "Chameleon")</li>
	<li>JavaScript Designer (integrate "ScriptEditor")</li>
</ul>
<p>Versioning using CVS could also be added by integrating "mozcvs".</p>

<a name="todo-savewith"/>
<h3>Save with...</h3>

<p>The saved file may be more than just a straight forward XUL file identified as an XML file.
It could include link references as follows: </p>
<ul>
	<li>CSS stylesheet</li>
	<li>XSLT stylesheet</li>
</ul>
<p>In order for these link references to be included in the saved XML/XUL file the user may select
the <code>Save with...</code> menuitem to give the required information (or this may be given in some
user preference definition).</p>

<a name="todo-xbl"/>
<h3>Define Dynamic Content with XBL</h3>

<p>Create a designer for defining dynamic content with XBL</p>

<a name="todo-saveas"/>
<h3>XULMaker Project File</h3>

<p>We might add a <code>Project</code> menu where we could open/save a project file (<code>*.xmk</code>)
which would be a zipped bundle of various XULMaker files which make up a project. The project bundle
(zipped file) would contain anyone or all of the following: </p>

<ul>
	<li>XUL document (serialized text) (<code>*.xul</code>)</li>
	<li>XUL Overlay document (serialized text) (<code>*.xul</code>)</li>
	<li>XBL document (serialized text) (<code>*.xbl</code>)</li>
	<li>CSS stylesheet(s) (<code>*.css</code>)</li>
	<li>XSLT stylesheet(s) (<code>*.xslt</code>)</li>
	<li>script file(s) (<code>*.js</code>)</li>
	<li>XULMaker settings file (<code>*.xms</code>)</li>
</ul>

<a name="todo-xslt"/>
<h3>XSLT Transformation of XUL to HTML</h3>

<p>Develop an XSLT transformation stylesheet that transforms XUL to HTML. XUL files
could then be delivered as XML files with a <code>xul2html.xslt</code> stylesheet reference
and a reference to the applicable JavaScript.
These could then be viewed in non-mozilla browsers such as Internet Explorer and even
old Netscape browsers.</p>
<p>I have developed just such a <code>xul2html.xslt</code> stylesheet and corresponding
JavaScript. It is but an initial effort, but works for basic elements and tabpanels.
(I developed it particularly to support tabpanels.) If you are ready to continue this
effort contact me (Franklin de Graaf - <a href="mailto://franklin@xpower.com">franklin@xpower.com</a>).</p>

<a name="todo-spoof"/>
<h3>Spoof IE</h3>

<p>Be able to see how a XUL file looks in IE and in other non-mozilla browsers. (See XUL Planet's "Preferences Tool".)</p>



FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>