Author: tim
Date: Wed Nov 10 10:01:13 2004
New Revision: 57341
Modified:
cocoon/trunk/src/blocks/forms/samples/swan/forms/model_binding.xml
cocoon/trunk/src/blocks/forms/samples/swan/forms/model_model.xml
cocoon/trunk/src/blocks/forms/samples/swan/forms/model_template.xml
cocoon/trunk/src/blocks/forms/samples/swan/forms/sitemap_model.xml
Log:
Swan: update form model editor to use widget states, fix view->edit
state-change bug in sitemap editor.
Modified: cocoon/trunk/src/blocks/forms/samples/swan/forms/model_binding.xml
==============================================================================
--- cocoon/trunk/src/blocks/forms/samples/swan/forms/model_binding.xml
(original)
+++ cocoon/trunk/src/blocks/forms/samples/swan/forms/model_binding.xml Wed Nov
10 10:01:13 2004
@@ -34,8 +34,10 @@
<fb:insert-node><fd:action/>
</fb:insert-node>
<fb:struct id="action" path="fd:action">
- <fb:value id="id" path="@id"/>
- <fb:new id="label-class"/>
+ <fb:struct id="stuff" path=".">
+ <fb:value id="id" path="@id"/>
+ <fb:new id="label-class"/>
+ </fb:struct>
</fb:struct>
</fb:case>
</fb:class>
@@ -45,11 +47,14 @@
<fb:insert-node><fd:aggregatefield/>
</fb:insert-node>
<fb:struct id="aggregatefield" path="fd:aggregatefield">
- <fb:value id="id" path="@id"/>
- <fb:new id="label-class"/>
- <fb:insert-node>
+ <fb:struct id="stuff" path=".">
+ <fb:value id="id" path="@id"/>
+ <fb:new id="label-class"/>
+ <!-- TODO: required -->
+ <fb:insert-node>
<fd:widgets/>
</fb:insert-node>
+ </fb:struct>
<fb:new id="items-class"/>
</fb:struct>
</fb:case>
@@ -60,8 +65,10 @@
<fb:insert-node><fd:booleanfield/>
</fb:insert-node>
<fb:struct id="booleanfield" path="fd:booleanfield">
- <fb:value id="id" path="@id"/>
- <fb:new id="label-class"/>
+ <fb:struct id="stuff" path=".">
+ <fb:value id="id" path="@id"/>
+ <fb:new id="label-class"/>
+ </fb:struct>
</fb:struct>
</fb:case>
</fb:class>
@@ -71,10 +78,12 @@
<fb:insert-node><fd:class/>
</fb:insert-node>
<fb:struct id="class" path="fd:class" direction="load">
- <fb:value id="id" path="@id"/>
- <fb:insert-node>
+ <fb:struct id="stuff" path=".">
+ <fb:value id="id" path="@id"/>
+ <fb:insert-node>
<fd:widgets/>
</fb:insert-node>
+ </fb:struct>
<fb:new id="items-class"/>
</fb:struct>
</fb:case>
@@ -85,11 +94,13 @@
<fb:insert-node><fd:field/>
</fb:insert-node>
<fb:struct id="field" path="fd:field">
- <fb:value id="id" path="@id"/>
- <fb:new id="label-class"/>
- <fb:value id="required" path="@required">
- <fd:convertor datatype="boolean"/>
- </fb:value>
+ <fb:struct id="stuff" path=".">
+ <fb:value id="id" path="@id"/>
+ <fb:new id="label-class"/>
+ <fb:value id="required" path="@required">
+ <fd:convertor datatype="boolean"/>
+ </fb:value>
+ </fb:struct>
</fb:struct>
</fb:case>
</fb:class>
@@ -99,7 +110,9 @@
<fb:insert-node><fd:new/>
</fb:insert-node>
<fb:struct id="new" path="fd:new">
- <fb:value id="id" path="@id"/>
+ <fb:struct id="stuff" path=".">
+ <fb:value id="id" path="@id"/>
+ </fb:struct>
</fb:struct>
</fb:case>
</fb:class>
@@ -109,8 +122,10 @@
<fb:insert-node><fd:output/>
</fb:insert-node>
<fb:struct id="output" path="fd:output">
- <fb:value id="id" path="@id"/>
- <fb:new id="label-class"/>
+ <fb:struct id="stuff" path=".">
+ <fb:value id="id" path="@id"/>
+ <fb:new id="label-class"/>
+ </fb:struct>
</fb:struct>
</fb:case>
</fb:class>
@@ -120,14 +135,16 @@
<fb:insert-node><fd:repeater/>
</fb:insert-node>
<fb:struct id="repeater" path="fd:repeater">
- <fb:value id="id" path="@id"/>
- <fb:new id="label-class"/>
- <fb:value id="initial-size" path="@initial-size">
- <fd:convertor datatype="long"/>
- </fb:value>
- <fb:insert-node>
+ <fb:struct id="stuff" path=".">
+ <fb:value id="id" path="@id"/>
+ <fb:new id="label-class"/>
+ <fb:value id="initial-size" path="@initial-size">
+ <fd:convertor datatype="long"/>
+ </fb:value>
+ <fb:insert-node>
<fd:widgets/>
</fb:insert-node>
+ </fb:struct>
<fb:new id="items-class"/>
</fb:struct>
</fb:case>
@@ -138,8 +155,10 @@
<fb:insert-node><fd:row-action/>
</fb:insert-node>
<fb:struct id="row-action" path="fd:row-action">
- <fb:value id="id" path="@id"/>
- <fb:new id="label-class"/>
+ <fb:struct id="stuff" path=".">
+ <fb:value id="id" path="@id"/>
+ <fb:new id="label-class"/>
+ </fb:struct>
</fb:struct>
</fb:case>
</fb:class>
@@ -149,11 +168,13 @@
<fb:insert-node><fd:struct/>
</fb:insert-node>
<fb:struct id="struct" path="fd:struct">
- <fb:value id="id" path="@id"/>
- <fb:new id="label-class"/>
- <fb:insert-node>
+ <fb:struct id="stuff" path=".">
+ <fb:value id="id" path="@id"/>
+ <fb:new id="label-class"/>
+ <fb:insert-node>
<fd:widgets/>
</fb:insert-node>
+ </fb:struct>
<fb:new id="items-class"/>
</fb:struct>
</fb:case>
@@ -164,8 +185,10 @@
<fb:insert-node><fd:submit/>
</fb:insert-node>
<fb:struct id="submit" path="fd:submit">
- <fb:value id="id" path="@id"/>
- <fb:new id="label-class"/>
+ <fb:struct id="stuff" path=".">
+ <fb:value id="id" path="@id"/>
+ <fb:new id="label-class"/>
+ </fb:struct>
</fb:struct>
</fb:case>
</fb:class>
@@ -175,11 +198,13 @@
<fb:insert-node><fd:union/>
</fb:insert-node>
<fb:struct id="union" path="fd:union">
- <fb:value id="id" path="@id"/>
- <fb:new id="label-class"/>
- <fb:insert-node>
+ <fb:struct id="stuff" path=".">
+ <fb:value id="id" path="@id"/>
+ <fb:new id="label-class"/>
+ <fb:insert-node>
<fd:widgets/>
</fb:insert-node>
+ </fb:struct>
<fb:new id="items-class"/>
</fb:struct>
</fb:case>
@@ -188,7 +213,9 @@
<fb:class id="view-selector-class">
<fb:javascript id="view-selector" path="." direction="load">
<fb:load-form>
- widget.setValue("edit");
+ widget.setValue("view");
+ // View is selected by buttons.
+
widget.setState(Packages.org.apache.cocoon.forms.formmodel.WidgetState.DISABLED);
</fb:load-form>
</fb:javascript>
</fb:class>
@@ -203,14 +230,9 @@
</fb:class>
<fb:class id="item-row-class">
- <fb:new id="view-selector-class"/>
<fb:javascript id="type-selector" path="." direction="load">
<fb:load-form>
widget.setValue(jxpathPointer.getNode().getFirstChild().getLocalName());
- if(!"edit".equals(widget.lookupWidget("../view-selector").getValue()))
{
-
widget.setState(Packages.org.apache.cocoon.forms.formmodel.WidgetState.DISABLED);
-
widget.lookupWidget("../union").setState(Packages.org.apache.cocoon.forms.formmodel.WidgetState.DISABLED);
- }
</fb:load-form>
</fb:javascript>
<fb:union id="union" path=".">
@@ -227,6 +249,12 @@
<fb:new id="submit-class"/>
<fb:new id="union-class"/>
</fb:union>
+ <!--
+ The view-selector binding must happen last,
+ so that all the widgets will exist that the
+ view-selector's on-value-changed handler needs.
+ -->
+ <fb:new id="view-selector-class"/>
</fb:class>
<fb:class id="label-class">
Modified: cocoon/trunk/src/blocks/forms/samples/swan/forms/model_model.xml
==============================================================================
--- cocoon/trunk/src/blocks/forms/samples/swan/forms/model_model.xml
(original)
+++ cocoon/trunk/src/blocks/forms/samples/swan/forms/model_model.xml Wed Nov
10 10:01:13 2004
@@ -23,36 +23,34 @@
CVS $Id$
-->
- <!--
- TODO:
- Add features to "items-class" (e.g. move-up, move-down, add-before,
add-after).
- -->
+ <fd:messages id="messages"/>
<fd:new id="items-class"/>
<fd:class id="items-class">
<fd:widgets>
- <fd:repeater id="items" initial-size="1">
+ <fd:repeater id="items" initial-size="0">
<fd:label>Items</fd:label>
<fd:widgets>
<fd:new id="item-row-class"/>
</fd:widgets>
</fd:repeater>
<fd:repeater-action id="addItem" action-command="add-row"
repeater="items">
- <fd:label>New</fd:label>
- </fd:repeater-action>
- <fd:repeater-action id="removeItems" action-command="delete-rows"
repeater="items" select="select">
- <fd:label>Delete</fd:label>
+ <fd:label>Add Child</fd:label>
+ <fd:hint>Add child</fd:hint>
+ <fd:on-action>
+ <javascript>
+ var repeater = event.getSourceWidget().lookupWidget("../items");
+ var view = repeater.getRow(repeater.getSize() -
1).getChild("view-selector");
+ view.setValue("edit");
+ // View is selected by buttons.
+
view.setState(Packages.org.apache.cocoon.forms.formmodel.WidgetState.DISABLED);
+ </javascript>
+ </fd:on-action>
</fd:repeater-action>
</fd:widgets>
</fd:class>
- <fd:class id="select-class">
- <fd:widgets>
- <fd:booleanfield
id="select"><fd:label>Select</fd:label></fd:booleanfield>
- </fd:widgets>
- </fd:class>
-
<fd:class id="view-selector-class">
<fd:widgets>
<fd:field id="view-selector">
@@ -66,14 +64,21 @@
<fd:on-value-changed>
<javascript>
var widget = event.getSourceWidget();
- //var parent = widget.getParent();
- //var union = parent.getChild("union");
- //var type = parent.getChild("type-selector");
var union = widget.lookupWidget("../union");
var type = widget.lookupWidget("../type-selector");
- if(widget.getValue().equals("edit")) {
+ var stuff = union.lookupWidget(union.getValue() + "/stuff");
+ if("edit".equals(widget.getValue())) {
union.setState(Packages.org.apache.cocoon.forms.formmodel.WidgetState.ACTIVE);
+ if(stuff != null) {
+
stuff.setState(Packages.org.apache.cocoon.forms.formmodel.WidgetState.ACTIVE);
+ }
type.setState(Packages.org.apache.cocoon.forms.formmodel.WidgetState.ACTIVE);
+ } else if("view".equals(widget.getValue())){
+
union.setState(Packages.org.apache.cocoon.forms.formmodel.WidgetState.ACTIVE);
+ if(stuff != null) {
+
stuff.setState(Packages.org.apache.cocoon.forms.formmodel.WidgetState.DISABLED);
+ }
+
type.setState(Packages.org.apache.cocoon.forms.formmodel.WidgetState.DISABLED);
} else {
union.setState(Packages.org.apache.cocoon.forms.formmodel.WidgetState.DISABLED);
type.setState(Packages.org.apache.cocoon.forms.formmodel.WidgetState.DISABLED);
@@ -81,13 +86,43 @@
</javascript>
</fd:on-value-changed>
</fd:field>
+ <fd:action id="fold-view" action-command="fold-view">
+ <fd:label>F</fd:label>
+ <fd:hint>Fold</fd:hint>
+ <fd:on-action>
+ <javascript>
+ var view =
event.getSourceWidget().lookupWidget("../view-selector");
+ view.value="fold";
+ </javascript>
+ </fd:on-action>
+ </fd:action>
+ <fd:action id="view-view" action-command="view-view">
+ <fd:label>V</fd:label>
+ <fd:hint>View</fd:hint>
+ <fd:on-action>
+ <javascript>
+ var view =
event.getSourceWidget().lookupWidget("../view-selector");
+ view.value="view";
+ </javascript>
+ </fd:on-action>
+ </fd:action>
+ <fd:action id="edit-view" action-command="edit-view">
+ <fd:label>E</fd:label>
+ <fd:hint>Edit</fd:hint>
+ <fd:on-action>
+ <javascript>
+ var view =
event.getSourceWidget().lookupWidget("../view-selector");
+ view.value="edit";
+ </javascript>
+ </fd:on-action>
+ </fd:action>
</fd:widgets>
</fd:class>
<fd:class id="type-selector-class">
<fd:widgets>
<fd:field id="type-selector">
- <fd:label>Widget Type</fd:label>
+ <fd:label>Type</fd:label>
<fd:datatype base="string"/>
<fd:selection-list>
<fd:item value=""><fd:label>Nothing</fd:label></fd:item>
@@ -110,28 +145,68 @@
<fd:class id="item-row-class">
<fd:widgets>
- <fd:new id="select-class"/>
+
+ <fd:row-action id="up" action-command="move-up">
+ <fd:label>^</fd:label>
+ <fd:hint>Move up</fd:hint>
+ </fd:row-action>
+
+ <fd:row-action id="down" action-command="move-down">
+ <fd:label>v</fd:label>
+ <fd:hint>Move down</fd:hint>
+ </fd:row-action>
+
+ <fd:row-action id="add" action-command="add-after">
+ <fd:label>+</fd:label>
+ <fd:hint>Add after</fd:hint>
+ <fd:on-action>
+ <javascript>
+ var cur_row =
Packages.org.apache.cocoon.forms.formmodel.Repeater.getParentRow(event.getSourceWidget());
+ var repeater = cur_row.getParent();
+ var new_row = repeater.getChild(repeater.indexOf(cur_row)+1);
+ var view = new_row.getChild("view-selector");
+ view.setValue("edit");
+ // View is selected by buttons.
+
view.setState(Packages.org.apache.cocoon.forms.formmodel.WidgetState.DISABLED);
+ </javascript>
+ </fd:on-action>
+ </fd:row-action>
+
+ <fd:row-action id="delete" action-command="delete">
+ <fd:label>X</fd:label>
+ <fd:hint>Delete</fd:hint>
+ </fd:row-action>
+
<fd:new id="view-selector-class"/>
+
<fd:new id="type-selector-class"/>
+
<fd:union id="union" default="" case="type-selector">
- <fd:datatype base="string"/>
<fd:label>Type</fd:label>
<fd:widgets>
<fd:struct id="action">
<fd:label>Action</fd:label>
<fd:widgets>
- <fd:new id="id-class"/>
- <fd:new id="label-class"/>
+ <fd:struct id="stuff">
+ <fd:widgets>
+ <fd:new id="id-class"/>
+ <fd:new id="label-class"/>
+ </fd:widgets>
+ </fd:struct>
</fd:widgets>
</fd:struct>
<fd:struct id="aggregatefield">
<fd:label>AggregateField</fd:label>
<fd:widgets>
- <fd:new id="id-class"/>
- <fd:new id="label-class"/>
- <fd:new id="required-class"/>
+ <fd:struct id="stuff">
+ <fd:widgets>
+ <fd:new id="id-class"/>
+ <fd:new id="label-class"/>
+ <fd:new id="required-class"/>
+ </fd:widgets>
+ </fd:struct>
<fd:new id="items-class"/>
</fd:widgets>
</fd:struct>
@@ -139,15 +214,23 @@
<fd:struct id="booleanfield">
<fd:label>BooleanField</fd:label>
<fd:widgets>
- <fd:new id="id-class"/>
- <fd:new id="label-class"/>
+ <fd:struct id="stuff">
+ <fd:widgets>
+ <fd:new id="id-class"/>
+ <fd:new id="label-class"/>
+ </fd:widgets>
+ </fd:struct>
</fd:widgets>
</fd:struct>
<fd:struct id="class">
<fd:label>Class</fd:label>
<fd:widgets>
- <fd:new id="id-class"/>
+ <fd:struct id="stuff">
+ <fd:widgets>
+ <fd:new id="id-class"/>
+ </fd:widgets>
+ </fd:struct>
<fd:new id="items-class"/>
</fd:widgets>
</fd:struct>
@@ -155,50 +238,74 @@
<fd:struct id="field">
<fd:label>Field</fd:label>
<fd:widgets>
- <fd:new id="id-class"/>
- <fd:new id="label-class"/>
- <fd:new id="required-class"/>
+ <fd:struct id="stuff">
+ <fd:widgets>
+ <fd:new id="id-class"/>
+ <fd:new id="label-class"/>
+ <fd:new id="required-class"/>
+ </fd:widgets>
+ </fd:struct>
</fd:widgets>
</fd:struct>
<fd:struct id="new">
<fd:label>New</fd:label>
<fd:widgets>
- <fd:new id="id-class"/>
+ <fd:struct id="stuff">
+ <fd:widgets>
+ <fd:new id="id-class"/>
+ </fd:widgets>
+ </fd:struct>
</fd:widgets>
</fd:struct>
<fd:struct id="output">
<fd:label>Output</fd:label>
<fd:widgets>
- <fd:new id="id-class"/>
- <fd:new id="label-class"/>
+ <fd:struct id="stuff">
+ <fd:widgets>
+ <fd:new id="id-class"/>
+ <fd:new id="label-class"/>
+ </fd:widgets>
+ </fd:struct>
</fd:widgets>
</fd:struct>
<fd:struct id="repeater">
<fd:label>Repeater</fd:label>
<fd:widgets>
- <fd:new id="id-class"/>
- <fd:new id="label-class"/>
- <fd:new id="initial-size-class"/>
+ <fd:struct id="stuff">
+ <fd:widgets>
+ <fd:new id="id-class"/>
+ <fd:new id="label-class"/>
+ <fd:new id="initial-size-class"/>
+ </fd:widgets>
+ </fd:struct>
<fd:new id="items-class"/>
</fd:widgets>
</fd:struct>
<fd:struct id="row-action">
- <fd:label>RowAction</fd:label>
+ <fd:label>RowAction</fd:label>
<fd:widgets>
- <fd:new id="id-class"/>
- <fd:new id="label-class"/>
+ <fd:struct id="stuff">
+ <fd:widgets>
+ <fd:new id="id-class"/>
+ <fd:new id="label-class"/>
+ </fd:widgets>
+ </fd:struct>
</fd:widgets>
</fd:struct>
<fd:struct id="struct">
<fd:label>Struct</fd:label>
<fd:widgets>
- <fd:new id="id-class"/>
- <fd:new id="label-class"/>
+ <fd:struct id="stuff">
+ <fd:widgets>
+ <fd:new id="id-class"/>
+ <fd:new id="label-class"/>
+ </fd:widgets>
+ </fd:struct>
<fd:new id="items-class"/>
</fd:widgets>
</fd:struct>
@@ -206,16 +313,24 @@
<fd:struct id="submit">
<fd:label>Submit</fd:label>
<fd:widgets>
- <fd:new id="id-class"/>
- <fd:new id="label-class"/>
+ <fd:struct id="stuff">
+ <fd:widgets>
+ <fd:new id="id-class"/>
+ <fd:new id="label-class"/>
+ </fd:widgets>
+ </fd:struct>
</fd:widgets>
</fd:struct>
<fd:struct id="union">
<fd:label>Union</fd:label>
<fd:widgets>
- <fd:new id="id-class"/>
- <fd:new id="label-class"/>
+ <fd:struct id="stuff">
+ <fd:widgets>
+ <fd:new id="id-class"/>
+ <fd:new id="label-class"/>
+ </fd:widgets>
+ </fd:struct>
<fd:new id="items-class"/>
</fd:widgets>
</fd:struct>
Modified: cocoon/trunk/src/blocks/forms/samples/swan/forms/model_template.xml
==============================================================================
--- cocoon/trunk/src/blocks/forms/samples/swan/forms/model_template.xml
(original)
+++ cocoon/trunk/src/blocks/forms/samples/swan/forms/model_template.xml Wed Nov
10 10:01:13 2004
@@ -18,20 +18,50 @@
xmlns:ft="http://apache.org/cocoon/forms/1.0#template"
xmlns:fi="http://apache.org/cocoon/forms/1.0#instance">
- <!--
- CVS $Id: form_model_gui_template.xml,v 1.2 2004/04/12 14:05:09 tim Exp $
- -->
-
- <!--
- TODO: Add features to "items-class" (e.g. move-up, move-down, add-before,
add-after).
- -->
+ <!--
+ CVS $Id$
+ -->
+
+ <style type="text/css">
+ li {
+ list-style-type: none
+ }
+
+ /* The actions buttons, placed on the right */
+ .actions {
+ float: right;
+ padding-top: 0.2em;
+ }
+
+ /* A "section" contains stuff, related actions and substuff */
+ div.section {
+ padding-top: 0.4em;
+ padding-bottom: 0.4em;
+ padding-left: 0.4em;
+ border: 1px dotted black;
+ mmargin-top: 0.4em;
+ margin-bottom: -1px;
+ }
+
+ /* Indent sub-sections (recursively) */
+ div.section div.section {
+ margin-left: 3em;
+ border-right: none;
+ }
+
+ /* Change bg color depending on nesting depth */
+ div.section div.section { background-color: #F0F0F0; }
+ div.section div.section div.section { background-color: #E0E0E0; }
+ div.section div.section div.section div.section { background-color:
#D0D0D0; }
+ div.section div.section div.section div.section div.section {
background-color: #C0C0C0; }
+ </style>
<title>Form Model Editor</title>
<content>
<ft:form-template action="#{$continuation/id}.continue" method="POST">
- <ft:class id="output-id-class">
+ <ft:class id="out-id-class">
<b><ft:widget-label id="id"/>:</b>
<ft:widget id="id">
<fi:styling type="output"/>
@@ -69,13 +99,19 @@
<ft:class id="std-id-class">
<ft:choose path="../../view-selector">
<ft:when value="fold">
- <ft:new id="output-id-class"/>
+ <ft:struct id="stuff">
+ <ft:new id="out-id-class"/>
+ </ft:struct>
</ft:when>
<ft:when value="view">
- <ft:new id="output-id-class"/>
+ <ft:struct id="stuff">
+ <ft:new id="out-id-class"/>
+ </ft:struct>
</ft:when>
<ft:when value="edit">
- <ft:new id="id-class"/>
+ <ft:struct id="stuff">
+ <ft:new id="id-class"/>
+ </ft:struct>
</ft:when>
</ft:choose>
</ft:class>
@@ -83,14 +119,20 @@
<ft:class id="std-id-items-class">
<ft:choose path="../../view-selector">
<ft:when value="fold">
- <ft:new id="output-id-class"/>
+ <ft:struct id="stuff">
+ <ft:new id="out-id-class"/>
+ </ft:struct>
</ft:when>
<ft:when value="view">
- <ft:new id="output-id-class"/>
+ <ft:struct id="stuff">
+ <ft:new id="out-id-class"/>
+ </ft:struct>
<ft:new id="items-class"/>
</ft:when>
<ft:when value="edit">
- <ft:new id="id-class"/>
+ <ft:struct id="stuff">
+ <ft:new id="id-class"/>
+ </ft:struct>
<ft:new id="items-class"/>
</ft:when>
</ft:choose>
@@ -99,15 +141,21 @@
<ft:class id="std-id-label-class">
<ft:choose path="../../view-selector">
<ft:when value="fold">
- <ft:new id="output-id-class"/>
+ <ft:struct id="stuff">
+ <ft:new id="out-id-class"/>
+ </ft:struct>
</ft:when>
<ft:when value="view">
- <ft:new id="output-id-class"/>
- <ft:new id="output-label-class"/>
+ <ft:struct id="stuff">
+ <ft:new id="out-id-class"/>
+ <ft:new id="output-label-class"/>
+ </ft:struct>
</ft:when>
<ft:when value="edit">
- <ft:new id="id-class"/>
- <ft:new id="label-class"/>
+ <ft:struct id="stuff">
+ <ft:new id="id-class"/>
+ <ft:new id="label-class"/>
+ </ft:struct>
</ft:when>
</ft:choose>
</ft:class>
@@ -115,16 +163,22 @@
<ft:class id="std-id-label-items-class">
<ft:choose path="../../view-selector">
<ft:when value="fold">
- <ft:new id="output-id-class"/>
+ <ft:struct id="stuff">
+ <ft:new id="out-id-class"/>
+ </ft:struct>
</ft:when>
<ft:when value="view">
- <ft:new id="output-id-class"/>
- <ft:new id="output-label-class"/>
+ <ft:struct id="stuff">
+ <ft:new id="out-id-class"/>
+ <ft:new id="output-label-class"/>
+ </ft:struct>
<ft:new id="items-class"/>
</ft:when>
<ft:when value="edit">
- <ft:new id="id-class"/>
- <ft:new id="label-class"/>
+ <ft:struct id="stuff">
+ <ft:new id="id-class"/>
+ <ft:new id="label-class"/>
+ </ft:struct>
<ft:new id="items-class"/>
</ft:when>
</ft:choose>
@@ -133,38 +187,23 @@
<ft:class id="std-id-label-req-class">
<ft:choose path="../../view-selector">
<ft:when value="fold">
- <ft:new id="output-id-class"/>
- </ft:when>
- <ft:when value="view">
- <ft:new id="output-id-class"/>
- <ft:new id="output-label-class"/>
- <ft:new id="output-required-class"/>
- </ft:when>
- <ft:when value="edit">
- Editing
- <ft:new id="id-class"/>
- <ft:new id="label-class"/>
- <ft:new id="required-class"/>
- </ft:when>
- </ft:choose>
- </ft:class>
-
- <ft:class id="std-repeater-class">
- <ft:choose path="../../view-selector">
- <ft:when value="fold">
- <ft:new id="output-id-class"/>
+ <ft:struct id="stuff">
+ <ft:new id="out-id-class"/>
+ </ft:struct>
</ft:when>
<ft:when value="view">
- <ft:new id="output-id-class"/>
- <ft:new id="output-label-class"/>
- <ft:new id="output-initial-size-class"/>
- <ft:new id="items-class"/>
+ <ft:struct id="stuff">
+ <ft:new id="out-id-class"/>
+ <ft:new id="output-label-class"/>
+ <ft:new id="output-required-class"/>
+ </ft:struct>
</ft:when>
<ft:when value="edit">
- <ft:new id="id-class"/>
- <ft:new id="label-class"/>
- <ft:new id="initial-size-class"/>
- <ft:new id="items-class"/>
+ <ft:struct id="stuff">
+ <ft:new id="id-class"/>
+ <ft:new id="label-class"/>
+ <ft:new id="required-class"/>
+ </ft:struct>
</ft:when>
</ft:choose>
</ft:class>
@@ -172,18 +211,24 @@
<ft:class id="std-repeater-class">
<ft:choose path="../../view-selector">
<ft:when value="fold">
- <ft:new id="output-id-class"/>
+ <ft:struct id="stuff">
+ <ft:new id="out-id-class"/>
+ </ft:struct>
</ft:when>
<ft:when value="view">
- <ft:new id="output-id-class"/>
- <ft:new id="output-label-class"/>
- <ft:new id="output-initial-size-class"/>
+ <ft:struct id="stuff">
+ <ft:new id="out-id-class"/>
+ <ft:new id="output-label-class"/>
+ <ft:new id="output-initial-size-class"/>
+ </ft:struct>
<ft:new id="items-class"/>
</ft:when>
<ft:when value="edit">
- <ft:new id="id-class"/>
- <ft:new id="label-class"/>
- <ft:new id="initial-size-class"/>
+ <ft:struct id="stuff">
+ <ft:new id="id-class"/>
+ <ft:new id="label-class"/>
+ <ft:new id="initial-size-class"/>
+ </ft:struct>
<ft:new id="items-class"/>
</ft:when>
</ft:choose>
@@ -197,7 +242,7 @@
<ft:case id="action">
<ft:struct id="action">
- <ft:new id="std-id-label-class"/>
+ <ft:new id="std-id-class"/>
</ft:struct>
</ft:case>
@@ -279,7 +324,7 @@
<ft:class id="type-selector-class">
<ft:choose path="view-selector">
<ft:when value="fold">
- <b>[<ft:widget id="type-selector"><fi:styling
type="output"/></ft:widget>]</b>
+ <b>[<ft:widget id="type-selector"><fi:styling
type="output"/></ft:widget>]</b> 
</ft:when>
<ft:when value="view">
<b>[<ft:widget id="type-selector"><fi:styling
type="output"/></ft:widget>]</b> 
@@ -293,37 +338,47 @@
</ft:class>
<ft:class id="view-selector-class">
- <ft:widget id="view-selector">
- <fi:styling list-type="dropdown" submit-on-change="true"/>
- </ft:widget>
+ <ft:choose path="view-selector">
+ <ft:when value="fold">
+ <ft:widget id="view-view"><fi:styling type="image"
src="resources/view.gif"/></ft:widget>
+ <ft:widget id="edit-view"><fi:styling type="image"
src="resources/edit.gif"/></ft:widget>
+ </ft:when>
+ <ft:when value="view">
+ <ft:widget id="fold-view"><fi:styling type="image"
src="resources/fold.gif"/></ft:widget>
+ <ft:widget id="edit-view"><fi:styling type="image"
src="resources/edit.gif"/></ft:widget>
+ </ft:when>
+ <ft:when value="edit">
+ <ft:widget id="fold-view"><fi:styling type="image"
src="resources/fold.gif"/></ft:widget>
+ <ft:widget id="view-view"><fi:styling type="image"
src="resources/view.gif"/></ft:widget>
+ </ft:when>
+ </ft:choose>
+ </ft:class>
+
+ <ft:class id="item-row-class">
+ <span class="actions">
+ <ft:widget id="up"><fi:styling type="image"
src="resources/move_up.gif"/></ft:widget>
+ <ft:widget id="down"><fi:styling type="image"
src="resources/move_down.gif"/></ft:widget>
+ <ft:widget id="add"><fi:styling type="image"
src="resources/new.gif"/></ft:widget>
+  <ft:widget id="delete"><fi:styling type="image"
src="resources/delete.gif"/></ft:widget>
+ </span>
+ <ft:new id="view-selector-class"/>
+ <ft:new id="type-selector-class"/>
+ <ft:new id="union-class"/>
</ft:class>
<ft:class id="items-class">
+ <ft:widget id="addItem"><fi:styling type="image"
src="resources/new_child.gif"/></ft:widget>
<ft:repeater-size id="items"/>
- <ul>
- <ft:repeater-widget id="items">
- <li>
- <ft:widget id="select"/>
- <ft:new id="view-selector-class"/>
- <ft:new id="type-selector-class"/>
- <ft:new id="union-class"/>
- </li>
- </ft:repeater-widget>
- </ul>
- <ft:widget id="addItem"/>
- <ft:widget id="removeItems"/><br/>
- </ft:class>
-
- <table border="3">
- <tr>
- <td>
- <p>
- <ft:new id="items-class"/>
- </p>
- <input type="submit"/>
- </td>
- </tr>
- </table>
+ <ft:repeater-widget id="items">
+ <div class="section"><ft:new id="item-row-class"/></div>
+ </ft:repeater-widget>
+ </ft:class>
+
+ <p>
+ <ft:new id="items-class"/>
+ </p>
+ <ft:widget id="messages"/><br/>
+ <input type="submit"/>
</ft:form-template>
</content>
Modified: cocoon/trunk/src/blocks/forms/samples/swan/forms/sitemap_model.xml
==============================================================================
--- cocoon/trunk/src/blocks/forms/samples/swan/forms/sitemap_model.xml
(original)
+++ cocoon/trunk/src/blocks/forms/samples/swan/forms/sitemap_model.xml Wed Nov
10 10:01:13 2004
@@ -68,6 +68,7 @@
var type = widget.lookupWidget("../type-selector");
var stuff = union.lookupWidget(union.getValue() + "/stuff");
if("edit".equals(widget.getValue())) {
+
union.setState(Packages.org.apache.cocoon.forms.formmodel.WidgetState.ACTIVE);
if(stuff != null) {
stuff.setState(Packages.org.apache.cocoon.forms.formmodel.WidgetState.ACTIVE);
}