User:Callek/Prefwindow API Variants: Difference between revisions

Add Mnyromyr's
(Drop summary for "Callek"'s (my own) implementation, still TODO for the other one.)
 
(Add Mnyromyr's)
Line 54: Line 54:
=== Latest Patch ===
=== Latest Patch ===
* [https://bugzilla.mozilla.org/attachment.cgi?id=229434&action=view Attachment # 229434] of {{bug|342087}}
* [https://bugzilla.mozilla.org/attachment.cgi?id=229434&action=view Attachment # 229434] of {{bug|342087}}
== [[User:Mnyromyr|Mnyromyr]]'s Variant ==
=== Example Use ===
In Mnyromyr's implementation, he adds <code><preftree></code> and <code><preftreeitem></code> elements. Which serve the purpose of defining the structure of the tree.  The <code>preftreeitem</code>'s themselves ''point'' to the pane via the pane's id in a <code>prefpane</code> attribute. The <code><preftreeitem></code> element will look first on itself for a <code>label</code> attribute to use as the treeitem's label; if there is no <code>label</code> set on itself, it will look on the referenced <code><prefpane></code> element for a label.
In the absense of a <code><preftree></code> element all panes will be listed as top-level panes.  While if <code><preftree></code> is present, and <code><prefpane></code>'s not referenced by <code><preftreeitem></code>'s will effectively be innaccessible.
<pre>
<prefwindow>
  <preftree>
    <preftreeitem id="prefItemFoo" label="Foo" prefpane="Foo">
      <preftreeitem id="prefItemFooBaz" label="Baz" prefpane="FooBaz"/>
      <preftreeitem id="prefItemFooNoo" label="Baz" prefpane="FooNoo"/>
      <preftreeitem id="prefItemFooBoo" prefpane="FooBoo"/>
    </preftreeitem>
    <preftreeitem id="prefItemBar" label="Bar" prefpane="Bar"/>
    <preftreeitem id="prefItemGoo" prefpane="Goo">
      <preftreeitem id="prefItemGooGag" label="Gag" prefpane="GooGag"/>
    </preftreeitem>
  </preftree>
  <prefpane id="Foo" label="Foo" src="..."/>
  <prefpane id="Bar" label="Bar" src="..."/>
  <prefpane id="FooBaz" label="Baz" src="..."/>
  <prefpane id="FooNoo" label="Noo" src="..."/>
  <prefpane id="FooBoo" label="Boo" src="..."/>
  <prefpane id="Goo" label="Goo" src="..."/>
  <prefpane id="GooGag" label="Gag" src="..."/>
</prefwindow>
</pre>
=== Example UI Mockup ===
<pre>
===============================================
| Category:  |                                =
|------------|  Lorem ipsum dolor sit amet,  =
|[-] Foo    | consectetuer adipiscing elit.  =
|  |- Baz    | Vestibulum mi. Nulla tempor    =
|  |- Noo    | velit et enim. In fermentum.  =
|  \- Boo    | Etiam quis odio eget nisi      =
|  Bar      | egestas gravida. Donec nisi    =
|[+] Goo    | nisl, eleifend eu, pulvinar    =
|            | a, porttitor eu, elit. Morbi  =
|            | non velit quis magna eleifend  =
|            | posuere. Praesent.            =
|            |                                =
===============================================
</pre>
=== Pro's and Con's ===
* Inaccessible <code><prefpane></code>'s if not referenced by a <code><preftreeitem></code>
* Adds two more elements to <code>xul</code>, which are only used in SeaMonkey.
* Complexity of creating a tree.
* Actual tree hierarchy is structurally a tree.
* Internal Implementation uses a Tree Walker.
=== Latest Patch ===
* [https://bugzilla.mozilla.org/attachment.cgi?id=230663&action=view Attachment # 230663] of {{bug|342087}}
Account confirmers, Anti-spam team, Confirmed users, Bureaucrats and Sysops emeriti
1,529

edits