From: <sim...@us...> - 2007-11-25 22:46:09
|
Revision: 627 http://zkforge.svn.sourceforge.net/zkforge/?rev=627&view=rev Author: simon_massey Date: 2007-11-25 14:46:12 -0800 (Sun, 25 Nov 2007) Log Message: ----------- moved the ui logic into a controller class. refactored to use 'forward' to delegate events to the controller class. Modified Paths: -------------- trunk/foodToGo/src/main/webapp/zul/add-menu-item.zul trunk/foodToGo/src/main/webapp/zul/add-restaurant.zul trunk/foodToGo/src/main/webapp/zul/index.zul trunk/foodToGo/src/main/webapp/zul/menu-item.zul Added Paths: ----------- trunk/foodToGo/src/main/webapp/WEB-INF/zscript/ trunk/foodToGo/src/main/webapp/WEB-INF/zscript/controller-class.zs trunk/foodToGo/src/main/webapp/WEB-INF/zscript/load-dummy-data.zs trunk/foodToGo/src/main/webapp/WEB-INF/zscript/restaurant-macro.zs trunk/foodToGo/src/main/webapp/test/ trunk/foodToGo/src/main/webapp/test/macrobind.zul trunk/foodToGo/src/main/webapp/test/usemacrobind.zul Removed Paths: ------------- trunk/foodToGo/src/main/webapp/zul/load-dummy-data.zs trunk/foodToGo/src/main/webapp/zul/restaurant-macro.zs Property Changed: ---------------- trunk/foodToGo/dist/pia/ Property changes on: trunk/foodToGo/dist/pia ___________________________________________________________________ Name: svn:ignore - release working codegen Thumbs.db debug javadoc + release working codegen Thumbs.db debug javadoc pia-zk-1.0 Added: trunk/foodToGo/src/main/webapp/WEB-INF/zscript/controller-class.zs =================================================================== --- trunk/foodToGo/src/main/webapp/WEB-INF/zscript/controller-class.zs (rev 0) +++ trunk/foodToGo/src/main/webapp/WEB-INF/zscript/controller-class.zs 2007-11-25 22:46:12 UTC (rev 627) @@ -0,0 +1,100 @@ +/* +ZK Food To Go :: A realistic example of using ZK with POJOs, Spring and Hibernate. +Copyright (C) 2007 Simon Massey + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +*/ + +import org.zkoss.zk.ui.*; +import org.zkoss.zul.*; +import net.chrisrichardson.foodToGo.domain.Restaurant; +import net.chrisrichardson.foodToGo.domain.MenuItem; + +// we could have just compiled this as a Java file and put it on the classpath +// but doing it in beanshell is quick and easy to prototpe +public class ControllerClass extends Window { + + Object restaurantFacadeSpringBean = null; + Object restaurantsListBox = null; + Object restaurants = null; + Object restaurant = null; + Object menuItemRows = null; + Object reloadButton = null; + + public Restaurant restaurantSelected(restaurantPk) { + restaurant = restaurantFacadeSpringBean.loadRestaurant(""+selectedRestaurant.id).getRestaurant(); + rebuildMenuGrid(); + return restaurant; + } + + public void onSave(org.zkoss.zk.ui.event.Event event){ + if( null != restaurant ) { + restaurantFacadeSpringBean.saveRestaurant(restaurant); + onReload(); + } + } + + public void onReload(org.zkoss.zk.ui.event.Event event) { + model = restaurantsListBox.model; + model.clear(); + restaurants = restaurantFacadeSpringBean.listRestaurants().getRestaurants(); + model.addAll(restaurants); + } + + public void onNew(org.zkoss.zk.ui.event.Event event) { + Window win = (Window) Executions.createComponents( + "add-restaurant.zul", null, null); + win.doModal(); + } + + public void createNewRestaurant(String name, String type) { + restaurant = new Restaurant(); + restaurant.name = name; + restaurant.type = type; + restaurantFacadeSpringBean.saveRestaurant(restaurant); + onReload(); + } + + public void onItem(org.zkoss.zk.ui.event.Event event) { + if( null != restaurant ) { + Window win = (Window) Executions.createComponents( + "add-menu-item.zul", null, spaceScope); + win.doModal(); + rebuildMenuGrid(); + } else { + alert("Please select a restaurant."); + } + } + + void rebuildMenuGrid(){ + menuItemRows.children.clear(); + menuItems = restaurant.menuItems; + index = 0; + for( Iterator i = menuItems.iterator(); i.hasNext(); ){ + menuItem = i.next(); + spaceScope.put("index", index); // the index of the <row> within <rows> and of the pojo in it's list + spaceScope.put("item", menuItem); // the pojo + Executions.createComponents("menu-item.zul", menuItemRows, spaceScope); + index++; + } + } + + public void createNewMenuItem(String name, double price) { + menuItem = new MenuItem(); + menuItem.price = price; + menuItem.name = name; + restaurant.menuItems.add(menuItem); + } +} \ No newline at end of file Copied: trunk/foodToGo/src/main/webapp/WEB-INF/zscript/load-dummy-data.zs (from rev 626, trunk/foodToGo/src/main/webapp/zul/load-dummy-data.zs) =================================================================== --- trunk/foodToGo/src/main/webapp/WEB-INF/zscript/load-dummy-data.zs (rev 0) +++ trunk/foodToGo/src/main/webapp/WEB-INF/zscript/load-dummy-data.zs 2007-11-25 22:46:12 UTC (rev 627) @@ -0,0 +1,56 @@ +/* +ZK Food To Go :: A realistic example of using ZK with POJOs, Spring and Hibernate. +Copyright (C) 2006 Simon Massey + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +*/ +// this code just checks if the database returned zero restaurants and creates some +// dummy data in if necessary. +if( 0 == restaurants.size() ) { + //If the database was empty create some sample data + menuList = new java.util.ArrayList(); + dummyMenuItem = new net.chrisrichardson.foodToGo.domain.MenuItem(); + dummyMenuItem.setName("Cannelloni"); + dummyMenuItem.setPrice(9.99d); + menuList.add(dummyMenuItem); + dummyMenuItem = new net.chrisrichardson.foodToGo.domain.MenuItem(); + dummyMenuItem.setName("Tagliata"); + dummyMenuItem.setPrice(17.00d); + menuList.add(dummyMenuItem); + dummyRestaurant = new net.chrisrichardson.foodToGo.domain.Restaurant(); + dummyRestaurant.setName("Italian To Go"); + dummyRestaurant.setType("Italian"); + dummyRestaurant.setMenuItems(menuList); + + restaurantFacadeSpringBean.saveRestaurant(dummyRestaurant); + + menuList = new java.util.ArrayList(); + dummyMenuItem = new net.chrisrichardson.foodToGo.domain.MenuItem(); + dummyMenuItem.setName("Tod Man Pla"); + dummyMenuItem.setPrice(8.50d); + menuList.add(dummyMenuItem); + dummyMenuItem = new net.chrisrichardson.foodToGo.domain.MenuItem(); + dummyMenuItem.setName("Pad Ped Mu"); + dummyMenuItem.setPrice(18.00d); + menuList.add(dummyMenuItem); + dummyRestaurant = new net.chrisrichardson.foodToGo.domain.Restaurant(); + dummyRestaurant.setName("Thai To Go"); + dummyRestaurant.setType("Thai"); + dummyRestaurant.setMenuItems(menuList); + + restaurantFacadeSpringBean.saveRestaurant(dummyRestaurant); + + restaurants = restaurantFacadeSpringBean.listRestaurants().getRestaurants(); +} Copied: trunk/foodToGo/src/main/webapp/WEB-INF/zscript/restaurant-macro.zs (from rev 626, trunk/foodToGo/src/main/webapp/zul/restaurant-macro.zs) =================================================================== --- trunk/foodToGo/src/main/webapp/WEB-INF/zscript/restaurant-macro.zs (rev 0) +++ trunk/foodToGo/src/main/webapp/WEB-INF/zscript/restaurant-macro.zs 2007-11-25 22:46:12 UTC (rev 627) @@ -0,0 +1,66 @@ +/* +ZK Food To Go :: A realistic example of using ZK with POJOs, Spring and Hibernate. +Copyright (C) 2007 Simon Massey + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +*/ + +import org.zkoss.zk.ui.*; +import org.zkoss.zul.*; + +// we could have just compiled this as a Java file and put it on the classpath +// but doing it in beanshell is quick and easy to prototpe with +public class RestaurantMacro extends HtmlMacroComponent { + + /* + Calls getName get it from the 'namebox' textbox in the macro component space + */ + public String getName() { + return getFellow("namebox").getValue(); + } + + /* + Calls setName set it on the 'namebox' textbox in the macro component space + */ + public void setName(String str) { + getFellow("namebox").setValue(str); + } + + /* + Calls setSelectedItem on the 'typeselect' listbox in the macro component space + */ + public void setType(String str) { + if( str != null ) { + // find the listbox in the macro component + Listbox typeselect = getFellow("typeselect"); + for(Iterator i = typeselect.getItems().iterator(); i.hasNext();){ + Listitem listItem = (Listitem)i.next(); + if( listItem.getValue().equals(str) ) { + // found it. + typeselect.setSelectedItem(listItem); + break; + } + } + } + } + + /* + Calls getSelectItem().getValue() on the 'typeselect' listbox in the marco component space + */ + public String getType() { + return getFellow("typeselect").getSelectedItem().getValue(); + } + +} \ No newline at end of file Added: trunk/foodToGo/src/main/webapp/test/macrobind.zul =================================================================== --- trunk/foodToGo/src/main/webapp/test/macrobind.zul (rev 0) +++ trunk/foodToGo/src/main/webapp/test/macrobind.zul 2007-11-25 22:46:12 UTC (rev 627) @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="UTF-8"?> +<grid> +<rows> + <row>First Name: + <textbox id="firstName" forward="onChange=onFirstNameChange"/> + </row> + <row>Last Name: + <textbox id="lastName" forward="onChange=onLastNameChange"/> + </row> + <row>Full Name: <label id="fullName"/></row> +</rows> +</grid> \ No newline at end of file Added: trunk/foodToGo/src/main/webapp/test/usemacrobind.zul =================================================================== --- trunk/foodToGo/src/main/webapp/test/usemacrobind.zul (rev 0) +++ trunk/foodToGo/src/main/webapp/test/usemacrobind.zul 2007-11-25 22:46:12 UTC (rev 627) @@ -0,0 +1,41 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?init class="org.zkoss.zkplus.databind.AnnotateDataBinderInit" ?> +<?init zscript="macrobind.zs" ?> +<?component name="username" macro-uri="macrobind.zul" class="Username"?> +<window xmlns:a="http://www.zkoss.org/2005/zk/annotation"> +<zscript> +//define a Person data object for data-binding test +public class Person { + private String _firstName; + private String _lastName; + + public Person(String first, String last) { + _firstName = first; + _lastName = last; + } + + public void setFirstName(String str) { + _firstName = str; + } + + public String getFirstName() { + return _firstName; + } + + public String setLastName(String str) { + _lastName = str; + } + + public String getLastName() { + return _lastName; + } +} + +Person person = new Person("Hello", "World"); + +</zscript> +<username + firstName="@{person.firstName,save-when='self.onFirstNameChange',access=both}" + lastName="@{person.lastName,save-when='self.onLastNameChange',access=both}"/> +<button label="check Person" onClick='alert(person.firstName+" "+person.lastName)'/> +</window> Modified: trunk/foodToGo/src/main/webapp/zul/add-menu-item.zul =================================================================== --- trunk/foodToGo/src/main/webapp/zul/add-menu-item.zul 2007-11-24 22:15:41 UTC (rev 626) +++ trunk/foodToGo/src/main/webapp/zul/add-menu-item.zul 2007-11-25 22:46:12 UTC (rev 627) @@ -16,8 +16,10 @@ along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. --> -<window id="win" title="Add Menu Item" border="normal" width="200px" - closable="true"> +<window id="win" title="Add Menu Item" border="normal" width="200px" closable="true"> + <attribute name="onCreate"> + controller = Path.getComponent("//main-page/controller"); + </attribute> <vbox> <label id="nameLabel" value="Name:" /> <textbox id="name" value="" constraint="no empty" /> @@ -39,14 +41,7 @@ if( name.isValid() && price.isValid() ) { if( name != "" && price != null ) { - restaurant = componentScope.get("restaurant"); - - // create the new menu item and add it to the restaurant - menuItem = new net.chrisrichardson.foodToGo.domain.MenuItem(); - menuItem.price = price.value.doubleValue(); - menuItem.name = name.value; - restaurant.menuItems.add(menuItem); - + controller.createNewMenuItem(name.value, price.value.doubleValue()); win.detach(); } } Modified: trunk/foodToGo/src/main/webapp/zul/add-restaurant.zul =================================================================== --- trunk/foodToGo/src/main/webapp/zul/add-restaurant.zul 2007-11-24 22:15:41 UTC (rev 626) +++ trunk/foodToGo/src/main/webapp/zul/add-restaurant.zul 2007-11-25 22:46:12 UTC (rev 627) @@ -16,21 +16,10 @@ along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. --> -<?variable-resolver class="org.zkoss.zkplus.spring.DelegatingVariableResolver"?> -<window id="win" title="Add New Restaurant" border="normal" - width="200px" closable="true"> - <zscript> - <![CDATA[ -doAdd(String name, String type){ - restaurant = new net.chrisrichardson.foodToGo.domain.Restaurant(); - restaurant.name = name; - restaurant.type = type; - restaurantFacadeSpringBean.saveRestaurant(restaurant); - reload = Path.getComponent("//main-page/main-window/reload"); - Events.postEvent(Events.ON_CLICK, reload, null); -} -]]> - </zscript> +<window id="win" title="Add New Restaurant" border="normal" width="200px" closable="true"> + <attribute name="onCreate"> + controller = Path.getComponent("//main-page/controller"); + </attribute> <vbox> <label id="restaurantNameLabel" value="Restaurant Name:" /> <textbox id="name" value="" constraint="no empty"/> @@ -47,7 +36,7 @@ <button label="Add"> <attribute name="onClick"><![CDATA[ if( name.isValid() && typeselect.selectedIndex > 0 ) { - doAdd(name.value, typeselect.selectedItem.value); + controller.createNewRestaurant(name.value, typeselect.selectedItem.value); win.detach(); } if (typeselect.selectedIndex < 1) { Modified: trunk/foodToGo/src/main/webapp/zul/index.zul =================================================================== --- trunk/foodToGo/src/main/webapp/zul/index.zul 2007-11-24 22:15:41 UTC (rev 626) +++ trunk/foodToGo/src/main/webapp/zul/index.zul 2007-11-25 22:46:12 UTC (rev 627) @@ -17,61 +17,70 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. --> <?page id="main-page"?> -<!-- include the pojo to screen control data bindings by annotations engine --> +<!-- + pojo-to-screen data bindings engine +--> <?init class="org.zkoss.zkplus.databind.AnnotateDataBinderInit" ?> -<!-- here we define dynamically define the java for a html macro class --> -<?init zscript="restaurant-macro.zs" ?> -<!-- include the spring bean variable resolver it will automatically resolve -script variables to spring beans defined in applicationContext.xml --> +<!-- + define dynamically define the java for a html macro class used in <restaurant/> macro +--> +<?init zscript="/WEB-INF/zscript/restaurant-macro.zs" ?> +<!-- + define dynamically define the java for a Window subclass that will be our UI controller +--> +<?init zscript="/WEB-INF/zscript/controller-class.zs" ?> +<!-- + include the spring bean variable resolver it will automatically resolve + script variables to spring beans see spring section of web.xml and + applicationContext.xml +--> <?variable-resolver class="org.zkoss.zkplus.spring.DelegatingVariableResolver"?> -<!-- include a macro control defined in restaurant.zul once defined we can -use the macro with an newly invented <restaurant/> tag --> +<!-- + define a macro <restaurant/> tag rendered by restaurant.zul with the component + class of RestaurantMacro defined in controller-class.zs +--> <?component name="restaurant" macro-uri="restaurant.zul" class="RestaurantMacro"?> <zk xmlns:h="http://www.w3.org/1999/xhtml" xmlns:a="http://www.zkoss.org/2005/zk/annotation"> - <window title="Food To Go :: Restaurant Manager" border="normal" id="main-window"> - <!-- on page load invoke a spring bean method to load POJO entities from the database --> + <window title="Food To Go :: Restaurant Manager" border="normal" use="ControllerClass" id="controller"> + <attribute name="onCreate"> + self.restaurantFacadeSpringBean = restaurantFacadeSpringBean; + self.restaurantsListBox = restaurantsListBox; + self.menuItemRows = menuItemRows; + self.restaurants = restaurantFacadeSpringBean.listRestaurants().getRestaurants(); + </attribute> + <!-- + note that "restaurantFacadeSpringBean" is not the ID of any component in page + so variable-resolver defined above will get the bean from spring see + applicationContext.xml + --> <zscript> restaurants = restaurantFacadeSpringBean.listRestaurants().getRestaurants(); </zscript> - <zscript src="load-dummy-data.zs"/> + <zscript src="/WEB-INF/zscript/load-dummy-data.zs"/> <hbox> <vbox width="200px"> <groupbox width="300px"> <caption label="Restaurants In The Database" /> - <!-- Bind a Listbox to the restaurants POJO entity collection. If the user selects a restaurant the selectRestaurant variable will updated to point to the corresponding POJO entity. --> - <a:bind model="restaurants" selectedItem="selectedRestaurant" /> - <listbox rows="10" id="restaurantsListBox"> - <a:bind _var="restaurant" /> - <listitem> - <a:bind label="restaurant.name" /> - <listcell/> + <!-- + Bind a Listbox to the restaurants POJO entity collection. + If the user selects a restaurant the selectRestaurant + variable will updated to point to the corresponding + POJO entity. + See http://www.zkoss.org/smalltalks/databind4/databind4.dsp and + http://www.zkoss.org/smalltalks/zk3.0/ for new "@{}" syntax + --> + <listbox rows="10" id="restaurantsListBox" model="@{restaurants}" selectedItem="@{selectedRestaurant}"> + <listitem self="@{each=restaurant}"> + <listcell label="@{restaurant.name}"/> </listitem> <attribute name="onSelect"> - <!-- when the user selects a POJO entity from the list box load the full restaurant with it's menu items from the database --> <![CDATA[ - // selectedRestaurant.id calls getId() on the sparcely loaded Restaurant POJO bound to the selected item - restaurant = restaurantFacadeSpringBean.loadRestaurant(""+selectedRestaurant.id).getRestaurant(); - - // cache the loaded POJO on an attribute of the page for use in later event handlers - spaceScope.put("restaurant", restaurant); - - // get the list of menu item pojos from our fully loaded restaurant entity POJO and update the screen. - rebuildMenuGrid(restaurant); + restaurant = controller.restaurantSelected(selectedRestaurant.id); ]]> </attribute> </listbox> </groupbox> - <button id="reload" label="Reload"> - <attribute name="onClick"> - <!-- refresh the data model of the databound Listbox with data re-loaded from the database --> - <![CDATA[ - model = restaurantsListBox.model; - model.clear(); - restaurants = restaurantFacadeSpringBean.listRestaurants().getRestaurants(); - model.addAll(restaurants); - ]]> - </attribute> - </button> + <button label="Reload" forward="onReload"/> </vbox> <splitter collapse="before" /> <vbox> @@ -79,86 +88,24 @@ <caption label="Restaurant Details" /> <!-- Databind the restaurant pojo loaded from the database to the <restaurant/> macro component. - We bind the macro attribute "name" to "restaurant.name" and "type" to "restaurant.type" - see restaurant-macro.zs for details of how these are rendered + We bind the macro attribute "name" to "restaurant.name" and "type" to "restaurant.type". + We instruct to save to the restaurant POJO when onNameChange/onTypeChange is fired on the + macro component + see restaurant-macro.zs, restaurant.zul + see http://www.zkoss.org/javadoc/3.0.0/zkplus/org/zkoss/zkplus/databind/AnnotateDataBinder.html --> - <a:bind - name="restaurant.name;save-when:self.onNameChange;access:both" - type="restaurant.type;save-when:self.onTypeChange;access:both"/> - <restaurant/> + <restaurant name="@{restaurant.name,save-when='self.onNameChange',access=both}" type="@{restaurant.type,save-when='self.onTypeChange',access=both}"/> </groupbox> <groupbox width="500px"> <caption label="Menu Items" /> <grid> - <zscript> - <!-- - This function will programmatically re-render each menu item - applying menu-item.zul to each menu item - --> - <![CDATA[ - rebuildMenuGrid(restaurant){ - // clear the current menu item grid rows - menuItemRows.children.clear(); - - // get the menu item pojos - menuItems = restaurant.menuItems; - - // create the new menu item grid elements. this is sort of like the innerHTML DOM trick - index = 0; - for( Iterator i = menuItems.iterator(); i.hasNext(); ){ - menuItem = i.next(); - spaceScope.put("index", index); // the index of the <row> within <rows> - spaceScope.put("name", menuItem.name); // data from our pojo - spaceScope.put("price", menuItem.price); // data from our pojo - Executions.createComponents("menu-item.zul", menuItemRows, spaceScope); - index++; - } - } - ]]> - </zscript> <rows id="menuItemRows"/> </grid> </groupbox> <hbox> - <button id="newRestaurantButton" label="New"> - <attribute name="onClick"> - <!-- Here we launch the new restaurant model dialogue --> - <![CDATA[ - Window win = (Window) Executions.createComponents( - "add-restaurant.zul", null, null); - win.doModal(); - ]]> - </attribute> - </button> - <button label="Add Menu Item"> - <attribute name="onClick"> - <!-- Here we launch the add menu item dialogue --> - <![CDATA[ - restaurant = spaceScope.get("restaurant"); - if( null != restaurant ) { - Window win = (Window) Executions.createComponents( - "add-menu-item.zul", null, spaceScope); - win.doModal(); - - rebuildMenuGrid(restaurant); - } else { - alert("Please select a restaurant."); - } - ]]> - </attribute> - </button> - <button id="saveRestaurantButton" label="Save Restaurant"> - <attribute name="onClick"> - <!-- Here we save the POJO cached on the save button --> - <![CDATA[ - restaurant = spaceScope.get("restaurant"); - if( null != restaurant ) { - restaurantFacadeSpringBean.saveRestaurant(restaurant); - Events.sendEvent(reload,event); - } - ]]> - </attribute> - </button> + <button label="New" forward="onNew"/> + <button label="Add Menu Item" forward="onItem"/> + <button label="Save Restaurant" forward="onSave"/> </hbox> </vbox> </hbox> Deleted: trunk/foodToGo/src/main/webapp/zul/load-dummy-data.zs =================================================================== --- trunk/foodToGo/src/main/webapp/zul/load-dummy-data.zs 2007-11-24 22:15:41 UTC (rev 626) +++ trunk/foodToGo/src/main/webapp/zul/load-dummy-data.zs 2007-11-25 22:46:12 UTC (rev 627) @@ -1,56 +0,0 @@ -/* -ZK Food To Go :: A realistic example of using ZK with POJOs, Spring and Hibernate. -Copyright (C) 2006 Simon Massey - -This program is free software; you can redistribute it and/or -modify it under the terms of the GNU General Public License -as published by the Free Software Foundation; either version 2 -of the License, or (at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -*/ -// this code just checks if the database returned zero restaurants and creates some -// dummy data in if necessary. -if( 0 == restaurants.size() ) { - //If the database was empty create some sample data - menuList = new java.util.ArrayList(); - dummyMenuItem = new net.chrisrichardson.foodToGo.domain.MenuItem(); - dummyMenuItem.setName("Cannelloni"); - dummyMenuItem.setPrice(9.99d); - menuList.add(dummyMenuItem); - dummyMenuItem = new net.chrisrichardson.foodToGo.domain.MenuItem(); - dummyMenuItem.setName("Tagliata"); - dummyMenuItem.setPrice(17.00d); - menuList.add(dummyMenuItem); - dummyRestaurant = new net.chrisrichardson.foodToGo.domain.Restaurant(); - dummyRestaurant.setName("Italian To Go"); - dummyRestaurant.setType("Italian"); - dummyRestaurant.setMenuItems(menuList); - - restaurantFacadeSpringBean.saveRestaurant(dummyRestaurant); - - menuList = new java.util.ArrayList(); - dummyMenuItem = new net.chrisrichardson.foodToGo.domain.MenuItem(); - dummyMenuItem.setName("Tod Man Pla"); - dummyMenuItem.setPrice(8.50d); - menuList.add(dummyMenuItem); - dummyMenuItem = new net.chrisrichardson.foodToGo.domain.MenuItem(); - dummyMenuItem.setName("Pad Ped Mu"); - dummyMenuItem.setPrice(18.00d); - menuList.add(dummyMenuItem); - dummyRestaurant = new net.chrisrichardson.foodToGo.domain.Restaurant(); - dummyRestaurant.setName("Thai To Go"); - dummyRestaurant.setType("Thai"); - dummyRestaurant.setMenuItems(menuList); - - restaurantFacadeSpringBean.saveRestaurant(dummyRestaurant); - - restaurants = restaurantFacadeSpringBean.listRestaurants().getRestaurants(); -} Modified: trunk/foodToGo/src/main/webapp/zul/menu-item.zul =================================================================== --- trunk/foodToGo/src/main/webapp/zul/menu-item.zul 2007-11-24 22:15:41 UTC (rev 626) +++ trunk/foodToGo/src/main/webapp/zul/menu-item.zul 2007-11-25 22:46:12 UTC (rev 627) @@ -17,10 +17,10 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. --> <row> - <label value="${arg.name}" /> + <label value="${arg.item.name}" /> <hbox> $ - <textbox value="${arg.price}" /> + <textbox value="${arg.item.price}" /> </hbox> <button label="X"> <custom-attributes index="${arg.index}" /> Deleted: trunk/foodToGo/src/main/webapp/zul/restaurant-macro.zs =================================================================== --- trunk/foodToGo/src/main/webapp/zul/restaurant-macro.zs 2007-11-24 22:15:41 UTC (rev 626) +++ trunk/foodToGo/src/main/webapp/zul/restaurant-macro.zs 2007-11-25 22:46:12 UTC (rev 627) @@ -1,67 +0,0 @@ -/* -ZK Food To Go :: A realistic example of using ZK with POJOs, Spring and Hibernate. -Copyright (C) 2007 Simon Massey - -This program is free software; you can redistribute it and/or -modify it under the terms of the GNU General Public License -as published by the Free Software Foundation; either version 2 -of the License, or (at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -*/ - -import org.zkoss.zk.ui.*; -import org.zkoss.zul.*; - -// we could have just compiled this as a Java file and put it on the classpath -// but doing it in beanshell is quick and easy to prototpe with -public class RestaurantMacro extends HtmlMacroComponent { - - /* - Calls getName get it from the 'namebox' textbox in the macro component space - */ - public String getName() { - return getFellow("namebox").getValue(); - } - - - /* - Calls setName set it on the 'namebox' textbox in the macro component space - */ - public void setName(String str) { - getFellow("namebox").setValue(str); - } - - /* - Calls setSelectedItem on the 'typeselect' listbox in the macro component space - */ - public void setType(String str) { - if( str != null ) { - // find the listbox in the macro component - Listbox typeselect = getFellow("typeselect"); - for(Iterator i = typeselect.getItems().iterator(); i.hasNext();){ - Listitem listItem = (Listitem)i.next(); - if( listItem.getValue().equals(str) ) { - // found it. - typeselect.setSelectedItem(listItem); - break; - } - } - } - } - - /* - Calls getSelectItem().getValue() on the 'typeselect' listbox in the marco component space - */ - public String getType() { - return getFellow("typeselect").getSelectedItem().getValue(); - } - -} \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |