Author: nbelaevski
Date: 2010-10-28 15:01:39 -0400 (Thu, 28 Oct 2010)
New Revision: 19744
Added:
trunk/examples/iteration-demo/src/main/java/org/richfaces/demo/TreeBean.java
trunk/examples/iteration-demo/src/main/java/org/richfaces/demo/TreeNodeParser.java
trunk/examples/iteration-demo/src/main/resources/org/
trunk/examples/iteration-demo/src/main/resources/org/richfaces/
trunk/examples/iteration-demo/src/main/resources/org/richfaces/demo/
trunk/examples/iteration-demo/src/main/resources/org/richfaces/demo/plants.xml
trunk/examples/iteration-demo/src/main/webapp/resources/org.richfaces/
trunk/examples/iteration-demo/src/main/webapp/tree.xhtml
Modified:
trunk/examples/iteration-demo/src/main/webapp/index.xhtml
Log:
https://jira.jboss.org/browse/RF-9315
Added: trunk/examples/iteration-demo/src/main/java/org/richfaces/demo/TreeBean.java
===================================================================
--- trunk/examples/iteration-demo/src/main/java/org/richfaces/demo/TreeBean.java
(rev 0)
+++
trunk/examples/iteration-demo/src/main/java/org/richfaces/demo/TreeBean.java 2010-10-28
19:01:39 UTC (rev 19744)
@@ -0,0 +1,64 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2010, Red Hat, Inc. and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site:
http://www.fsf.org.
+ */
+package org.richfaces.demo;
+
+import java.io.Serializable;
+import java.util.List;
+
+import javax.annotation.PostConstruct;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.SessionScoped;
+import javax.swing.tree.TreeNode;
+
+import org.richfaces.log.LogFactory;
+import org.richfaces.log.Logger;
+
+/**
+ * @author Nick Belaevski
+ *
+ */
+@ManagedBean
+@SessionScoped
+public class TreeBean implements Serializable {
+
+ private static final long serialVersionUID = 3368885134614548497L;
+
+ private static final Logger LOGGER = LogFactory.getLogger(TreeBean.class);
+
+ private List<TreeNode> rootNodes;
+
+ @PostConstruct
+ public void init() {
+ try {
+ TreeNodeParser parser = new TreeNodeParser();
+ parser.parse(TreeBean.class.getResource("plants.xml"));
+ rootNodes = parser.getRootNodes();
+ } catch (Exception e) {
+ LOGGER.error(e.getMessage(), e);
+ }
+ }
+
+ public List<TreeNode> getRootNodes() {
+ return rootNodes;
+ }
+
+}
Added: trunk/examples/iteration-demo/src/main/java/org/richfaces/demo/TreeNodeParser.java
===================================================================
--- trunk/examples/iteration-demo/src/main/java/org/richfaces/demo/TreeNodeParser.java
(rev 0)
+++
trunk/examples/iteration-demo/src/main/java/org/richfaces/demo/TreeNodeParser.java 2010-10-28
19:01:39 UTC (rev 19744)
@@ -0,0 +1,125 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2010, Red Hat, Inc. and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site:
http://www.fsf.org.
+ */
+package org.richfaces.demo;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URL;
+import java.util.List;
+import java.util.Locale;
+
+import javax.swing.tree.TreeNode;
+
+import org.richfaces.model.SwingTreeNodeImpl;
+import org.xml.sax.Attributes;
+import org.xml.sax.ContentHandler;
+import org.xml.sax.InputSource;
+import org.xml.sax.Locator;
+import org.xml.sax.SAXException;
+import org.xml.sax.XMLReader;
+import org.xml.sax.helpers.XMLReaderFactory;
+
+import com.google.common.base.Joiner;
+import com.google.common.collect.Lists;
+import com.google.common.io.Closeables;
+
+/**
+ * @author Nick Belaevski
+ *
+ */
+public class TreeNodeParser implements ContentHandler {
+
+ private static final Joiner JOINER = Joiner.on("").skipNulls();
+
+ private XMLReader reader;
+
+ private List<TreeNode> rootNodes = Lists.newArrayList();
+
+ private SwingTreeNodeImpl<String> currentNode;
+
+ public TreeNodeParser() throws SAXException {
+ reader = XMLReaderFactory.createXMLReader();
+ }
+
+ public void parse(URL url) throws IOException, SAXException {
+ InputStream is = null;
+ try {
+ is = url.openStream();
+ reader.setContentHandler(this);
+ reader.parse(new InputSource(is));
+ } finally {
+ Closeables.closeQuietly(is);
+ }
+ }
+
+ public List<TreeNode> getRootNodes() {
+ return rootNodes;
+ }
+
+ public void setDocumentLocator(Locator locator) {
+ }
+
+ public void startDocument() throws SAXException {
+ }
+
+ public void endDocument() throws SAXException {
+ }
+
+ public void startPrefixMapping(String prefix, String uri) throws SAXException {
+ }
+
+ public void endPrefixMapping(String prefix) throws SAXException {
+ }
+
+ public void startElement(String uri, String localName, String qName, Attributes atts)
throws SAXException {
+ SwingTreeNodeImpl<String> newNode = new SwingTreeNodeImpl<String>();
+
+ if (currentNode == null) {
+ rootNodes.add(newNode);
+ } else {
+ currentNode.addChild(newNode);
+ }
+
+ currentNode.setData(JOINER.join(currentNode.getData(),
localName.toLowerCase(Locale.US), " ["));
+
+ currentNode = newNode;
+ }
+
+ public void endElement(String uri, String localName, String qName) throws
SAXException {
+ currentNode.setData(JOINER.join("]", currentNode.getData()));
+ currentNode = (SwingTreeNodeImpl) currentNode.getParent();
+ }
+
+ public void characters(char[] ch, int start, int length) throws SAXException {
+ currentNode.setData(JOINER.join(currentNode.getData(), new String(ch, start,
length)));
+ }
+
+ public void ignorableWhitespace(char[] ch, int start, int length) throws SAXException
{
+ }
+
+ public void processingInstruction(String target, String data) throws SAXException {
+ }
+
+ public void skippedEntity(String name) throws SAXException {
+ }
+
+}
Added: trunk/examples/iteration-demo/src/main/resources/org/richfaces/demo/plants.xml
===================================================================
--- trunk/examples/iteration-demo/src/main/resources/org/richfaces/demo/plants.xml
(rev 0)
+++
trunk/examples/iteration-demo/src/main/resources/org/richfaces/demo/plants.xml 2010-10-28
19:01:39 UTC (rev 19744)
@@ -0,0 +1,294 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+
+<!-- Taken from
http://www.xmlfiles.com/examples/ -->
+
+<CATALOG>
+ <PLANT>
+ <COMMON>Bloodroot</COMMON>
+ <BOTANICAL>Sanguinaria canadensis</BOTANICAL>
+ <ZONE>4</ZONE>
+ <LIGHT>Mostly Shady</LIGHT>
+ <PRICE>$2.44</PRICE>
+ <AVAILABILITY>031599</AVAILABILITY>
+ </PLANT>
+ <PLANT>
+ <COMMON>Columbine</COMMON>
+ <BOTANICAL>Aquilegia canadensis</BOTANICAL>
+ <ZONE>3</ZONE>
+ <LIGHT>Mostly Shady</LIGHT>
+ <PRICE>$9.37</PRICE>
+ <AVAILABILITY>030699</AVAILABILITY>
+ </PLANT>
+ <PLANT>
+ <COMMON>Marsh Marigold</COMMON>
+ <BOTANICAL>Caltha palustris</BOTANICAL>
+ <ZONE>4</ZONE>
+ <LIGHT>Mostly Sunny</LIGHT>
+ <PRICE>$6.81</PRICE>
+ <AVAILABILITY>051799</AVAILABILITY>
+ </PLANT>
+ <PLANT>
+ <COMMON>Cowslip</COMMON>
+ <BOTANICAL>Caltha palustris</BOTANICAL>
+ <ZONE>4</ZONE>
+ <LIGHT>Mostly Shady</LIGHT>
+ <PRICE>$9.90</PRICE>
+ <AVAILABILITY>030699</AVAILABILITY>
+ </PLANT>
+ <PLANT>
+ <COMMON>Dutchman's-Breeches</COMMON>
+ <BOTANICAL>Diecentra cucullaria</BOTANICAL>
+ <ZONE>3</ZONE>
+ <LIGHT>Mostly Shady</LIGHT>
+ <PRICE>$6.44</PRICE>
+ <AVAILABILITY>012099</AVAILABILITY>
+ </PLANT>
+ <PLANT>
+ <COMMON>Ginger, Wild</COMMON>
+ <BOTANICAL>Asarum canadense</BOTANICAL>
+ <ZONE>3</ZONE>
+ <LIGHT>Mostly Shady</LIGHT>
+ <PRICE>$9.03</PRICE>
+ <AVAILABILITY>041899</AVAILABILITY>
+ </PLANT>
+ <PLANT>
+ <COMMON>Hepatica</COMMON>
+ <BOTANICAL>Hepatica americana</BOTANICAL>
+ <ZONE>4</ZONE>
+ <LIGHT>Mostly Shady</LIGHT>
+ <PRICE>$4.45</PRICE>
+ <AVAILABILITY>012699</AVAILABILITY>
+ </PLANT>
+ <PLANT>
+ <COMMON>Liverleaf</COMMON>
+ <BOTANICAL>Hepatica americana</BOTANICAL>
+ <ZONE>4</ZONE>
+ <LIGHT>Mostly Shady</LIGHT>
+ <PRICE>$3.99</PRICE>
+ <AVAILABILITY>010299</AVAILABILITY>
+ </PLANT>
+ <PLANT>
+ <COMMON>Jack-In-The-Pulpit</COMMON>
+ <BOTANICAL>Arisaema triphyllum</BOTANICAL>
+ <ZONE>4</ZONE>
+ <LIGHT>Mostly Shady</LIGHT>
+ <PRICE>$3.23</PRICE>
+ <AVAILABILITY>020199</AVAILABILITY>
+ </PLANT>
+ <PLANT>
+ <COMMON>Mayapple</COMMON>
+ <BOTANICAL>Podophyllum peltatum</BOTANICAL>
+ <ZONE>3</ZONE>
+ <LIGHT>Mostly Shady</LIGHT>
+ <PRICE>$2.98</PRICE>
+ <AVAILABILITY>060599</AVAILABILITY>
+ </PLANT>
+ <PLANT>
+ <COMMON>Phlox, Woodland</COMMON>
+ <BOTANICAL>Phlox divaricata</BOTANICAL>
+ <ZONE>3</ZONE>
+ <LIGHT>Sun or Shade</LIGHT>
+ <PRICE>$2.80</PRICE>
+ <AVAILABILITY>012299</AVAILABILITY>
+ </PLANT>
+ <PLANT>
+ <COMMON>Phlox, Blue</COMMON>
+ <BOTANICAL>Phlox divaricata</BOTANICAL>
+ <ZONE>3</ZONE>
+ <LIGHT>Sun or Shade</LIGHT>
+ <PRICE>$5.59</PRICE>
+ <AVAILABILITY>021699</AVAILABILITY>
+ </PLANT>
+ <PLANT>
+ <COMMON>Spring-Beauty</COMMON>
+ <BOTANICAL>Claytonia Virginica</BOTANICAL>
+ <ZONE>7</ZONE>
+ <LIGHT>Mostly Shady</LIGHT>
+ <PRICE>$6.59</PRICE>
+ <AVAILABILITY>020199</AVAILABILITY>
+ </PLANT>
+ <PLANT>
+ <COMMON>Trillium</COMMON>
+ <BOTANICAL>Trillium grandiflorum</BOTANICAL>
+ <ZONE>5</ZONE>
+ <LIGHT>Sun or Shade</LIGHT>
+ <PRICE>$3.90</PRICE>
+ <AVAILABILITY>042999</AVAILABILITY>
+ </PLANT>
+ <PLANT>
+ <COMMON>Wake Robin</COMMON>
+ <BOTANICAL>Trillium grandiflorum</BOTANICAL>
+ <ZONE>5</ZONE>
+ <LIGHT>Sun or Shade</LIGHT>
+ <PRICE>$3.20</PRICE>
+ <AVAILABILITY>022199</AVAILABILITY>
+ </PLANT>
+ <PLANT>
+ <COMMON>Violet, Dog-Tooth</COMMON>
+ <BOTANICAL>Erythronium americanum</BOTANICAL>
+ <ZONE>4</ZONE>
+ <LIGHT>Shade</LIGHT>
+ <PRICE>$9.04</PRICE>
+ <AVAILABILITY>020199</AVAILABILITY>
+ </PLANT>
+ <PLANT>
+ <COMMON>Trout Lily</COMMON>
+ <BOTANICAL>Erythronium americanum</BOTANICAL>
+ <ZONE>4</ZONE>
+ <LIGHT>Shade</LIGHT>
+ <PRICE>$6.94</PRICE>
+ <AVAILABILITY>032499</AVAILABILITY>
+ </PLANT>
+ <PLANT>
+ <COMMON>Adder's-Tongue</COMMON>
+ <BOTANICAL>Erythronium americanum</BOTANICAL>
+ <ZONE>4</ZONE>
+ <LIGHT>Shade</LIGHT>
+ <PRICE>$9.58</PRICE>
+ <AVAILABILITY>041399</AVAILABILITY>
+ </PLANT>
+ <PLANT>
+ <COMMON>Anemone</COMMON>
+ <BOTANICAL>Anemone blanda</BOTANICAL>
+ <ZONE>6</ZONE>
+ <LIGHT>Mostly Shady</LIGHT>
+ <PRICE>$8.86</PRICE>
+ <AVAILABILITY>122698</AVAILABILITY>
+ </PLANT>
+ <PLANT>
+ <COMMON>Grecian Windflower</COMMON>
+ <BOTANICAL>Anemone blanda</BOTANICAL>
+ <ZONE>6</ZONE>
+ <LIGHT>Mostly Shady</LIGHT>
+ <PRICE>$9.16</PRICE>
+ <AVAILABILITY>071099</AVAILABILITY>
+ </PLANT>
+ <PLANT>
+ <COMMON>Bee Balm</COMMON>
+ <BOTANICAL>Monarda didyma</BOTANICAL>
+ <ZONE>4</ZONE>
+ <LIGHT>Shade</LIGHT>
+ <PRICE>$4.59</PRICE>
+ <AVAILABILITY>050399</AVAILABILITY>
+ </PLANT>
+ <PLANT>
+ <COMMON>Bergamont</COMMON>
+ <BOTANICAL>Monarda didyma</BOTANICAL>
+ <ZONE>4</ZONE>
+ <LIGHT>Shade</LIGHT>
+ <PRICE>$7.16</PRICE>
+ <AVAILABILITY>042799</AVAILABILITY>
+ </PLANT>
+ <PLANT>
+ <COMMON>Black-Eyed Susan</COMMON>
+ <BOTANICAL>Rudbeckia hirta</BOTANICAL>
+ <ZONE>Annual</ZONE>
+ <LIGHT>Sunny</LIGHT>
+ <PRICE>$9.80</PRICE>
+ <AVAILABILITY>061899</AVAILABILITY>
+ </PLANT>
+ <PLANT>
+ <COMMON>Buttercup</COMMON>
+ <BOTANICAL>Ranunculus</BOTANICAL>
+ <ZONE>4</ZONE>
+ <LIGHT>Shade</LIGHT>
+ <PRICE>$2.57</PRICE>
+ <AVAILABILITY>061099</AVAILABILITY>
+ </PLANT>
+ <PLANT>
+ <COMMON>Crowfoot</COMMON>
+ <BOTANICAL>Ranunculus</BOTANICAL>
+ <ZONE>4</ZONE>
+ <LIGHT>Shade</LIGHT>
+ <PRICE>$9.34</PRICE>
+ <AVAILABILITY>040399</AVAILABILITY>
+ </PLANT>
+ <PLANT>
+ <COMMON>Butterfly Weed</COMMON>
+ <BOTANICAL>Asclepias tuberosa</BOTANICAL>
+ <ZONE>Annual</ZONE>
+ <LIGHT>Sunny</LIGHT>
+ <PRICE>$2.78</PRICE>
+ <AVAILABILITY>063099</AVAILABILITY>
+ </PLANT>
+ <PLANT>
+ <COMMON>Cinquefoil</COMMON>
+ <BOTANICAL>Potentilla</BOTANICAL>
+ <ZONE>Annual</ZONE>
+ <LIGHT>Shade</LIGHT>
+ <PRICE>$7.06</PRICE>
+ <AVAILABILITY>052599</AVAILABILITY>
+ </PLANT>
+ <PLANT>
+ <COMMON>Primrose</COMMON>
+ <BOTANICAL>Oenothera</BOTANICAL>
+ <ZONE>3 - 5</ZONE>
+ <LIGHT>Sunny</LIGHT>
+ <PRICE>$6.56</PRICE>
+ <AVAILABILITY>013099</AVAILABILITY>
+ </PLANT>
+ <PLANT>
+ <COMMON>Gentian</COMMON>
+ <BOTANICAL>Gentiana</BOTANICAL>
+ <ZONE>4</ZONE>
+ <LIGHT>Sun or Shade</LIGHT>
+ <PRICE>$7.81</PRICE>
+ <AVAILABILITY>051899</AVAILABILITY>
+ </PLANT>
+ <PLANT>
+ <COMMON>Blue Gentian</COMMON>
+ <BOTANICAL>Gentiana</BOTANICAL>
+ <ZONE>4</ZONE>
+ <LIGHT>Sun or Shade</LIGHT>
+ <PRICE>$8.56</PRICE>
+ <AVAILABILITY>050299</AVAILABILITY>
+ </PLANT>
+ <PLANT>
+ <COMMON>Jacob's Ladder</COMMON>
+ <BOTANICAL>Polemonium caeruleum</BOTANICAL>
+ <ZONE>Annual</ZONE>
+ <LIGHT>Shade</LIGHT>
+ <PRICE>$9.26</PRICE>
+ <AVAILABILITY>022199</AVAILABILITY>
+ </PLANT>
+ <PLANT>
+ <COMMON>Greek Valerian</COMMON>
+ <BOTANICAL>Polemonium caeruleum</BOTANICAL>
+ <ZONE>Annual</ZONE>
+ <LIGHT>Shade</LIGHT>
+ <PRICE>$4.36</PRICE>
+ <AVAILABILITY>071499</AVAILABILITY>
+ </PLANT>
+ <PLANT>
+ <COMMON>California Poppy</COMMON>
+ <BOTANICAL>Eschscholzia californica</BOTANICAL>
+ <ZONE>Annual</ZONE>
+ <LIGHT>Sun</LIGHT>
+ <PRICE>$7.89</PRICE>
+ <AVAILABILITY>032799</AVAILABILITY>
+ </PLANT>
+ <PLANT>
+ <COMMON>Shooting Star</COMMON>
+ <BOTANICAL>Dodecatheon</BOTANICAL>
+ <ZONE>Annual</ZONE>
+ <LIGHT>Mostly Shady</LIGHT>
+ <PRICE>$8.60</PRICE>
+ <AVAILABILITY>051399</AVAILABILITY>
+ </PLANT>
+ <PLANT>
+ <COMMON>Snakeroot</COMMON>
+ <BOTANICAL>Cimicifuga</BOTANICAL>
+ <ZONE>Annual</ZONE>
+ <LIGHT>Shade</LIGHT>
+ <PRICE>$5.63</PRICE>
+ <AVAILABILITY>071199</AVAILABILITY>
+ </PLANT>
+ <PLANT>
+ <COMMON>Cardinal Flower</COMMON>
+ <BOTANICAL>Lobelia cardinalis</BOTANICAL>
+ <ZONE>2</ZONE>
+ <LIGHT>Shade</LIGHT>
+ <PRICE>$3.02</PRICE>
+ <AVAILABILITY>022299</AVAILABILITY>
+ </PLANT>
+</CATALOG>
Modified: trunk/examples/iteration-demo/src/main/webapp/index.xhtml
===================================================================
--- trunk/examples/iteration-demo/src/main/webapp/index.xhtml 2010-10-28 19:01:33 UTC (rev
19743)
+++ trunk/examples/iteration-demo/src/main/webapp/index.xhtml 2010-10-28 19:01:39 UTC (rev
19744)
@@ -13,6 +13,7 @@
<li><h:link
outcome="dataGrid">rich:DataGrid</h:link></li>
<li><h:link outcome="filteringAndSorting">filtering and sorting
feature</h:link></li>
<li><h:link outcome="list">rich:list</h:link></li>
+ <li><h:link outcome="tree">rich:tree</h:link></li>
</ul>
Added: trunk/examples/iteration-demo/src/main/webapp/tree.xhtml
===================================================================
--- trunk/examples/iteration-demo/src/main/webapp/tree.xhtml (rev
0)
+++ trunk/examples/iteration-demo/src/main/webapp/tree.xhtml 2010-10-28 19:01:39 UTC (rev
19744)
@@ -0,0 +1,22 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html
xmlns="http://www.w3.org/1999/xhtml"
+
xmlns:h="http://java.sun.com/jsf/html"
+
xmlns:f="http://java.sun.com/jsf/core"
+
xmlns:ui="http://java.sun.com/jsf/facelets"
+
xmlns:it="http://richfaces.org/iteration">
+<f:view contentType="text/html" />
+
+<h:head>
+ <title>Richfaces Tree</title>
+</h:head>
+
+<h:body>
+ <it:tree id="tree" var="node"
value="#{treeBean.rootNodes}">
+ <it:treeNode>
+ <h:panelGroup id="group">
+ #{node.data}
+ </h:panelGroup>
+ </it:treeNode>
+ </it:tree>
+</h:body>
+</html>