|
From: <sim...@us...> - 2010-12-11 21:35:13
|
Revision: 1112
http://zkforge.svn.sourceforge.net/zkforge/?rev=1112&view=rev
Author: simon_massey
Date: 2010-12-11 21:35:06 +0000 (Sat, 11 Dec 2010)
Log Message:
-----------
MVVM Databindings, Statebindings and Commandbindings weather station demo.
Modified Paths:
--------------
trunk/zktodo2/src/main/java/org/zkforge/zktodo2/binding/CommandBinderInit.java
trunk/zktodo2/src/main/resources/test-context.xml
trunk/zktodo2/src/main/webapp/zktodo_c.zul
Added Paths:
-----------
trunk/zktodo2/src/main/java/org/zkforge/zktodo2/mvvm/
trunk/zktodo2/src/main/java/org/zkforge/zktodo2/mvvm/demo/
trunk/zktodo2/src/main/java/org/zkforge/zktodo2/mvvm/demo/Station.java
trunk/zktodo2/src/main/java/org/zkforge/zktodo2/mvvm/demo/WeathStationViewModel.java
trunk/zktodo2/src/main/webapp/mvvm-demo/
trunk/zktodo2/src/main/webapp/mvvm-demo/weather-station-mvvm.zul
Removed Paths:
-------------
trunk/zktodo2/src/main/java/org/zkforge/zktodo2/mvvm/demo/CommandBindingDemoTarget.java
trunk/zktodo2/src/main/java/org/zkforge/zktodo2/other/
trunk/zktodo2/src/main/webapp/demo/
trunk/zktodo2/src/main/webapp/mvvm-demo/commandBinderDemo.zul
Modified: trunk/zktodo2/src/main/java/org/zkforge/zktodo2/binding/CommandBinderInit.java
===================================================================
--- trunk/zktodo2/src/main/java/org/zkforge/zktodo2/binding/CommandBinderInit.java 2010-12-05 16:50:56 UTC (rev 1111)
+++ trunk/zktodo2/src/main/java/org/zkforge/zktodo2/binding/CommandBinderInit.java 2010-12-11 21:35:06 UTC (rev 1112)
@@ -102,7 +102,7 @@
final String propName = (String) it.next();
- if (propName.startsWith("on")) {
+ if (propName.startsWith("on") ) {
final Object[] annotationDetails = loadPropertyAnnotation(comp,
propName, annotName);
Deleted: trunk/zktodo2/src/main/java/org/zkforge/zktodo2/mvvm/demo/CommandBindingDemoTarget.java
===================================================================
--- trunk/zktodo2/src/main/java/org/zkforge/zktodo2/other/CommandBindingDemoTarget.java 2010-12-05 15:20:38 UTC (rev 1109)
+++ trunk/zktodo2/src/main/java/org/zkforge/zktodo2/mvvm/demo/CommandBindingDemoTarget.java 2010-12-11 21:35:06 UTC (rev 1112)
@@ -1,32 +0,0 @@
-package org.zkforge.zktodo2.other;
-
-import java.util.Date;
-
-import org.zkoss.zk.ui.Component;
-import org.zkoss.zk.ui.util.Composer;
-import org.zkoss.zul.api.Textbox;
-
-public class CommandBindingDemoTarget implements Composer {
-
- private Textbox output;
-
- public void doAfterCompose(Component comp) throws Exception {
- this.output = (Textbox) comp;
- }
-
- public void date( Date d ){
- output.setValue("Date is "+d);
- }
-
- public void integer( int i ){
- output.setValue("int is "+i);
- }
-
- public void text( String s){
- output.setValue("text is "+s);
- }
-
- public void click( ){
- output.setValue("clicked");
- }
-}
Added: trunk/zktodo2/src/main/java/org/zkforge/zktodo2/mvvm/demo/Station.java
===================================================================
--- trunk/zktodo2/src/main/java/org/zkforge/zktodo2/mvvm/demo/Station.java (rev 0)
+++ trunk/zktodo2/src/main/java/org/zkforge/zktodo2/mvvm/demo/Station.java 2010-12-11 21:35:06 UTC (rev 1112)
@@ -0,0 +1,82 @@
+package org.zkforge.zktodo2.mvvm.demo;
+
+import java.util.Date;
+import java.util.GregorianCalendar;
+import java.util.Random;
+
+public class Station {
+ private String name = "";
+ private Date date = new Date();
+ private int target = 0;
+ private int actual = 0;
+ private boolean confirmed = false;
+ public boolean getConfirmed() {
+ return confirmed;
+ }
+
+ public void setConfirmed(boolean confirmed) {
+ this.confirmed = confirmed;
+ }
+
+ public int getVariance() {
+ return Math.abs(target-actual);
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public Date getDate() {
+ return date;
+ }
+
+ public void setDate(Date date) {
+ this.date = date;
+ }
+
+ public int getTarget() {
+ return target;
+ }
+
+ public void setTarget(int target) {
+ this.target = target;
+ }
+
+ public int getActual() {
+ return actual;
+ }
+
+ public void setActual(int actual) {
+ this.actual = actual;
+ }
+
+ public static Station random() {
+ Random random = new Random();
+ Station station = new Station();
+ StringBuilder builder = new StringBuilder();
+ for( int i = 0; i < 2; i++ ){
+ char randC = randomUpperCaseLetter();
+ builder.append(randC);
+ }
+ builder.append((int) (Math.random() * 999));
+ station.name = builder.toString();
+ station.date = new GregorianCalendar(2010, random.nextInt(12), random.nextInt(29)).getTime();
+ station.target = random.nextInt(80);
+ station.actual = random.nextInt(80);
+ station.confirmed = (random.nextInt(100) >= 50)?true:false;
+ return station;
+ }
+ private static char randomUpperCaseLetter() {
+ final int asciiUpperMax = 90;
+ final int asciiUpperMin = 65;
+ int range = asciiUpperMax-asciiUpperMin;
+ int rand = (int) (Math.random() * range) + asciiUpperMin;
+ char[] randCs = Character.toChars(rand);
+ char randC = randCs[0];
+ return randC;
+ }
+}
Copied: trunk/zktodo2/src/main/java/org/zkforge/zktodo2/mvvm/demo/WeathStationViewModel.java (from rev 1109, trunk/zktodo2/src/main/java/org/zkforge/zktodo2/other/CommandBindingDemoTarget.java)
===================================================================
--- trunk/zktodo2/src/main/java/org/zkforge/zktodo2/mvvm/demo/WeathStationViewModel.java (rev 0)
+++ trunk/zktodo2/src/main/java/org/zkforge/zktodo2/mvvm/demo/WeathStationViewModel.java 2010-12-11 21:35:06 UTC (rev 1112)
@@ -0,0 +1,67 @@
+package org.zkforge.zktodo2.mvvm.demo;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class WeathStationViewModel {
+
+ public WeathStationViewModel(){
+ for( int i = 0; i < 10; i++ ) {
+ Station s = Station.random();
+ stations.add(s);
+ }
+ }
+
+ Station station = new Station();
+
+ public boolean getStationIsNotNew(){
+ return this.stations.contains(station);
+ }
+
+ public Station getStation() {
+ return station;
+ }
+
+ public void setStation(Station station) {
+ this.station = station;
+ }
+
+ List<Station> stations = new ArrayList<Station>();
+
+ public List<Station> getStations() {
+ return stations;
+ }
+
+ public void setStations(List<Station> stations) {
+ this.stations = stations;
+ }
+
+ public void create() {
+ this.station = new Station();
+ return;
+ }
+
+ public void add(){
+ if( !this.stations.contains(station)) {
+ this.stations.add(this.station);
+ }
+ return;
+ }
+
+ public boolean isValidToAdd(){
+ boolean validToAdd = false;
+ if( this.station != null ){
+ if( this.station.getName() != null ){
+ if( !this.station.getName().equals("")){
+ validToAdd = true;
+ }
+ }
+ }
+ return validToAdd;
+ }
+
+ public boolean isNotValidToAdd(){
+ return !this.isValidToAdd();
+ }
+
+}
Modified: trunk/zktodo2/src/main/resources/test-context.xml
===================================================================
--- trunk/zktodo2/src/main/resources/test-context.xml 2010-12-05 16:50:56 UTC (rev 1111)
+++ trunk/zktodo2/src/main/resources/test-context.xml 2010-12-11 21:35:06 UTC (rev 1112)
@@ -9,7 +9,7 @@
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
">
- <bean id="testBean" class="org.zkforge.zktodo2.other.CommandBindingDemoTarget" scope="desktop" />
+ <bean id="testBean" class="org.zkforge.zktodo2.mvvm.demo.WeathStationViewModel" scope="desktop" />
</beans>
Deleted: trunk/zktodo2/src/main/webapp/mvvm-demo/commandBinderDemo.zul
===================================================================
--- trunk/zktodo2/src/main/webapp/demo/commandBinderDemo.zul 2010-12-05 15:20:38 UTC (rev 1109)
+++ trunk/zktodo2/src/main/webapp/mvvm-demo/commandBinderDemo.zul 2010-12-11 21:35:06 UTC (rev 1112)
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?page title="Test Command Binder"?>
-<?init class="org.zkforge.zktodo2.binding.CommandBinderInit" root="./buttons" ?>
-<?init class="org.zkforge.zktodo2.binding.CommandBinderInit" root="./inputs" commandClass="org.zkforge.zktodo2.binding.OnChangeCommandBinder"?>
-<?variable-resolver class="org.zkoss.zkplus.spring.DelegatingVariableResolver" ?>
-<zk xmlns="http://www.zkoss.org/2005/zul">
-<window title="Test Command Binder" width="640px" border="normal">
-<vbox>
- <hbox id="inputs">
- Textbox:<textbox id="text" cols="40" onChanging="@{testBean}"/>
- Intbox:<intbox id="integer" cols="1" onChange="@{testBean}"/>
- Datebox:<datebox id="date" cols="14" onChange="@{testBean}"/>
- </hbox>
- <hbox id="buttons">
- <button id="click" label="ClickMe" width="36px" height="24px" onClick="@{testBean}"/>
- </hbox>
- Output: <textbox apply="${testBean}"/>
-</vbox>
-</window>
-</zk>
Copied: trunk/zktodo2/src/main/webapp/mvvm-demo/weather-station-mvvm.zul (from rev 1109, trunk/zktodo2/src/main/webapp/demo/commandBinderDemo.zul)
===================================================================
--- trunk/zktodo2/src/main/webapp/mvvm-demo/weather-station-mvvm.zul (rev 0)
+++ trunk/zktodo2/src/main/webapp/mvvm-demo/weather-station-mvvm.zul 2010-12-11 21:35:06 UTC (rev 1112)
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?page title="Weather Station MVVM Demo - Inspired By "?>
+<?init class="org.zkoss.zkplus.databind.AnnotateDataBinderInit" ?>
+<?init class="org.zkforge.zktodo2.binding.CommandBinderInit" root="./buttons"?>
+<?variable-resolver class="org.zkoss.zkplus.spring.DelegatingVariableResolver" ?>
+<!--
+This example is inspired by Martin Fowler's Weather Station example at
+http://martinfowler.com/eaaDev/uiArchs.html
+ -->
+<zk xmlns="http://www.zkoss.org/2005/zul">
+<style>
+.z-intbox { color: red; }
+.z-intbox-disd, .z-intbox-disd * { color: black !important; background: #fff !important;}
+.z-textbox-disd, .z-textbox-disd * { color: black !important; background: #fff !important;}
+</style>
+ <window title="Databindings, Statebindings & CommandBindings" width="640px" border="normal">
+ <hbox width="100px">
+
+ <div width="200px">
+ <listbox id="list" multiple="true" rows="12"
+ model="@{testBean.stations, load-after='add.onClick'}" selectedItem="@{testBean.station}">
+ <listhead>
+ <listheader label="Station" />
+ </listhead>
+ <listitem self="@{each=station}">
+ <listcell label="@{station.name}" />
+ </listitem>
+ </listbox>
+ </div>
+ <grid width="350px">
+ <rows>
+ <row>
+ Station
+ <textbox id="nameTextbox" value="@{testBean.station.name, load-after='create.onClick'}" disabled="@{testBean.stationIsNotNew, load-after='create.onClick,add.onClick,list.onSelect'}" />
+ </row>
+ <row>
+ Date
+ <datebox value="@{testBean.station.date, load-after='create.onClick'}"/>
+ </row>
+ <row>
+ Target
+ <intbox value="@{testBean.station.target, load-after='create.onClick'}" disabled="@{testBean.stationIsNotNew, load-after='create.onClick,list.onSelect'}" />
+ </row>
+ <row>
+ Actual
+ <intbox id="actualIntbox" value="@{testBean.station.actual, load-after='create.onClick'}" disabled="@{testBean.station.confirmed, load-after='confirmedCheckbox.onChange'}" />
+ </row>
+ <row>
+ Variance
+ <intbox value="@{testBean.station.variance, load-after='actualIntbox.onChange,create.onClick'}" disabled="true" />
+ </row>
+ <row>
+ Confirmed
+ <checkbox id="confirmedCheckbox" checked="@{testBean.station.confirmed, load-after='create.onClick'}" />
+ </row>
+ <row id="buttons">
+ <div>
+ </div>
+ <div>
+ <button id="create" label="New" onClick="@{testBean}"/>
+ <button id="add" label="Add" onClick="@{testBean}" disabled="@{testBean.isNotValidToAdd, load-after='nameTextbox.onChange'}"/>
+ </div>
+ </row>
+ </rows>
+ </grid>
+ </hbox>
+ </window>
+</zk>
Modified: trunk/zktodo2/src/main/webapp/zktodo_c.zul
===================================================================
--- trunk/zktodo2/src/main/webapp/zktodo_c.zul 2010-12-05 16:50:56 UTC (rev 1111)
+++ trunk/zktodo2/src/main/webapp/zktodo_c.zul 2010-12-11 21:35:06 UTC (rev 1112)
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<?page title="ZkTodo2 - MVVM Example"?>
<?init class="org.zkoss.zkplus.databind.AnnotateDataBinderInit" ?>
-<?init class="org.zkforge.zktodo2.binding.CommandBinderInit" root="./buttons" commandClass="x.y.z"?>
+<?init class="org.zkforge.zktodo2.binding.CommandBinderInit" root="./buttons"?>
<?variable-resolver class="org.zkoss.zkplus.spring.DelegatingVariableResolver" ?>
<zk xmlns="http://www.zkoss.org/2005/zul">
<window title="To Do List" width="640px" border="normal">
@@ -27,7 +27,6 @@
value="@{toDoViewModel.selectedReminder.date, load-after='add.onClick,delete.onClick'}"/>
</hbox>
<hbox id="buttons">
- <button id="getSelectedReminder" label="broken" width="46px" height="24px" onClick="@{toDoViewModel}"/>
<button id="add" label="Add" width="36px" height="24px" onClick="@{toDoViewModel}"/>
<button id="update" label="Update" width="46px" height="24px" onClick="@{toDoViewModel}"/>
<button id="delete" label="Delete" width="46px" height="24px" onClick="@{toDoViewModel}"/>
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|