r132 - in trunk: . wikitty-ui-zk wikitty-ui-zk/src wikitty-ui-zk/src/main wikitty-ui-zk/src/main/java wikitty-ui-zk/src/main/java/org wikitty-ui-zk/src/main/java/org/nuiton wikitty-ui-zk/src/main/java/org/nuiton/wikitty wikitty-ui-zk/src/main/java/org/nuiton/wikitty/ui wikitty-ui-zk/src/main/webapp wikitty-ui-zk/src/main/webapp/WEB-INF
Author: bbrossaud Date: 2010-06-18 12:19:58 +0200 (Fri, 18 Jun 2010) New Revision: 132 Url: http://nuiton.org/repositories/revision/wikitty/132 Log: update delete create object Added: trunk/wikitty-ui-zk/ trunk/wikitty-ui-zk/LICENSE.txt trunk/wikitty-ui-zk/README.txt trunk/wikitty-ui-zk/changelog.txt trunk/wikitty-ui-zk/pom.xml trunk/wikitty-ui-zk/renderitem trunk/wikitty-ui-zk/src/ trunk/wikitty-ui-zk/src/main/ trunk/wikitty-ui-zk/src/main/java/ trunk/wikitty-ui-zk/src/main/java/org/ trunk/wikitty-ui-zk/src/main/java/org/nuiton/ trunk/wikitty-ui-zk/src/main/java/org/nuiton/wikitty/ trunk/wikitty-ui-zk/src/main/java/org/nuiton/wikitty/ui/ trunk/wikitty-ui-zk/src/main/java/org/nuiton/wikitty/ui/Controller.java trunk/wikitty-ui-zk/src/main/java/org/nuiton/wikitty/ui/FieldExtension.java trunk/wikitty-ui-zk/src/main/java/org/nuiton/wikitty/ui/FormModel.java trunk/wikitty-ui-zk/src/main/java/org/nuiton/wikitty/ui/Model.java trunk/wikitty-ui-zk/src/main/java/org/nuiton/wikitty/ui/WikittyForm.java trunk/wikitty-ui-zk/src/main/java/org/nuiton/wikitty/ui/WikittyModel.java trunk/wikitty-ui-zk/src/main/java/org/nuiton/wikitty/ui/WikittyZkConfig.java trunk/wikitty-ui-zk/src/main/java/org/nuiton/wikitty/ui/WikittyZkService.java trunk/wikitty-ui-zk/src/main/webapp/ trunk/wikitty-ui-zk/src/main/webapp/WEB-INF/ trunk/wikitty-ui-zk/src/main/webapp/WEB-INF/web.xml trunk/wikitty-ui-zk/src/main/webapp/WEB-INF/zk.xml trunk/wikitty-ui-zk/src/main/webapp/index.zul Added: trunk/wikitty-ui-zk/pom.xml =================================================================== --- trunk/wikitty-ui-zk/pom.xml (rev 0) +++ trunk/wikitty-ui-zk/pom.xml 2010-06-18 10:19:58 UTC (rev 132) @@ -0,0 +1,203 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + + <modelVersion>4.0.0</modelVersion> + + <parent> + <groupId>org.nuiton</groupId> + <artifactId>wikitty</artifactId> + <version>2.0-SNAPSHOT</version> + </parent> + + <!-- ************************************************************* --> + <!-- *** POM Relationships *************************************** --> + <!-- ************************************************************* --> + <groupId>org.nuiton.wikitty</groupId> + <artifactId>wikitty-ui-zk</artifactId> + + <dependencies> + <!-- TEST --> + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + </dependency> + + <!-- TEST --> + <dependency> + <groupId>log4j</groupId> + <artifactId>log4j</artifactId> + <scope>runtime</scope> + </dependency> + + <!-- COMPILE --> + <dependency> + <groupId>commons-logging</groupId> + <artifactId>commons-logging</artifactId> + </dependency> + + <dependency> + <groupId>commons-lang</groupId> + <artifactId>commons-lang</artifactId> + </dependency> + + <dependency> + <groupId>commons-collections</groupId> + <artifactId>commons-collections</artifactId> + </dependency> + + <dependency> + <groupId>org.nuiton</groupId> + <artifactId>nuiton-utils</artifactId> + <version>1.3</version> + <scope>compile</scope> + </dependency> + + <dependency> + <groupId>org.zkoss.zk</groupId> + <artifactId>zkex</artifactId> + <version>3.6.3</version> + </dependency> + + <dependency> + <groupId>jasperreports</groupId> + <artifactId>jasperreports</artifactId> + <version>3.5.3</version> + </dependency> + + <dependency> + <groupId>javax.servlet</groupId> + <artifactId>servlet-api</artifactId> + <version>2.5</version> + <scope>provided</scope> + </dependency> + + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-log4j12</artifactId> + <scope>runtime</scope> + </dependency> + + <dependency> + <groupId>org.nuiton.wikitty</groupId> + <artifactId>wikitty-jdbc-impl</artifactId> + <version>${wikitty.version}</version> + </dependency> + + <dependency> + <groupId>com.h2database</groupId> + <artifactId>h2</artifactId> + <version>1.2.136</version> + <scope>runtime</scope> + </dependency> + + <dependency> + <groupId>org.zkoss.zk</groupId> + <artifactId>zk</artifactId> + <version>3.6.3</version> + </dependency> + + <dependency> + <groupId>org.zkoss.zk</groupId> + <artifactId>zhtml</artifactId> + <version>3.6.3</version> + </dependency> + + <dependency> + <groupId>org.zkoss.zk</groupId> + <artifactId>zkex</artifactId> + <version>3.6.3</version> + </dependency> + + <dependency> + <groupId>org.zkoss.zk</groupId> + <artifactId>zkmax</artifactId> + <version>3.6.3</version> + </dependency> + + <dependency> + <groupId>org.zkoss.zk</groupId> + <artifactId>zkplus</artifactId> + <version>3.6.3</version> + </dependency> + + <dependency> + <groupId>org.zkoss.zk</groupId> + <artifactId>zml</artifactId> + <version>3.6.3</version> + </dependency> + + <dependency> + <groupId>org.zkoss.zk</groupId> + <artifactId>zul</artifactId> + <version>3.6.3</version> + </dependency> + + <dependency> + <groupId>org.zkoss.zk</groupId> + <artifactId>zuljsf</artifactId> + <version>0.8.1</version> + </dependency> + + <dependency> + <groupId>org.zkoss.zk</groupId> + <artifactId>zuljsp</artifactId> + <version>1.0.0</version> + </dependency> + + <dependency> + <groupId>org.nuiton.wikitty</groupId> + <artifactId>wikitty-api</artifactId> + <version>2.0-SNAPSHOT</version> + <type>jar</type> + </dependency> + + <dependency> + <groupId>org.nuiton.wikitty</groupId> + <artifactId>wikitty-jdbc-impl</artifactId> + <version>2.0-SNAPSHOT</version> + <type>jar</type> + </dependency> + + </dependencies> + + <!-- ************************************************************* --> + <!-- *** Project Information ************************************* --> + <!-- ************************************************************* --> + + <name>Wikitty :: ui-zk</name> + + <description>Public wikitty UI-ZK</description> + <inceptionYear>2010</inceptionYear> + + <!-- ************************************************************* --> + <!-- *** Build Settings ****************************************** --> + <!-- ************************************************************* --> + + <packaging>war</packaging> + + <properties> + + </properties> + + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-compiler-plugin</artifactId> + <configuration> + <source>1.6</source> + <target>1.6</target> + </configuration> + </plugin> + </plugins> + </build> + + <!-- ************************************************************* --> + <!-- *** Build Environment ************************************** --> + <!-- ************************************************************* --> + +</project> + + + + Added: trunk/wikitty-ui-zk/renderitem =================================================================== --- trunk/wikitty-ui-zk/renderitem (rev 0) +++ trunk/wikitty-ui-zk/renderitem 2010-06-18 10:19:58 UTC (rev 132) @@ -0,0 +1,11 @@ + public ListitemRenderer getRenderer() + { + return new ListitemRenderer() + { + public void render(Listitem item, Object data) throws Exception + { + item.setValue(data); + item.setLabel(data.toString()); + } + } + } Added: trunk/wikitty-ui-zk/src/main/java/org/nuiton/wikitty/ui/Controller.java =================================================================== --- trunk/wikitty-ui-zk/src/main/java/org/nuiton/wikitty/ui/Controller.java (rev 0) +++ trunk/wikitty-ui-zk/src/main/java/org/nuiton/wikitty/ui/Controller.java 2010-06-18 10:19:58 UTC (rev 132) @@ -0,0 +1,126 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.nuiton.wikitty.ui; + +import java.util.ArrayList; +import java.util.List; +import java.util.Set; +import org.nuiton.wikitty.Wikitty; +import org.nuiton.wikitty.WikittyExtension; +import org.zkoss.zk.ui.util.GenericForwardComposer; +import org.zkoss.zul.ListModel; +import org.zkoss.zul.Listbox; +import org.zkoss.zul.Listitem; +import org.zkoss.zul.ListitemRenderer; + +/** + * + * @author sherkhan + */ +public class Controller extends GenericForwardComposer { + + protected Model _model = new Model(); + protected List<WikittyExtension> _extensions = new ArrayList<WikittyExtension>(); + protected WikittyExtension _selectedExtension; + protected Listbox formListBox; + protected WikittyForm _wikittyForm = new WikittyForm(); + protected Listbox wikittiesListBox; + protected WikittyModel _wikittyModel = new WikittyModel(); + + public Controller() { + _extensions = _model.retrieveWikittyExtensions(); + } + + /* + * Events + */ + public void onClick$addNewInput() { + _wikittyForm.addNewInput(formListBox); + } + + public void onClick$deleteInput() { + _wikittyForm.deleteInput(formListBox); + } + + public void onClick$add() { + Wikitty newWikitty = _wikittyForm.retriveWikittyInForm(formListBox); + _model.create(newWikitty); + } + + public void onClick$update() { + if (_wikittyForm.isSelected()) { + Wikitty newWikitty = _wikittyForm.retriveWikittyInForm(formListBox); + _model.update(newWikitty); + } + } + + public void onClick$delete() { + Set<Listitem> items = wikittiesListBox.getSelectedItems(); + for (Listitem item : items) { + Wikitty wikitty = (Wikitty) item.getValue(); + _model.deleteWikittyById(wikitty.getId()); + _wikittyModel.removeData(wikitty); + } + wikittiesListBox.setSelectedIndex(0); + } + + /* + * Renderers + */ + public ListitemRenderer getWikittyRenderer() { + return new ListitemRenderer() { + + @Override + public void render(Listitem item, Object data) throws Exception { + item.setValue(data); + item.setLabel(((Wikitty) data).getId()); + } + }; + } + + /* + * Getters + */ + public List<WikittyExtension> getExtensions() { + return _extensions; + } + + public WikittyExtension getSelectedExtension() { + return _selectedExtension; + } + + public WikittyForm getWikittyForm() { + return _wikittyForm; + } + + public ListModel getWikittyModel() { + return _wikittyModel; + } + + public Wikitty getSelectedWikitty() { + return _wikittyForm.getWikitty(); + } + + /* + * Setters + */ + public void setSelectedExtension(WikittyExtension current) { + _wikittyForm.setHoldExtensions(current); + List<Wikitty> list = _model.retrieveWikittiesByExtensionName(current.getName()); + _wikittyModel.setWikitties(list); + } + + public void setSelectedWikitty(Wikitty current) { + _wikittyForm.setWikitty(current); + } + + private void debbug(String debug) { + throw new UnsupportedOperationException(debug); + } + + /* + * Methods + */ +} Added: trunk/wikitty-ui-zk/src/main/java/org/nuiton/wikitty/ui/FieldExtension.java =================================================================== --- trunk/wikitty-ui-zk/src/main/java/org/nuiton/wikitty/ui/FieldExtension.java (rev 0) +++ trunk/wikitty-ui-zk/src/main/java/org/nuiton/wikitty/ui/FieldExtension.java 2010-06-18 10:19:58 UTC (rev 132) @@ -0,0 +1,55 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.nuiton.wikitty.ui; + +import org.nuiton.wikitty.FieldType; +import org.nuiton.wikitty.WikittyExtension; + +/** + * + * @author sherkhan + */ +public class FieldExtension { + + protected FieldType _fieldType; + protected String _name; + protected WikittyExtension _wikiExtension; + + public FieldExtension(FieldType fieldType, String name, WikittyExtension wikittyExtension) { + _name = name; + _fieldType = fieldType; + _wikiExtension = wikittyExtension; + } + + /* + * Setters + */ + public void setName(String name) { + _name = name; + } + + public void setType(FieldType fieldType) { + _fieldType = fieldType; + } + + public void setWikittyExtension(WikittyExtension wikittyExtension) { + _wikiExtension = wikittyExtension; + } + + /* + * Getters + */ + public String getName() { + return _name; + } + + public FieldType getFieldType() { + return _fieldType; + } + + public WikittyExtension getWikittyExtension() { + return _wikiExtension; + } +} Added: trunk/wikitty-ui-zk/src/main/java/org/nuiton/wikitty/ui/FormModel.java =================================================================== --- trunk/wikitty-ui-zk/src/main/java/org/nuiton/wikitty/ui/FormModel.java (rev 0) +++ trunk/wikitty-ui-zk/src/main/java/org/nuiton/wikitty/ui/FormModel.java 2010-06-18 10:19:58 UTC (rev 132) @@ -0,0 +1,55 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.nuiton.wikitty.ui; + +import java.util.ArrayList; +import java.util.List; +import org.zkoss.zkplus.databind.BindingListModel; +import org.zkoss.zul.AbstractListModel; +import org.zkoss.zul.event.ListDataEvent; + +/** + * + * @author sherkhan + */ +public class FormModel extends AbstractListModel implements BindingListModel { + + protected List<FieldExtension> _fieldExtensions = new ArrayList<FieldExtension>(); + + @Override + public Object getElementAt(int index) { + return _fieldExtensions.get(index); + } + + @Override + public int getSize() { + return _fieldExtensions.size(); + } + + @Override + public int indexOf(Object obj) { + return _fieldExtensions.indexOf(obj); + } + + public void setFieldExtensions(List<FieldExtension> fieldExtensions) { + _fieldExtensions = fieldExtensions; + fireEvent(ListDataEvent.CONTENTS_CHANGED, -1, -1); + } + + public void addData(FieldExtension newData) { + _fieldExtensions.add(newData); + fireEvent(ListDataEvent.INTERVAL_ADDED, _fieldExtensions.size() - 1, _fieldExtensions.size() - 1); + } + + public void removeData(FieldExtension data) { + int interval = _fieldExtensions.indexOf(data); + _fieldExtensions.remove(data); + fireEvent(ListDataEvent.INTERVAL_REMOVED, interval, interval); + } + + public void reload() { + fireEvent(ListDataEvent.CONTENTS_CHANGED, -1, -1); + } +} Added: trunk/wikitty-ui-zk/src/main/java/org/nuiton/wikitty/ui/Model.java =================================================================== --- trunk/wikitty-ui-zk/src/main/java/org/nuiton/wikitty/ui/Model.java (rev 0) +++ trunk/wikitty-ui-zk/src/main/java/org/nuiton/wikitty/ui/Model.java 2010-06-18 10:19:58 UTC (rev 132) @@ -0,0 +1,67 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.nuiton.wikitty.ui; + +import java.util.ArrayList; +import java.util.List; +import org.nuiton.wikitty.Criteria; +import org.nuiton.wikitty.Wikitty; +import org.nuiton.wikitty.WikittyExtension; +import org.nuiton.wikitty.WikittyService; +import org.nuiton.wikitty.search.Element; +import org.nuiton.wikitty.search.Search; + +/** + * + * @author sherkhan + */ +public class Model { + + protected WikittyZkService _service = new WikittyZkService(); + + /* + * Create + */ + public void create(Wikitty wikitty) { + WikittyService ws = _service.getWikittyService(); + ws.store(null, wikitty); + } + + /* + * Retrieve + */ + public List<WikittyExtension> retrieveWikittyExtensions() { + WikittyService ws = _service.getWikittyService(); + List<String> ids = ws.getAllExtensionIds(null); + List<WikittyExtension> extensions = new ArrayList<WikittyExtension>(); + for (String id : ids) { + WikittyExtension wikittyExtension = ws.restoreExtension(null, id); + extensions.add(wikittyExtension); + } + return extensions; + } + + public List<Wikitty> retrieveWikittiesByExtensionName(String extensionName) { + WikittyService ws = _service.getWikittyService(); + Criteria criteria = Search.query().eq(Element.ELT_EXTENSION, extensionName).criteria(); + List<Wikitty> wikitties = ws.findAllByCriteria(null, criteria).cast(null, ws).getAll(); + return wikitties; + } + /* + * Update + */ + public void update(Wikitty wikitty) { + WikittyService ws = _service.getWikittyService(); + ws.store(null, wikitty); + } + + /* + * Delete + */ + public void deleteWikittyById(String id) { + WikittyService ws = _service.getWikittyService(); + ws.delete(null, id); + } +} Added: trunk/wikitty-ui-zk/src/main/java/org/nuiton/wikitty/ui/WikittyForm.java =================================================================== --- trunk/wikitty-ui-zk/src/main/java/org/nuiton/wikitty/ui/WikittyForm.java (rev 0) +++ trunk/wikitty-ui-zk/src/main/java/org/nuiton/wikitty/ui/WikittyForm.java 2010-06-18 10:19:58 UTC (rev 132) @@ -0,0 +1,327 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.nuiton.wikitty.ui; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Date; +import java.util.List; +import org.nuiton.wikitty.FieldType; +import org.nuiton.wikitty.FieldType.TYPE; +import org.nuiton.wikitty.Wikitty; +import org.nuiton.wikitty.WikittyExtension; +import org.zkoss.zk.ui.Component; +import org.zkoss.zul.Checkbox; +import org.zkoss.zul.Datebox; +import org.zkoss.zul.Decimalbox; +import org.zkoss.zul.Listbox; +import org.zkoss.zul.Listcell; +import org.zkoss.zul.Listitem; +import org.zkoss.zul.ListitemRenderer; +import org.zkoss.zul.Textbox; + +/** + * + * @author sherkhan + */ +public class WikittyForm { + + protected FormModel _formModel = new FormModel(); + protected List<WikittyExtension> _holdExtensions = new ArrayList<WikittyExtension>(); + protected Wikitty _wikitty = null; + + public void createModelFieldExtensions() { + List<FieldExtension> fieldExtensions = new ArrayList<FieldExtension>(); + for (WikittyExtension wikittyExtension : _holdExtensions) { + Collection<String> extensionNames = wikittyExtension.getFieldNames(); + for (String name : extensionNames) { + FieldType fieldType = wikittyExtension.getFieldType(name); + FieldExtension fieldExtension = new FieldExtension(fieldType, name, wikittyExtension); + fieldExtensions.add(fieldExtension); + } + } + _formModel.setFieldExtensions(fieldExtensions); + } + + List<Component> getComponentsByWikittyDateType(FieldExtension fieldExtension) { + List<Component> components = new ArrayList<Component>(); + FieldType fieldType = fieldExtension.getFieldType(); + String wikittyExtensionName = fieldExtension.getWikittyExtension().getName(); + if (_wikitty != null) { + if (fieldType.isCollection()) { + List<Date> dates = _wikitty.getFieldAsList(wikittyExtensionName, fieldExtension.getName(), Date.class); + for (Date date : dates) { + components.add(new Datebox(date)); + } + } else { + components.add(new Datebox(_wikitty.getFieldAsDate(wikittyExtensionName, fieldExtension.getName()))); + } + } else { + components.add(new Datebox()); + } + return components; + } + + List<Component> getComponentsByWikittyNumericType(FieldExtension fieldExtension) { + List<Component> components = new ArrayList<Component>(); + FieldType fieldType = fieldExtension.getFieldType(); + String wikittyExtensionName = fieldExtension.getWikittyExtension().getName(); + if (_wikitty != null) { + if (fieldType.isCollection()) { + List<BigDecimal> decimals = _wikitty.getFieldAsList(wikittyExtensionName, fieldExtension.getName(), BigDecimal.class); + for (BigDecimal decimal : decimals) { + components.add(new Decimalbox(decimal)); + } + } else { + components.add(new Decimalbox(_wikitty.getFieldAsBigDecimal(wikittyExtensionName, fieldExtension.getName()))); + } + } else { + components.add(new Decimalbox()); + } + return components; + } + + List<Component> getComponentsByWikittyStringType(FieldExtension fieldExtension) { + List<Component> components = new ArrayList<Component>(); + FieldType fieldType = fieldExtension.getFieldType(); + String wikittyExtensionName = fieldExtension.getWikittyExtension().getName(); + if (_wikitty != null) { + if (fieldType.isCollection()) { + List<String> strings = _wikitty.getFieldAsList(wikittyExtensionName, fieldExtension.getName(), String.class); + for (String str : strings) { + components.add(new Textbox(str)); + } + } else { + components.add(new Textbox(_wikitty.getFieldAsString(wikittyExtensionName, fieldExtension.getName()))); + } + } else { + components.add(new Textbox()); + } + return components; + } + + List<Component> getComponentsByWikittyBooleanType(FieldExtension fieldExtension) { + List<Component> components = new ArrayList<Component>(); + FieldType fieldType = fieldExtension.getFieldType(); + String wikittyExtensionName = fieldExtension.getWikittyExtension().getName(); + if (fieldExtension != null) { + if (fieldType.isCollection()) { + List<Boolean> bools = _wikitty.getFieldAsList(wikittyExtensionName, fieldExtension.getName(), Boolean.class); + for (Boolean bool : bools) { + Checkbox newCheckBox = new Checkbox(); + newCheckBox.setChecked(bool); + components.add(newCheckBox); + } + } else { + Boolean bool = _wikitty.getFieldAsBoolean(wikittyExtensionName, fieldExtension.getName()); + Checkbox newCheckBox = new Checkbox(); + newCheckBox.setChecked(bool); + components.add(newCheckBox); + } + } else { + components.add(new Checkbox()); + } + return components; + } + + protected List<Date> getSetDateByCell(Listcell cell) { + List<Date> dates = new ArrayList<Date>(); + List<Datebox> children = cell.getChildren(); + for (Datebox dateBox : children) { + Date newDate = dateBox.getValue(); + dates.add(newDate); + } + return dates; + } + + protected List<BigDecimal> getSetNumByCell(Listcell cell) { + List<BigDecimal> nums = new ArrayList<BigDecimal>(); + List<Decimalbox> children = cell.getChildren(); + for (Decimalbox decimal : children) { + BigDecimal newDecimal = decimal.getValue(); + nums.add(newDecimal); + } + return nums; + } + + protected List<String> getSetStringByCell(Listcell cell) { + List<String> strings = new ArrayList<String>(); + List<Textbox> children = cell.getChildren(); + for (Textbox textBox : children) { + String newString = textBox.getValue(); + strings.add(newString); + } + return strings; + } + + protected List<Boolean> getSetBoolByCell(Listcell cell) { + List<Boolean> booleans = new ArrayList<Boolean>(); + List<Checkbox> children = cell.getChildren(); + for (Checkbox checkBox : children) { + Boolean newBoolean = checkBox.isChecked(); + booleans.add(newBoolean); + } + return booleans; + } + + public Wikitty retriveWikittyInForm(Listbox formListBox) { + Wikitty newWikitty = null; + if (_wikitty != null) { + newWikitty = _wikitty; + } else { + newWikitty = new Wikitty(); + } + newWikitty.addExtension(_holdExtensions); + List<Listitem> items = formListBox.getItems(); + for (Listitem item : items) { + FieldExtension fieldExtension = (FieldExtension) item.getValue(); + String extensionName = fieldExtension.getWikittyExtension().getName(); + FieldType fieldType = fieldExtension.getFieldType(); + String fieldName = fieldExtension.getName(); + Listcell cell = (Listcell) item.getFellowIfAny(fieldName); + TYPE type = fieldType.getType(); + List collection = null; + if (type == TYPE.DATE) { + collection = getSetDateByCell(cell); + } else if (type == TYPE.NUMERIC) { + collection = getSetNumByCell(cell); + } else if (type == TYPE.STRING) { + collection = getSetStringByCell(cell); + } else if (type == TYPE.BOOLEAN) { + collection = getSetBoolByCell(cell); + } + if (fieldType.isCollection()) { + if (_wikitty != null) { + newWikitty.clearField(extensionName, fieldName); + } + for (Object obj : collection) { + newWikitty.addToField(extensionName, fieldName, obj); + } + } else { + newWikitty.setField(extensionName, fieldName, collection.get(0)); + } + } + return newWikitty; + } + + public void deleteInput(Listbox formListBox) { + Listitem item = formListBox.getSelectedItem(); + if (item != null) { + FieldExtension fieldExtension = (FieldExtension) item.getValue(); + FieldType fieldType = fieldExtension.getFieldType(); + if (fieldType.isCollection()) { + Listcell cell = (Listcell) item.getFellowIfAny(fieldExtension.getName()); + if (cell != null) { + List children = cell.getChildren(); + if (children.size() > 1) { + children.remove(children.size() - 1); + } + } + } + } + } + + public void addNewInput(Listbox formListBox) { + Listitem item = formListBox.getSelectedItem(); + if (item != null) { + FieldExtension fieldExtension = (FieldExtension) item.getValue(); + FieldType fieldType = fieldExtension.getFieldType(); + if (fieldType.isCollection()) { + Listcell cell = (Listcell) item.getFellowIfAny(fieldExtension.getName()); + if (cell != null) { + Component comp = cell.getFirstChild(); + cell.appendChild((Component) comp.clone()); + } + } + } + } + + public boolean isSelected() { + if (_wikitty == null) { + return false; + } + return true; + } + + public void addExtension() { + + } + + /* + * Renderer + */ + public ListitemRenderer getFieldExtensionRenderer() { + return new ListitemRenderer() { + + @Override + public void render(Listitem item, Object data) throws Exception { + item.setValue(data); + FieldExtension fieldExtension = (FieldExtension) data; + FieldType fieldType = fieldExtension.getFieldType(); + TYPE type = fieldType.getType(); + List<Component> components = new ArrayList<Component>(); + if (type == TYPE.DATE) { + components = getComponentsByWikittyDateType(fieldExtension); + } else if (type == TYPE.NUMERIC) { + components = getComponentsByWikittyNumericType(fieldExtension); + } else if (type == TYPE.STRING) { + components = getComponentsByWikittyStringType(fieldExtension); + } else if (type == TYPE.BOOLEAN) { + components = getComponentsByWikittyBooleanType(fieldExtension); + } + Listcell cell1 = new Listcell("(" + fieldExtension.getWikittyExtension().getName() + ")"); + Listcell cell2 = new Listcell(fieldExtension.getName()); + Listcell cell3 = new Listcell(); + cell3.setId(fieldExtension.getName()); + for (Component component : components) { + cell3.appendChild(component); + } + item.appendChild(cell1); + item.appendChild(cell2); + item.appendChild(cell3); + } + }; + } + + /* + * Setters + */ + public void setHoldExtensions(List<WikittyExtension> holdExtensions) { + _wikitty = null; + _holdExtensions = holdExtensions; + createModelFieldExtensions(); + } + + public void setHoldExtensions(WikittyExtension holdExtension) { + _wikitty = null; + _holdExtensions.clear(); + _holdExtensions.add(holdExtension); + createModelFieldExtensions(); + } + + public void setWikitty(Wikitty wikitty) { + _wikitty = wikitty; + if (wikitty != null) { + _holdExtensions = new ArrayList<WikittyExtension>(_wikitty.getExtensions()); + createModelFieldExtensions(); + } + } + + /* + * Getters + */ + public List<WikittyExtension> getHoldExtensions() { + return _holdExtensions; + } + + public FormModel getFormModel() { + return _formModel; + } + + public Wikitty getWikitty() { + return _wikitty; + } +} Added: trunk/wikitty-ui-zk/src/main/java/org/nuiton/wikitty/ui/WikittyModel.java =================================================================== --- trunk/wikitty-ui-zk/src/main/java/org/nuiton/wikitty/ui/WikittyModel.java (rev 0) +++ trunk/wikitty-ui-zk/src/main/java/org/nuiton/wikitty/ui/WikittyModel.java 2010-06-18 10:19:58 UTC (rev 132) @@ -0,0 +1,56 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.nuiton.wikitty.ui; + +import java.util.ArrayList; +import java.util.List; +import org.nuiton.wikitty.Wikitty; +import org.zkoss.zkplus.databind.BindingListModel; +import org.zkoss.zul.AbstractListModel; +import org.zkoss.zul.event.ListDataEvent; + +/** + * + * @author sherkhan + */ +public class WikittyModel extends AbstractListModel implements BindingListModel { + + List<Wikitty> _wikitties = new ArrayList<Wikitty>(); + + @Override + public Object getElementAt(int index) { + return _wikitties.get(index); + } + + @Override + public int getSize() { + return _wikitties.size(); + } + + @Override + public int indexOf(Object obj) { + return _wikitties.indexOf(obj); + } + + public void setWikitties(List<Wikitty> wikitties) { + _wikitties = new ArrayList<Wikitty>(wikitties); + fireEvent(ListDataEvent.CONTENTS_CHANGED, -1, -1); + } + + public void addData(Wikitty newData) { + _wikitties.add(newData); + fireEvent(ListDataEvent.INTERVAL_ADDED, _wikitties.size() - 1, _wikitties.size() - 1); + } + + public void removeData(Wikitty data) { + int interval = _wikitties.indexOf(data); + _wikitties.remove(data); + fireEvent(ListDataEvent.INTERVAL_REMOVED, interval, interval); + } + + public void reload() { + fireEvent(ListDataEvent.CONTENTS_CHANGED, -1, -1); + } +} Added: trunk/wikitty-ui-zk/src/main/java/org/nuiton/wikitty/ui/WikittyZkConfig.java =================================================================== --- trunk/wikitty-ui-zk/src/main/java/org/nuiton/wikitty/ui/WikittyZkConfig.java (rev 0) +++ trunk/wikitty-ui-zk/src/main/java/org/nuiton/wikitty/ui/WikittyZkConfig.java 2010-06-18 10:19:58 UTC (rev 132) @@ -0,0 +1,136 @@ +/* *##% + * Copyright (c) 2010 poussin. All rights reserved. + * + * 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 3 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, see <http://www.gnu.org/licenses/>. + *##%*/ +package org.nuiton.wikitty.ui; + +import static org.nuiton.i18n.I18n._; + +import java.io.File; +import org.apache.commons.lang.UnhandledException; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.util.ApplicationConfig; + +/** + * + * @author poussin + * @version $Revision$ + * + * Last update: $Date$ + * by : $Author$ + */ +public class WikittyZkConfig extends ApplicationConfig { + + /** to use log facility, just put in your code: log.info(\"...\"); */ + static private Log log = LogFactory.getLog(WikittyZkConfig.class); + /** Singleton instance. */ + protected static WikittyZkConfig instance = null; + + public WikittyZkConfig() { + super(); + + // set default option (included configuration file name : important) + for (Option o : Option.values()) { + if (o.defaultValue != null) { + setDefaultOption(o.key, o.defaultValue); + } + } + } + + public static synchronized WikittyZkConfig getInstance() { + if (instance == null) { + try { + instance = new WikittyZkConfig(); + instance.parse(new String[]{}); + instance.setDataDirInSystemProps(); + } catch (Exception e) { + throw new UnhandledException(e); + } + } + return instance; + } + + /** + * Get version as string. + * + * @return version + */ + public String getVersion() { + return getOption(Option.APPLICATION_VERSION.key); + } + + /** + * Get bow url as string. + * + * @return url + */ + public String getBowUrl() { + return getOption(Option.BOW_URL.key); + } + + public File getDataDirAsFile() { + File option = getOptionAsFile(Option.DATA_DIR.key); + return option; + } + + /** + * Set {@code solr} and {@code jms} system configuration. + * + * This is the "only" way to configure embedded solr. + */ + protected void setDataDirInSystemProps() { + String value = System.getProperty(Option.DATA_DIR.key, null); + if (value == null) { + value = getOption(Option.DATA_DIR.key); + if (log.isInfoEnabled()) { + log.info("Setting system property " + Option.DATA_DIR.key + " : " + value); + } + System.setProperty(Option.DATA_DIR.key, value); + env.put(Option.DATA_DIR.key, value); + } + } + + /** + * Vradi option definition. + */ + public static enum Option { + + CONFIG_FILE(CONFIG_FILE_NAME, _("bow.config.configFileName.description"), + "bow.properties", String.class, false, false), + APPLICATION_VERSION("application.version", _("wikitty-ui-zk.config.application.version.description"), + null, String.class, true, true), + BOW_URL("bow.url", _("wikitty-ui-zk.config.bow.url.description"), + null, String.class, false, false), + DATA_DIR("solr.data.dir", _("wikitty-ui-zk.config.data.dir.description"), + System.getProperty("user.home") + "/.bow/solr", String.class, false, false); + public final String key; + public final String description; + public final String defaultValue; + public final Class<?> type; + public final boolean isTransient; + public final boolean isFinal; + + private Option(String key, String description, String defaultValue, + Class<?> type, boolean isTransient, boolean isFinal) { + this.key = key; + this.description = description; + this.defaultValue = defaultValue; + this.type = type; + this.isFinal = isFinal; + this.isTransient = isTransient; + } + } +} Added: trunk/wikitty-ui-zk/src/main/java/org/nuiton/wikitty/ui/WikittyZkService.java =================================================================== --- trunk/wikitty-ui-zk/src/main/java/org/nuiton/wikitty/ui/WikittyZkService.java (rev 0) +++ trunk/wikitty-ui-zk/src/main/java/org/nuiton/wikitty/ui/WikittyZkService.java 2010-06-18 10:19:58 UTC (rev 132) @@ -0,0 +1,34 @@ +/* *##% + * Copyright (c) 2010 poussin. All rights reserved. + * + * 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 3 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, see <http://www.gnu.org/licenses/>. + *##%*/ +package org.nuiton.wikitty.ui; + +import org.nuiton.wikitty.WikittyService; +import org.nuiton.wikitty.jdbc.WikittyServiceJDBC; + +public class WikittyZkService { + + protected WikittyService instance; + + public WikittyZkService() { + WikittyZkConfig config = WikittyZkConfig.getInstance(); + instance = new WikittyServiceJDBC(config.getFlatOptions()); + } + + public WikittyService getWikittyService() { + return instance; + } +} Added: trunk/wikitty-ui-zk/src/main/webapp/WEB-INF/web.xml =================================================================== --- trunk/wikitty-ui-zk/src/main/webapp/WEB-INF/web.xml (rev 0) +++ trunk/wikitty-ui-zk/src/main/webapp/WEB-INF/web.xml 2010-06-18 10:19:58 UTC (rev 132) @@ -0,0 +1,64 @@ +<?xml version="1.0" encoding="UTF-8"?> +<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> + <display-name>MyApp</display-name> + + <listener> + <description>Used to cleanup when a session is destroyed</description> + <display-name>ZK Session Cleaner</display-name> + <listener-class>org.zkoss.zk.ui.http.HttpSessionListener</listener-class> + </listener> + + <servlet> + <description>The servlet loads the DSP pages.</description> + <servlet-name>dspLoader</servlet-name> + <servlet-class>org.zkoss.web.servlet.dsp.InterpreterServlet</servlet-class> + </servlet> + + <servlet> + <description>ZK loader for ZUML pages</description> + <servlet-name>zkLoader</servlet-name> + <servlet-class>org.zkoss.zk.ui.http.DHtmlLayoutServlet</servlet-class> + <init-param> + <param-name>update-uri</param-name> + <param-value>/zkau</param-value> + </init-param> + <load-on-startup>1</load-on-startup> + </servlet> + + <servlet> + <description>The asynchronous update engine for ZK</description> + <servlet-name>auEngine</servlet-name> + <servlet-class>org.zkoss.zk.au.http.DHtmlUpdateServlet</servlet-class> + </servlet> + + <servlet-mapping> + <servlet-name>dspLoader</servlet-name> + <url-pattern>*.dsp</url-pattern> + </servlet-mapping> + + <servlet-mapping> + <servlet-name>zkLoader</servlet-name> + <url-pattern>*.zul</url-pattern> + </servlet-mapping> + + <servlet-mapping> + <servlet-name>zkLoader</servlet-name> + <url-pattern>*.zhtml</url-pattern> + </servlet-mapping> + + <servlet-mapping> + <servlet-name>auEngine</servlet-name> + <url-pattern>/zkau/*</url-pattern> + </servlet-mapping> + + <welcome-file-list> + <welcome-file>index.html</welcome-file> + <welcome-file>index.htm</welcome-file> + <welcome-file>index.jsp</welcome-file> + <welcome-file>default.html</welcome-file> + <welcome-file>default.htm</welcome-file> + <welcome-file>default.jsp</welcome-file> + <welcome-file>index.zul</welcome-file> + </welcome-file-list> + +</web-app> Added: trunk/wikitty-ui-zk/src/main/webapp/WEB-INF/zk.xml =================================================================== --- trunk/wikitty-ui-zk/src/main/webapp/WEB-INF/zk.xml (rev 0) +++ trunk/wikitty-ui-zk/src/main/webapp/WEB-INF/zk.xml 2010-06-18 10:19:58 UTC (rev 132) @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<!-- + Created by ZK Studio +--> +<zk> +</zk> \ No newline at end of file Added: trunk/wikitty-ui-zk/src/main/webapp/index.zul =================================================================== --- trunk/wikitty-ui-zk/src/main/webapp/index.zul (rev 0) +++ trunk/wikitty-ui-zk/src/main/webapp/index.zul 2010-06-18 10:19:58 UTC (rev 132) @@ -0,0 +1,40 @@ +<?init class="org.zkoss.zkplus.databind.AnnotateDataBinderInit"?> + +<window id="win" title="To do list" width="800px" border="normal" apply="org.nuiton.wikitty.ui.Controller"> + + <listbox id="extensionListBox" multiple="true" rows="10" model="@{win$composer.extensions, load-after='add.onClick, update.onClick'}" + selectedItem="@{win$composer.selectedExtension}"> + + <listhead> + <listheader label="name" /> + </listhead> + + <listitem self="@{each='extension'}"> + <listcell label="@{extension.name}"/> + </listitem> + </listbox> + + <groupbox> + <caption label="extensions" /> + <listbox id="formListBox" rows="10" model="@{win$composer.wikittyForm.formModel}" itemRenderer="@{win$composer.wikittyForm.fieldExtensionRenderer}"> + <listhead sizable="true"> + <listheader label="Extension" /> + <listheader label="Type" /> + <listheader label="Content" /> + </listhead> + </listbox> + + <button id="add" label="Add" width="36px" height="24px"/> + <button id="update" label="Update" width="46px" height="24px"/> + <button id="addNewInput" label="New input" width="56px" height="24px" /> + <button id="deleteInput" label="Delete input" width="56px" height="24px" /> + </groupbox> + + <groupbox> + <caption label="wikitties" /> + <listbox id="wikittiesListBox" rows="10" model="@{win$composer.wikittyModel}" itemRenderer="@{win$composer.wikittyRenderer}" selectedItem="@{win$composer.selectedWikitty}"> + </listbox> + <button id="delete" label="Delete" width="46px" height="24px"/> + </groupbox> + +</window> \ No newline at end of file
participants (1)
-
bbrossaudï¼ users.nuiton.org