JBoss Rich Faces SVN: r1995 - trunk/samples/richfaces-demo/src/main/webapp/richfaces/keepAlive.
by richfaces-svn-commits@lists.jboss.org
Author: SergeySmirnov
Date: 2007-08-01 19:59:53 -0400 (Wed, 01 Aug 2007)
New Revision: 1995
Modified:
trunk/samples/richfaces-demo/src/main/webapp/richfaces/keepAlive/usage.xhtml
Log:
keepAlive
Modified: trunk/samples/richfaces-demo/src/main/webapp/richfaces/keepAlive/usage.xhtml
===================================================================
--- trunk/samples/richfaces-demo/src/main/webapp/richfaces/keepAlive/usage.xhtml 2007-08-01 23:28:02 UTC (rev 1994)
+++ trunk/samples/richfaces-demo/src/main/webapp/richfaces/keepAlive/usage.xhtml 2007-08-01 23:59:53 UTC (rev 1995)
@@ -7,6 +7,12 @@
xmlns:rich="http://richfaces.ajax4jsf.org/rich">
<ui:composition template="/templates/component-sample.xhtml">
<ui:define name="sample">
+ <style type="text/css">
+ .pcolumn {
+ padding:10px;
+ vertical-align:top;
+ }
+ </style>
<p>
a4j:keepAlive extends the live cycle for request scope beans. In general, each Ajax
request works inside the own request scope. Therefore, the state of the component
@@ -32,6 +38,74 @@
will send from this page.
</p>
<div class="sample-container" >
+ <h:panelGrid columns="2" width="100%" columnClasses="pcolumn">
+
+ <f:verbatim>
+ This example will not work properly. The expression for 'enabled' attribute
+ equals true only after UPDATE model phase when the rsBean properties are
+ updated with submitted values. So, the component is rendered as enabled
+ on the RENDER RESPONSE phase.<br />
+ However, those values do not make sence during the next Ajax request. The
+ rsBean is created from scratch as soon as it is a new request. JSF makes a
+ decision what is process on the second (APPLY VALUES) phase. At this moment,
+ the expression for 'disabled' still equals false. Therefore, the processing
+ for button is bypassed. The action does not invoked as a result.
+ phase
+ </f:verbatim>
+
+ <f:verbatim>
+ This example will work like expected. The code is almost the same as for
+ example on the left. Used managed been is based on the same class. The only
+ difference is <b>a4j:keepAlive beanName="rsBean2"</b>. This statment
+ declares to keep the value of the rsBean2 between the Ajax requests.<br/>
+ The rsBean2 is still a request scope bean as it is defined in the
+ faces-config.xml file. a4j:keepAlive stores the rsBean at the end of the
+ JSF lifecycle. At the beginning of the next cycle, it updates with
+ the rsBean2 with the stored data. Therefore, the expression for 'disabled'
+ equals true on the second phase. The button is processed and the action is
+ invoked.
+ </f:verbatim>
+
+
+ <h:panelGroup>
+ <h:form>
+ <h:inputText size="4" label="First Addent" value="#{rsBean.addent1}">
+ <a4j:support event="onkeyup" reRender="btn" />
+ </h:inputText>
+ <h:outputText value="+"/>
+ <h:inputText size="4" label="Second Addent" value="#{rsBean.addent2}">
+ <a4j:support event="onkeyup" reRender="btn" />
+ </h:inputText>
+ <a4j:commandButton style="margin:0 5px" id="btn" action="#{rsBean.doSum}"
+ value="=" reRender="sum"
+ disabled="#{rsBean.addent1 == null or rsBean.addent2==null}"/>
+ <h:outputText id="sum" value="#{rsBean.sum}" />
+ </h:form>
+ </h:panelGroup>
+
+ <h:panelGroup>
+ <a4j:keepAlive beanName="rsBean2" />
+ <h:form>
+ <h:inputText size="4" label="First Addent" value="#{rsBean2.addent1}">
+ <a4j:support event="onkeyup" reRender="btn2" />
+ </h:inputText>
+ <h:outputText value="+"/>
+ <h:inputText size="4" label="Second Addent" value="#{rsBean2.addent2}">
+ <a4j:support event="onkeyup" reRender="btn2" />
+ </h:inputText>
+ <a4j:commandButton style="margin:0 5px" id="btn2" action="#{rsBean2.doSum}"
+ value="=" reRender="sum2"
+ disabled="#{rsBean2.addent1 == null or rsBean2.addent2==null}"/>
+ <h:outputText id="sum2" value="#{rsBean2.sum}" />
+ </h:form>
+ <a4j:outputPanel ajaxRendered="true">
+ <h:messages />
+ </a4j:outputPanel>
+ </h:panelGroup>
+
+
+
+ </h:panelGrid>
</div>
</ui:define>
<ui:define name="sources">
16 years, 8 months
JBoss Rich Faces SVN: r1994 - trunk/framework/api/src/main/java/org/richfaces/model.
by richfaces-svn-commits@lists.jboss.org
Author: nbelaevski
Date: 2007-08-01 19:28:02 -0400 (Wed, 01 Aug 2007)
New Revision: 1994
Modified:
trunk/framework/api/src/main/java/org/richfaces/model/StackingTreeModel.java
Log:
- Taglib URIs updated
- Missing StackingTreeModel$Key hashCode(...) & equals(...) methods added
Modified: trunk/framework/api/src/main/java/org/richfaces/model/StackingTreeModel.java
===================================================================
--- trunk/framework/api/src/main/java/org/richfaces/model/StackingTreeModel.java 2007-08-01 23:27:57 UTC (rev 1993)
+++ trunk/framework/api/src/main/java/org/richfaces/model/StackingTreeModel.java 2007-08-01 23:28:02 UTC (rev 1994)
@@ -223,33 +223,41 @@
Range range, ListRowKey argumentKey, Object argument,
boolean last) throws IOException {
- if (argumentKey != null) {
- getRoot().setRowKey(argumentKey);
- processElement(context, dataVisitor, argument, argumentKey, last);
- getRoot().setRowKey(argumentKey);
- } else {
- getRoot().setRowKey(argumentKey);
- }
+ TreeRange treeRange = (TreeRange) range;
+
+ if (treeRange == null || treeRange.processNode(argumentKey)) {
+ if (argumentKey != null) {
+ getRoot().setRowKey(argumentKey);
+ processElement(context, dataVisitor, argument, argumentKey, last);
+ getRoot().setRowKey(argumentKey);
+ } else {
+ getRoot().setRowKey(argumentKey);
+ }
- ShiftingDataVisitor shiftingDataVisitor = new ShiftingDataVisitor(
- new Visitor1(dataVisitor));
- Iterator iterator = StackingTreeModel.this.getModels().entrySet().iterator();
- while (iterator.hasNext()) {
- Map.Entry entry = (Map.Entry) iterator.next();
- StackingTreeModel model = (StackingTreeModel) entry.getValue();
+ ShiftingDataVisitor shiftingDataVisitor = new ShiftingDataVisitor(
+ new Visitor1(dataVisitor));
+
+ if (treeRange == null || treeRange.processChildren(argumentKey)) {
+ Iterator iterator = StackingTreeModel.this.getModels().entrySet().iterator();
+ while (iterator.hasNext()) {
+ Map.Entry entry = (Map.Entry) iterator.next();
+ StackingTreeModel model = (StackingTreeModel) entry.getValue();
- Argument argument2 = new Argument();
- argument2.listRowKey = argumentKey;
- argument2.argument = argument;
- // setup current model
- argument2.model = model;
- argument2.range = range;
- model.getDataModel().walk(context, shiftingDataVisitor, null,
- argument2);
+ Argument argument2 = new Argument();
+ argument2.listRowKey = argumentKey;
+ argument2.argument = argument;
+ // setup current model
+ argument2.model = model;
+ argument2.range = range;
+ model.getDataModel().walk(context, shiftingDataVisitor, null,
+ argument2);
+ }
+
+ }
+
+ shiftingDataVisitor.end(context);
}
-
- shiftingDataVisitor.end(context);
}
public Map getModels() {
@@ -435,6 +443,37 @@
public String toString() {
return this.modelId + ":" + this.modelKey;
}
+
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result
+ + ((modelId == null) ? 0 : modelId.hashCode());
+ result = prime * result
+ + ((modelKey == null) ? 0 : modelKey.hashCode());
+ return result;
+ }
+
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ final Key other = (Key) obj;
+ if (modelId == null) {
+ if (other.modelId != null)
+ return false;
+ } else if (!modelId.equals(other.modelId))
+ return false;
+ if (modelKey == null) {
+ if (other.modelKey != null)
+ return false;
+ } else if (!modelKey.equals(other.modelKey))
+ return false;
+ return true;
+ }
}
public void addTreeComponentModelListener(
16 years, 8 months
JBoss Rich Faces SVN: r1993 - trunk/samples/treeModelDemo/src/main/webapp/pages.
by richfaces-svn-commits@lists.jboss.org
Author: nbelaevski
Date: 2007-08-01 19:27:57 -0400 (Wed, 01 Aug 2007)
New Revision: 1993
Modified:
trunk/samples/treeModelDemo/src/main/webapp/pages/index.jsp
Log:
- Taglib URIs updated
- Missing StackingTreeModel$Key hashCode(...) & equals(...) methods added
Modified: trunk/samples/treeModelDemo/src/main/webapp/pages/index.jsp
===================================================================
--- trunk/samples/treeModelDemo/src/main/webapp/pages/index.jsp 2007-08-01 23:27:49 UTC (rev 1992)
+++ trunk/samples/treeModelDemo/src/main/webapp/pages/index.jsp 2007-08-01 23:27:57 UTC (rev 1993)
@@ -1,7 +1,7 @@
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
-<%@ taglib uri="http://labs.jboss.com/jbossrichfaces/ui/ui/treeModel" prefix="model" %>
+<%@ taglib uri="http://labs.jboss.com/jbossrichfaces/ui/treeModel" prefix="model" %>
<%@ taglib uri="http://labs.jboss.com/jbossrichfaces/ui/tree" prefix="tree" %>
<html>
@@ -11,7 +11,7 @@
<body>
<f:view>
<h:form>
- <tree:tree adviseNodeOpened="#{treeModelBean.adviseNodeOpened}" switchType="client">
+ <tree:tree adviseNodeOpened="#{treeModelBean.adviseNodeOpened}" switchType="ajax">
<model:treeNodes id="project" nodes="#{loaderBean.projects}" var="project">
<tree:treeNode>
<h:commandLink action="#{project.click}" value="Project: #{project.name}" />
16 years, 8 months
JBoss Rich Faces SVN: r1991 - trunk/samples/tabPanelDemo/src/main/webapp/pages.
by richfaces-svn-commits@lists.jboss.org
Author: dbiatenia
Date: 2007-08-01 15:46:31 -0400 (Wed, 01 Aug 2007)
New Revision: 1991
Modified:
trunk/samples/tabPanelDemo/src/main/webapp/pages/index.jsp
Log:
Modified: trunk/samples/tabPanelDemo/src/main/webapp/pages/index.jsp
===================================================================
--- trunk/samples/tabPanelDemo/src/main/webapp/pages/index.jsp 2007-08-01 17:33:17 UTC (rev 1990)
+++ trunk/samples/tabPanelDemo/src/main/webapp/pages/index.jsp 2007-08-01 19:46:31 UTC (rev 1991)
@@ -8,47 +8,8 @@
<head>
<title></title>
<style type="text/css">
- .italic {
- font-style: italic;
- }
-
- .tabClass {
- font-size: 16px;
- font-family: fantasy;
- color:red;
- }
-
- .rich-tab-active {
- font-size: 16px;
- font-family: fantasy;
- color:purple;
- }
-
- .rich-tab-inactive {
- font-size: 14px;
- font-family: fantasy;
- color:green;
- }
-
- .rich-tab-disabled {
- font-size: 12px;
- font-family: fantasy;
- color:gold;
- }
-
- .rich-tabhdr-cell-inactive, .rich-tabhdr-cell-disabled {
-
- }
-
- .rich-tabpanel-content-position {
- top: 0px;
- }
-/*
- .rich-tabpanel-content {
- border-width: 2px;
- border-color:red;
- }
-*/
+
+
</style>
</head>
<body bgcolor="white">
16 years, 8 months
JBoss Rich Faces SVN: r1990 - in trunk: samples and 7 other directories.
by richfaces-svn-commits@lists.jboss.org
Author: nbelaevski
Date: 2007-08-01 13:33:17 -0400 (Wed, 01 Aug 2007)
New Revision: 1990
Modified:
trunk/framework/api/src/main/java/org/richfaces/model/StackingTreeModel.java
trunk/samples/calendar-sample/pom.xml
trunk/samples/pom.xml
trunk/samples/treeModelDemo/pom.xml
trunk/sandbox/samples/pom.xml
trunk/sandbox/ui/pom.xml
trunk/ui/calendar/pom.xml
trunk/ui/pom.xml
trunk/ui/treeModel/pom.xml
Log:
Calendar & TreeModel moved from sandbox to head
StackingTreeModel.java updated to return rowData
Modified: trunk/framework/api/src/main/java/org/richfaces/model/StackingTreeModel.java
===================================================================
--- trunk/framework/api/src/main/java/org/richfaces/model/StackingTreeModel.java 2007-08-01 17:24:40 UTC (rev 1989)
+++ trunk/framework/api/src/main/java/org/richfaces/model/StackingTreeModel.java 2007-08-01 17:33:17 UTC (rev 1990)
@@ -396,11 +396,12 @@
* @see javax.faces.model.DataModel#getRowData()
*/
public Object getRowData() {
-// if (stackingTreeModel != null && stackingTreeModel != this) {
-// return stackingTreeModel.getRowData();
-// }
+ if (stackEntries.isEmpty()) {
+ return null;
+ }
- return this.rowData;
+ StackEntry lastEntry = (StackEntry) stackEntries.getLast();
+ return lastEntry.model.rowData;
}
/*
Modified: trunk/samples/calendar-sample/pom.xml
===================================================================
--- trunk/samples/calendar-sample/pom.xml 2007-08-01 17:24:40 UTC (rev 1989)
+++ trunk/samples/calendar-sample/pom.xml 2007-08-01 17:33:17 UTC (rev 1990)
@@ -1,7 +1,7 @@
<?xml version="1.0"?><project>
<parent>
<artifactId>samples</artifactId>
- <groupId>org.richfaces.sandbox</groupId>
+ <groupId>org.richfaces</groupId>
<version>3.1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
@@ -10,7 +10,7 @@
<name>calendar-sample Maven Webapp</name>
<dependencies>
<dependency>
- <groupId>org.richfaces.sandbox.ui</groupId>
+ <groupId>org.richfaces.ui</groupId>
<artifactId>calendar</artifactId>
<version>3.1.0-SNAPSHOT</version>
</dependency>
Modified: trunk/samples/pom.xml
===================================================================
--- trunk/samples/pom.xml 2007-08-01 17:24:40 UTC (rev 1989)
+++ trunk/samples/pom.xml 2007-08-01 17:33:17 UTC (rev 1990)
@@ -436,6 +436,8 @@
<module>richfaces-demo</module>
<module>dropdownmenu-sample</module>
<module>tooltip-sample</module>
+ <module>calendar-sample</module>
+ <module>treeModelDemo</module>
<!--
<module>ajaxPortlet</module>
-->
Modified: trunk/samples/treeModelDemo/pom.xml
===================================================================
--- trunk/samples/treeModelDemo/pom.xml 2007-08-01 17:24:40 UTC (rev 1989)
+++ trunk/samples/treeModelDemo/pom.xml 2007-08-01 17:33:17 UTC (rev 1990)
@@ -1,7 +1,7 @@
<?xml version="1.0"?><project>
<parent>
<artifactId>samples</artifactId>
- <groupId>org.richfaces.sandbox</groupId>
+ <groupId>org.richfaces</groupId>
<version>3.1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
@@ -10,7 +10,7 @@
<name>Tree Model Maven Webapp</name>
<dependencies>
<dependency>
- <groupId>org.richfaces.sandbox.ui</groupId>
+ <groupId>org.richfaces.ui</groupId>
<artifactId>treeModel</artifactId>
<version>3.1.0-SNAPSHOT</version>
</dependency>
Modified: trunk/sandbox/samples/pom.xml
===================================================================
--- trunk/sandbox/samples/pom.xml 2007-08-01 17:24:40 UTC (rev 1989)
+++ trunk/sandbox/samples/pom.xml 2007-08-01 17:33:17 UTC (rev 1990)
@@ -13,11 +13,9 @@
<name>RichFaces Sandbox Components Examples</name>
<modules>
- <module>calendar-sample</module>
<module>scrollable-grid-demo</module>
<module>panel2-sample</module>
<module>simpleTogglePanel2-sample</module>
<module>rich-message-demo </module>
- <module>treeModelDemo</module>
</modules>
</project>
\ No newline at end of file
Modified: trunk/sandbox/ui/pom.xml
===================================================================
--- trunk/sandbox/ui/pom.xml 2007-08-01 17:24:40 UTC (rev 1989)
+++ trunk/sandbox/ui/pom.xml 2007-08-01 17:33:17 UTC (rev 1990)
@@ -12,11 +12,9 @@
<artifactId>ui</artifactId>
<name>Richfaces Sandbox UI</name>
<modules>
- <module>calendar</module>
<module>panel2</module>
<module>scrollable-grid</module>
<module>simpleTogglePanel2</module>
<module>message</module>
- <module>treeModel</module>
</modules>
</project>
\ No newline at end of file
Modified: trunk/ui/calendar/pom.xml
===================================================================
--- trunk/ui/calendar/pom.xml 2007-08-01 17:24:40 UTC (rev 1989)
+++ trunk/ui/calendar/pom.xml 2007-08-01 17:33:17 UTC (rev 1990)
@@ -2,11 +2,11 @@
<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/maven-v4_0_0.xsd">
<parent>
<artifactId>ui</artifactId>
- <groupId>org.richfaces.sandbox</groupId>
+ <groupId>org.richfaces</groupId>
<version>3.1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
- <groupId>org.richfaces.sandbox.ui</groupId>
+ <groupId>org.richfaces.ui</groupId>
<artifactId>calendar</artifactId>
<name>Calendar</name>
<build>
Modified: trunk/ui/pom.xml
===================================================================
--- trunk/ui/pom.xml 2007-08-01 17:24:40 UTC (rev 1989)
+++ trunk/ui/pom.xml 2007-08-01 17:33:17 UTC (rev 1990)
@@ -81,6 +81,8 @@
<module>dropdown-menu</module>
<module>tooltip</module>
<module>panelmenu</module>
+ <module>calendar</module>
+ <module>treeModel</module>
</modules>
<dependencies>
<dependency>
Modified: trunk/ui/treeModel/pom.xml
===================================================================
--- trunk/ui/treeModel/pom.xml 2007-08-01 17:24:40 UTC (rev 1989)
+++ trunk/ui/treeModel/pom.xml 2007-08-01 17:33:17 UTC (rev 1990)
@@ -2,11 +2,11 @@
<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/maven-v4_0_0.xsd">
<parent>
<artifactId>ui</artifactId>
- <groupId>org.richfaces.sandbox</groupId>
+ <groupId>org.richfaces</groupId>
<version>3.1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
- <groupId>org.richfaces.sandbox.ui</groupId>
+ <groupId>org.richfaces.ui</groupId>
<artifactId>treeModel</artifactId>
<name>Tree Model</name>
<build>
16 years, 8 months
JBoss Rich Faces SVN: r1989 - trunk/ui/tabPanel/src/main/resources/org/richfaces/renderkit/html/css.
by richfaces-svn-commits@lists.jboss.org
Author: dbiatenia
Date: 2007-08-01 13:24:40 -0400 (Wed, 01 Aug 2007)
New Revision: 1989
Modified:
trunk/ui/tabPanel/src/main/resources/org/richfaces/renderkit/html/css/tabPanel.xcss
Log:
RF-520
Modified: trunk/ui/tabPanel/src/main/resources/org/richfaces/renderkit/html/css/tabPanel.xcss
===================================================================
--- trunk/ui/tabPanel/src/main/resources/org/richfaces/renderkit/html/css/tabPanel.xcss 2007-08-01 17:02:00 UTC (rev 1988)
+++ trunk/ui/tabPanel/src/main/resources/org/richfaces/renderkit/html/css/tabPanel.xcss 2007-08-01 17:24:40 UTC (rev 1989)
@@ -134,7 +134,6 @@
}
.dr-tbpnl-cntnt-pstn {
- top: -1px;
height:100%;
}
</f:verbatim>
16 years, 8 months
JBoss Rich Faces SVN: r1988 - in trunk: sandbox/samples and 2 other directories.
by richfaces-svn-commits@lists.jboss.org
Author: nbelaevski
Date: 2007-08-01 13:02:00 -0400 (Wed, 01 Aug 2007)
New Revision: 1988
Added:
trunk/samples/calendar-sample/
trunk/samples/treeModelDemo/
trunk/ui/calendar/
trunk/ui/treeModel/
Removed:
trunk/sandbox/samples/calendar-sample/
trunk/sandbox/samples/treeModelDemo/
trunk/sandbox/ui/calendar/
trunk/sandbox/ui/treeModel/
Log:
Calendar & TreeModel moved from sandbox to head
Copied: trunk/samples/calendar-sample (from rev 1987, trunk/sandbox/samples/calendar-sample)
Copied: trunk/samples/treeModelDemo (from rev 1987, trunk/sandbox/samples/treeModelDemo)
Copied: trunk/ui/calendar (from rev 1987, trunk/sandbox/ui/calendar)
Copied: trunk/ui/treeModel (from rev 1987, trunk/sandbox/ui/treeModel)
16 years, 8 months
JBoss Rich Faces SVN: r1987 - trunk/sandbox/ui/scrollable-grid/src/main/resources/org/richfaces/renderkit/html/css.
by richfaces-svn-commits@lists.jboss.org
Author: sergeyhalipov
Date: 2007-08-01 12:52:51 -0400 (Wed, 01 Aug 2007)
New Revision: 1987
Modified:
trunk/sandbox/ui/scrollable-grid/src/main/resources/org/richfaces/renderkit/html/css/grid.xcss
Log:
Skinning for scrollable grid.
Modified: trunk/sandbox/ui/scrollable-grid/src/main/resources/org/richfaces/renderkit/html/css/grid.xcss
===================================================================
--- trunk/sandbox/ui/scrollable-grid/src/main/resources/org/richfaces/renderkit/html/css/grid.xcss 2007-08-01 16:52:51 UTC (rev 1986)
+++ trunk/sandbox/ui/scrollable-grid/src/main/resources/org/richfaces/renderkit/html/css/grid.xcss 2007-08-01 16:52:51 UTC (rev 1987)
@@ -1,272 +1,325 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<f:template
+ xmlns:f="http://jsf.exadel.com/template"
+ xmlns:u="http://jsf.exadel.com/template/util"
+ xmlns="http://www.w3.org/1999/xhtml">
-.dr-sgrid-sort-asc{
-background-image: url(/scrollable-grid-demo/a4j.res/org/richfaces/renderkit/html/images/sort_asc.gif.jsf);}
-.dr-sgrid-sort-desc{
-background-image: url(/scrollable-grid-demo/a4j.res/org/richfaces/renderkit/html/images/sort_desc.gif.jsf);}
-.dr-sgrid-hsep{
-background-image: url(/scrollable-grid-demo/a4j.res/org/richfaces/renderkit/html/images/grid-split.gif.jsf);}.dr-sgrid-sort-asc, .dr-sgrid-sort-desc {
- width: 16px;
- height: 6px;
- background-position: 50% 50%;
- background-repeat: no-repeat;
-}
-
-.dr-sgrid-sort-icon {
- position:absolute;
- visibility: hidden;
-}
-
-.dr-sgrid {
- background-color: #ffffff;/*tableBackgroundColor*/
- padding: 0px 0px;
- margin: 0px;
- z-index:0;
- border : 1px solid #C0C0C0; /*tableBorderWidth, tableBorderColor*/
-}
-
-/**
- * ---------------------------------------------
- * Grid Header declaration
- * ---------------------------------------------
- */
-
-/**
- * Header row
- */
-.dr-sgrid-hr {
- background-color: #4A75B5;/*headerBackgroundColor*/
- z-index:2;
-}
+ <f:verbatim>
-/**
- * Header cell
- */
-.dr-sgrid-hc {
- -o-text-overflow: ellipsis;
- text-overflow: ellipsis;
- overflow: hidden;
- color : #FFFFFF;/*headerTextColor*/
- font-weight: normal;
- font-family: arial; /*generalFamilyFont*/
- font-size: 11px; /*generalSizeFont*/
- cursor: default;
- box-sizing: border-box;
- -moz-box-sizing: border-box;
- -moz-outline: none;
- -moz-user-focus: normal;
- padding: 0px 0px;
- white-space: nowrap;
- border-bottom: 1px solid #C0C0C0; /*tableBorderWidth, tableBorderColor*/
- border-right: 1px solid #C0C0C0; /*tableBorderWidth, tableBorderColor*/
-}
-
-.dr-sgrid-hc .sort-asc, .dr-sgrid-hc .sort-desc {
- background-position: right;
- background-repeat: no-repeat;
- width: 16px !important;;
- position: absolute;
-}
-
-
-/**
- * Header cells separator
- */
-.dr-sgrid-hsep {
-/* background-image: url(grid-split.gif);*/
- background-position: center;
- background-repeat: repeat-y;
- cursor: e-resize;
- font-size: 1px;
- top: 15%;
- width: 6px;
- height: 70%;
- overflow: hidden;
- position: absolute;
- display: block;
- white-space: nowrap;
- z-index: 60;
-}
-.dr-sgrid-hsplit {
- width:1px;
- border-right:1px dashed #E5973E; /*tipBorderColor*/
- cursor: col-resize;
- z-index: 100;
-}
-
-/**
- * Header cell body
- */
-.dr-sgrid-hcbody {
- cursor: default;
- padding: 3px 5px;
- white-space: nowrap;
- position: relative;
- display: block;
- overflow: hidden;
- width: 100%;
- font-weight: normal;
- font-family: arial; /*generalFamilyFont*/
- font-size: 11px; /*generalSizeFont*/
-}
-
-.dr-sgrid-fb{
- z-index: 50;
-}
-.dr-sgrid-nb {
- z-index: 20;
-}
-
-/**
- * ---------------------------------------------
- * Grid Footer declaration
- * ---------------------------------------------
- */
-
-/**
- * Footer row
- */
-.dr-sgrid-fr {
- background-color: #F1F1F1; /*tableSubfooterBackgroundColor*/
- font-weight: normal;
- font-family: arial; /*generalFamilyFont*/
- font-size: 11px; /*generalSizeFont*/
- height: 22px;
- border-top: 1px solid #cbc7b8;
-}
-
-/**
- * Footer cell
- */
-.dr-sgrid-fc {
- -o-text-overflow: ellipsis;
- text-overflow: ellipsis;
- overflow: hidden;
- font-weight: normal;
- font-family: arial; /*generalFamilyFont*/
- font-size: 11px; /*generalSizeFont*/
- cursor: default;
- box-sizing: border-box;
- -moz-box-sizing: border-box;
- -moz-outline: none;
- -moz-user-focus: normal;
- border-right: 1px solid #c0c0c0; /*tableBorderColor*/
- height:21px !important;
- padding: 0px 0px;
- white-space: nowrap;
-}
-
-/**
- * Footer cell body
- */
-.dr-sgrid-fcbody {
- cursor: default;
- font-weight: normal;
- font-family: arial; /*generalFamilyFont*/
- font-size: 11px; /*generalSizeFont*/
- padding: 3px 5px;
- white-space: nowrap;
- position: relative;
- display: block;
- overflow: hidden;
-}
-
-.dr-sgrid-fcbody1{
- cursor: default;
- font-weight: normal;
- font-family: arial; /*generalFamilyFont*/
- font-size: 11px; /*generalSizeFont*/
- padding: 0px 0px;
- white-space: nowrap;
- position: relative;
- display: block;
- overflow: hidden;
- width: 100%;
-}
-
-/**
- * ---------------------------------------------
- * Body styles
- * ---------------------------------------------
- */
-
-/**
- * Body cell declaration
- * dr-sgrid-bc - reqired
- * dr-sgrid-bcDef - default, used if no custom styles defined in body template
- */
-.dr-sgrid-bc {
- box-sizing: border-box;
- -moz-box-sizing: border-box;
- -moz-outline: none;
- -moz-user-focus: normal;
- cursor: default;
- border-right: 1px solid #C0C0C0; /*tableBorderColor*/
- border-bottom: 1px solid #C0C0C0; /*tableBorderColor*/
-}
-
-/**
- * Body row style
- */
-.dr-sgrid-ho {
- position: absolute;
- height: 10px;
- width: 10px;
-}
-
-.dr-sgrid-rb {
- font-weight: normal;
- font-family: arial; /*generalFamilyFont*/
- font-size: 11px; /*generalSizeFont*/
- white-space: nowrap;
- box-sizing: border-box;
- -moz-box-sizing: border-box;
-}
-
-.dr-sgrid-row-selected {
- background-color: #EAF0F8; /*additionalBackgroundColor*/
-}
-
-.dr-sgrid-row-active {
- background-color: #C6D6EA; /*C6D6EA*/
-}
-
-.dr-sgrid-bcbody {
- cursor: default;
- font-weight: normal;
- font-family: arial; /*generalFamilyFont*/
- font-size: 11px; /*generalSizeFont*/
- white-space: nowrap;
- padding: 0px 0px;
- position: relative;
- display: block;
- overflow: hidden;
- -o-text-overflow: ellipsis;
- text-overflow: ellipsis;
- -moz-box-sizing: border-box;
- -moz-outline: none;
- width: 100%;
- height: 20px;
-}
-
-/**
- * Helper classes for grid template
-*/
-.dr-sgrid-substrate {
- z-index: 48;
- filter:Alpha(opacity=0);
- position:absolute;
- top:0px;
- left:0px;
- display:block;
-}
-
-.dr-sgrid-tmplbox {
- display: block;
- float:left;
-}
-
-.dr-sgrid-inlinebox {
- position: relative;
- display: block;
- overflow: hidden;
-}
\ No newline at end of file
+ .dr-sgrid-sort-asc, .dr-sgrid-sort-desc {
+ width: 16px;
+ height: 6px;
+ background-position: 50% 50%;
+ background-repeat: no-repeat;
+ }
+
+ .dr-sgrid-sort-icon {
+ position:absolute;
+ visibility: hidden;
+ }
+
+ .dr-sgrid {
+ padding: 0px 0px;
+ margin: 0px;
+ z-index:0;
+ border-style: solid;
+ }
+
+ /**
+ * ---------------------------------------------
+ * Grid Header declaration
+ * ---------------------------------------------
+ */
+
+ /**
+ * Header row
+ */
+ .dr-sgrid-hr {
+ z-index:2;
+ }
+
+ /**
+ * Header cell
+ */
+ .dr-sgrid-hc {
+ -o-text-overflow: ellipsis;
+ text-overflow: ellipsis;
+ overflow: hidden;
+ font-weight: normal;
+ cursor: default;
+ box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ -moz-outline: none;
+ -moz-user-focus: normal;
+ padding: 0px 0px;
+ white-space: nowrap;
+ border-bottom-style: solid;
+ border-right-style: solid;
+ }
+
+ .dr-sgrid-hc .sort-asc, .dr-sgrid-hc .sort-desc {
+ background-position: right;
+ background-repeat: no-repeat;
+ width: 16px !important;;
+ position: absolute;
+ }
+
+
+ /**
+ * Header cells separator
+ */
+ .dr-sgrid-hsep {
+ /* background-image: url(grid-split.gif);*/
+ background-position: center;
+ background-repeat: repeat-y;
+ cursor: e-resize;
+ font-size: 1px;
+ top: 15%;
+ width: 6px;
+ height: 70%;
+ overflow: hidden;
+ position: absolute;
+ display: block;
+ white-space: nowrap;
+ z-index: 60;
+ }
+ .dr-sgrid-hsplit {
+ width:1px;
+ border-right: 1px dashed;
+ cursor: col-resize;
+ z-index: 100;
+ }
+
+ /**
+ * Header cell body
+ */
+ .dr-sgrid-hcbody {
+ cursor: default;
+ padding: 3px 5px;
+ white-space: nowrap;
+ position: relative;
+ display: block;
+ overflow: hidden;
+ width: 100%;
+ font-weight: normal;
+ }
+
+ .dr-sgrid-fb{
+ z-index: 50;
+ }
+ .dr-sgrid-nb {
+ z-index: 20;
+ }
+
+ /**
+ * ---------------------------------------------
+ * Grid Footer declaration
+ * ---------------------------------------------
+ */
+
+ /**
+ * Footer row
+ */
+ .dr-sgrid-fr {
+ font-weight: normal;
+ height: 22px;
+ border-top: 1px solid #cbc7b8; /* //TODO Which skin parameter must be here? */
+ }
+
+ /**
+ * Footer cell
+ */
+ .dr-sgrid-fc {
+ -o-text-overflow: ellipsis;
+ text-overflow: ellipsis;
+ overflow: hidden;
+ font-weight: normal;
+ cursor: default;
+ box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ -moz-outline: none;
+ -moz-user-focus: normal;
+ border-right: 1px solid;
+ height:21px !important;
+ padding: 0px 0px;
+ white-space: nowrap;
+ }
+
+ /**
+ * Footer cell body
+ */
+ .dr-sgrid-fcbody {
+ cursor: default;
+ font-weight: normal;
+ padding: 3px 5px;
+ white-space: nowrap;
+ position: relative;
+ display: block;
+ overflow: hidden;
+ }
+
+ .dr-sgrid-fcbody1{
+ cursor: default;
+ font-weight: normal;
+ padding: 0px 0px;
+ white-space: nowrap;
+ position: relative;
+ display: block;
+ overflow: hidden;
+ width: 100%;
+ }
+
+ /**
+ * ---------------------------------------------
+ * Body styles
+ * ---------------------------------------------
+ */
+
+ /**
+ * Body cell declaration
+ * dr-sgrid-bc - reqired
+ * dr-sgrid-bcDef - default, used if no custom styles defined in body template
+ */
+ .dr-sgrid-bc {
+ box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ -moz-outline: none;
+ -moz-user-focus: normal;
+ cursor: default;
+ border-right: 1px solid;
+ border-bottom: 1px solid;
+ }
+
+ /**
+ * Body row style
+ */
+ .dr-sgrid-ho {
+ position: absolute;
+ height: 10px;
+ width: 10px;
+ }
+
+ .dr-sgrid-rb {
+ font-weight: normal;
+ white-space: nowrap;
+ box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ }
+
+ .dr-sgrid-row-active {
+ background-color: #C6D6EA; /* //TODO Which skin parameter must be here? */
+ }
+
+ .dr-sgrid-bcbody {
+ cursor: default;
+ font-weight: normal;
+ white-space: nowrap;
+ padding: 0px 0px;
+ position: relative;
+ display: block;
+ overflow: hidden;
+ -o-text-overflow: ellipsis;
+ text-overflow: ellipsis;
+ -moz-box-sizing: border-box;
+ -moz-outline: none;
+ width: 100%;
+ height: 20px;
+ }
+
+ /**
+ * Helper classes for grid template
+ */
+ .dr-sgrid-substrate {
+ z-index: 48;
+ filter:Alpha(opacity=0);
+ position:absolute;
+ top:0px;
+ left:0px;
+ display:block;
+ }
+
+ .dr-sgrid-tmplbox {
+ display: block;
+ float:left;
+ }
+
+ .dr-sgrid-inlinebox {
+ position: relative;
+ display: block;
+ overflow: hidden;
+ }
+ </f:verbatim>
+
+ <u:selector name=".dr-sgrid">
+ <u:style name="background-color" skin="tableBackgroundColor" />
+ <u:style name="border-color" skin="tableBorderColor" />
+ <u:style name="border-width" skin="tableBorderWidth" />
+ </u:selector>
+ <u:selector name=".dr-sgrid-hr">
+ <u:style name="background-color" skin="headerBackgroundColor" />
+ </u:selector>
+ <u:selector name=".dr-sgrid-hc">
+ <u:style name="color" skin="headerTextColor" />
+ <u:style name="font-family" skin="generalFamilyFont" />
+ <u:style name="font-size" skin="generalSizeFont" />
+ <u:style name="border-bottom-width" skin="tableBorderWidth" />
+ <u:style name="border-bottom-color" skin="tableBorderColor" />
+ <u:style name="border-right-width" skin="tableBorderWidth" />
+ <u:style name="border-right-color" skin="tableBorderColor" />
+ </u:selector>
+ <u:selector name=".dr-sgrid-hsplit">
+ <u:style name="border-right-color" skin="tipBorderColor" />
+ </u:selector>
+ <u:selector name=".dr-sgrid-hcbody">
+ <u:style name="font-family" skin="generalFamilyFont" />
+ <u:style name="font-size" skin="generalSizeFont" />
+ </u:selector>
+ <u:selector name=".dr-sgrid-fr">
+ <u:style name="background-color" skin="tableSubfooterBackgroundColor" />
+ <u:style name="font-family" skin="generalFamilyFont" />
+ <u:style name="font-size" skin="generalSizeFont" />
+ </u:selector>
+ <u:selector name=".dr-sgrid-fc">
+ <u:style name="border-right-color" skin="tableBorderColor" />
+ <u:style name="font-family" skin="generalFamilyFont" />
+ <u:style name="font-size" skin="generalSizeFont" />
+ </u:selector>
+ <u:selector name=".dr-sgrid-fcbody">
+ <u:style name="font-family" skin="generalFamilyFont" />
+ <u:style name="font-size" skin="generalSizeFont" />
+ </u:selector>
+ <u:selector name=".dr-sgrid-fcbody1">
+ <u:style name="font-family" skin="generalFamilyFont" />
+ <u:style name="font-size" skin="generalSizeFont" />
+ </u:selector>
+ <u:selector name=".dr-sgrid-bc">
+ <u:style name="border-right-color" skin="tableBorderColor" />
+ <u:style name="border-bottom-color" skin="tableBorderColor" />
+ </u:selector>
+ <u:selector name=".dr-sgrid-rb">
+ <u:style name="font-family" skin="generalFamilyFont" />
+ <u:style name="font-size" skin="generalSizeFont" />
+ </u:selector>
+ <u:selector name=".dr-sgrid-row-selected">
+ <u:style name="background-color" skin="additionalBackgroundColor" />
+ </u:selector>
+ <u:selector name=".dr-sgrid-bcbody">
+ <u:style name="font-family" skin="generalFamilyFont" />
+ <u:style name="font-size" skin="generalSizeFont" />
+ </u:selector>
+ <u:selector name=".dr-sgrid-sort-asc">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/images/sort_asc.gif"/>
+ </u:style>
+ </u:selector>
+ <u:selector name=".dr-sgrid-sort-desc">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/images/sort_desc.gif"/>
+ </u:style>
+ </u:selector>
+ <u:selector name=".dr-sgrid-hsep">
+ <u:style name="background-image">
+ <f:resource f:key="/org/richfaces/renderkit/html/images/grid-split.gif"/>
+ </u:style>
+ </u:selector>
+</f:template>
16 years, 8 months
JBoss Rich Faces SVN: r1986 - in trunk: sandbox/ui/treeModel/src/main/java/org/richfaces/component and 1 other directory.
by richfaces-svn-commits@lists.jboss.org
Author: nbelaevski
Date: 2007-08-01 12:52:51 -0400 (Wed, 01 Aug 2007)
New Revision: 1986
Modified:
trunk/framework/api/src/main/java/org/richfaces/model/StackingTreeModel.java
trunk/sandbox/ui/treeModel/src/main/java/org/richfaces/component/UIRecursiveTreeNodes.java
trunk/sandbox/ui/treeModel/src/main/java/org/richfaces/component/UITreeNodes.java
Log:
Latest changes for StackingTreeModel.java
Modified: trunk/framework/api/src/main/java/org/richfaces/model/StackingTreeModel.java
===================================================================
--- trunk/framework/api/src/main/java/org/richfaces/model/StackingTreeModel.java 2007-08-01 16:23:15 UTC (rev 1985)
+++ trunk/framework/api/src/main/java/org/richfaces/model/StackingTreeModel.java 2007-08-01 16:52:51 UTC (rev 1986)
@@ -4,10 +4,12 @@
package org.richfaces.model;
import java.io.IOException;
+import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.LinkedHashMap;
+import java.util.LinkedList;
import java.util.List;
import java.util.Map;
@@ -24,24 +26,36 @@
*/
public class StackingTreeModel extends AbstractTreeDataModel implements TreeComponentModel {
+ //ctor arguments
private String id;
private String var;
-
- private String modelId;
- private Object modelKey;
-
- private Object rowData;
-
private StackingTreeModelDataProvider dataProvider;
- protected StackingTreeModel stackingTreeModel;
- // private ExtendedDataModel dataModel;
- protected StackingTreeModel parent;
+ //structural elements
+ private StackingTreeModel parent;
private Map models = new LinkedHashMap();
+ //listeners
private List treeComponentModelListeners = new ArrayList();
- private Object varObject;
+ private Object rowKey;
+
+ private class StackEntry {
+ private Object modelKey;
+ private Object varObject;
+ private StackingTreeModel model;
+ public StackEntry(Object varObject, Object modelKey, StackingTreeModel model) {
+ super();
+ this.varObject = varObject;
+ this.modelKey = modelKey;
+ this.model = model;
+ }
+ }
+
+ private Object rowData;
+// private StackingTreeModel stackingTreeModel;
+ private LinkedList stackEntries = new LinkedList();
+
public ExtendedDataModel getDataModel() {
Object data = dataProvider.getData();
ExtendedDataModel dataModel;
@@ -59,8 +73,76 @@
//TODO optimize that
return getDataModel().getRowCount() == 0;
}
+
+ private void leaveModel(Iterator iterator, StackEntry currentEntry, FacesContext context) {
+ if (iterator == null) {
+ return ;
+ }
+
+ LinkedList stack = new LinkedList();
+
+ if (currentEntry != null) {
+ iterator.remove();
+ stack.addFirst(currentEntry);
+ }
+
+ while (iterator.hasNext()) {
+ stack.addFirst(iterator.next());
+ iterator.remove();
+ }
+
+ for (Iterator iterator2 = stack.iterator(); iterator2.hasNext();) {
+ StackEntry stackEntry = (StackEntry) iterator2.next();
+ stackEntry.model.setupVariable(stackEntry.varObject, context);
+ }
+ }
+
+ protected StackingTreeModel doSetupKey(Iterator keyIterator, Iterator entriesIterator, FacesContext context) {
+ if (keyIterator == null || !keyIterator.hasNext()) {
+ leaveModel(entriesIterator, null, context);
+ return this;
+ } else {
+ Key key = (Key) keyIterator.next();
+ StackingTreeModel stackingTreeModel = (StackingTreeModel) this.getModels().get(key.modelId);
+ if (entriesIterator != null && entriesIterator.hasNext()) {
+ StackEntry entry = (StackEntry) entriesIterator.next();
+ if (entry.model != stackingTreeModel || entry.modelKey != key.modelKey) {
+ //entry.model.restoreVariable(entry.varObject);
+ leaveModel(entriesIterator, entry, context);
+
+ stackingTreeModel.setupModel(key.modelKey, context);
+ entriesIterator = null;
+ }
+ } else {
+ stackingTreeModel.setupModel(key.modelKey, context);
+ entriesIterator = null;
+ }
+
+ return stackingTreeModel.doSetupKey(keyIterator, entriesIterator, context);
+ }
+ }
+
+ protected StackingTreeModel setupKey(Object key, FacesContext context) {
+ if (key == this.rowKey) {
+ if (stackEntries.isEmpty()) {
+ return this;
+ } else {
+ return ((StackEntry) stackEntries.getLast()).model;
+ }
+ } else {
+ Iterator keyIterator = null;
+ if (key != null) {
+ keyIterator = ((ListRowKey) key).iterator();
+ }
+
+ StackingTreeModel model = doSetupKey(keyIterator, stackEntries.iterator(), context);
+ this.rowKey = key;
+ return model;
+ }
+ }
+
public StackingTreeModel(String id, String var, StackingTreeModelDataProvider dataProvider) {
super();
this.id = id;
@@ -72,39 +154,26 @@
this(null, null, null);
}
- public void leaveModel(FacesContext facesContext) {
- if (stackingTreeModel != null && stackingTreeModel != this) {
- stackingTreeModel.leaveModel();
+ private Object setupVariable(Object variable, FacesContext context) {
+ if (var != null) {
+ Map map = context.getExternalContext().getRequestMap();
+ return map.put(var, variable);
}
- stackingTreeModel = null;
- modelId = null;
- modelKey = null;
- if (var != null) {
- Map map = facesContext.getExternalContext().getRequestMap();
- map.put(var, varObject);
- }
-
- rowData = null;
+ return null;
}
-
- public void leaveModel() {
- leaveModel(FacesContext.getCurrentInstance());
- }
- public void setupModel(Object object, FacesContext facesContext) {
- if (var != null) {
- Map map = facesContext.getExternalContext().getRequestMap();
- varObject = map.get(var);
- map.put(var, object);
- }
-
- rowData = object;
+ public void setupModel(Object key, FacesContext facesContext) {
+ ExtendedDataModel dataModel = getDataModel();
+ dataModel.setRowKey(key);
+
+ Object rowData = dataModel.getRowData();
+ //System.out.println("StackingTreeModel.setupModel() " + rowData);
+ Object varObject = setupVariable(rowData, facesContext);
+
+ this.rowData = rowData;
+ getRoot().stackEntries.add(new StackEntry(varObject, key, this));
}
-
- public void setupModel(Object object) {
- setupModel(object, FacesContext.getCurrentInstance());
- }
public void setParent(StackingTreeModel parent) {
this.parent = parent;
@@ -125,11 +194,12 @@
* @see org.richfaces.model.AbstractTreeDataModel#isLeaf()
*/
public boolean isLeaf() {
- if (stackingTreeModel != null && stackingTreeModel != this) {
- return stackingTreeModel.isLeaf();
+ if (stackEntries.isEmpty()) {
+ return false;
}
-
- Collection values = this.getModels().values();
+
+ StackEntry lastEntry = (StackEntry) stackEntries.getLast();
+ Collection values = lastEntry.model.getModels().values();
for (Iterator iterator = values.iterator(); iterator.hasNext();) {
StackingTreeModel stackingTreeModel = (StackingTreeModel) iterator.next();
@@ -141,24 +211,24 @@
return true;
}
+ protected StackingTreeModel getRoot() {
+ if (parent != null) {
+ return parent.getRoot();
+ }
+
+ return this;
+ }
+
protected void doWalk(FacesContext context, DataVisitor dataVisitor,
- Range range, Object rowKey, Object argument,
+ Range range, ListRowKey argumentKey, Object argument,
boolean last) throws IOException {
- final ListRowKey argumentKey = (ListRowKey) rowKey;
- if (argument != null) {
- Argument2 a = (Argument2) argument;
-
- Object localRowKey = a.localKey;
- ExtendedDataModel dataModel = a.dataModel;
- if (dataModel == null) {
- dataModel = getDataModel();
- }
- dataModel.setRowKey(localRowKey);
- setupModel(dataModel.getRowData(), context);
- //System.out.println(dataModel.getRowData() + (last ? " * " : "") + " - " + argumentKey);
-
+ if (argumentKey != null) {
+ getRoot().setRowKey(argumentKey);
processElement(context, dataVisitor, argument, argumentKey, last);
+ getRoot().setRowKey(argumentKey);
+ } else {
+ getRoot().setRowKey(argumentKey);
}
ShiftingDataVisitor shiftingDataVisitor = new ShiftingDataVisitor(
@@ -167,76 +237,49 @@
while (iterator.hasNext()) {
Map.Entry entry = (Map.Entry) iterator.next();
StackingTreeModel model = (StackingTreeModel) entry.getValue();
- doSpecialWalk(context, shiftingDataVisitor, range, argumentKey, last, model);
+
+ Argument argument2 = new Argument();
+ argument2.listRowKey = argumentKey;
+ argument2.argument = argument;
+ // setup current model
+ argument2.model = model;
+ argument2.range = range;
+ model.getDataModel().walk(context, shiftingDataVisitor, null,
+ argument2);
+
}
-
+
shiftingDataVisitor.end(context);
}
-
+
public Map getModels() {
return models;
}
-
+
public void walk(FacesContext context, DataVisitor dataVisitor,
Range range, Object rowKey, Object argument,
boolean last) throws IOException {
if (rowKey != null) {
ListRowKey listRowKey = (ListRowKey) rowKey;
- if (listRowKey != null) {
- int depth = listRowKey.depth();
- StackingTreeModel stackingTreeModel = this;
- for (int i = 0; i < depth; i++) {
- Key key = (Key) listRowKey.get(i);
- if (key.modelId != null) {
- stackingTreeModel = (StackingTreeModel) stackingTreeModel.getModels().get(key.modelId);
- this.stackingTreeModel = stackingTreeModel;
- this.modelId = key.modelId;
-
- if (i == depth - 1) {
- Argument2 argument2 = new Argument2();
- argument2.localKey = key.modelKey;
- //argument2.dataModel = stackingTreeModel;
- stackingTreeModel.doWalk(context, dataVisitor, range, listRowKey, argument2,
- last);
- } else {
- stackingTreeModel.setLocalRowKey(key.modelKey);
- }
- }
- }
- }
+ StackingTreeModel treeModel = getRoot().setupKey(listRowKey, context);
+
+ treeModel.doWalk(context, dataVisitor, range, listRowKey, null,
+ last);
+
} else {
- doWalk(context, dataVisitor, range, rowKey, argument, last);
+ doWalk(context, dataVisitor, range, (ListRowKey) rowKey, argument, last);
}
}
- private void doSpecialWalk(FacesContext context,
- ShiftingDataVisitor dataVisitor, Range range,
- ListRowKey rowKey, boolean last, StackingTreeModel stackingTreeModel) throws IOException {
-
- Argument argument2 = new Argument();
- argument2.listRowKey = rowKey;
- // setup current model
- argument2.model = stackingTreeModel;
- argument2.dataModel = stackingTreeModel.getDataModel();
- argument2.range = range;
- argument2.dataModel.walk(context, dataVisitor, range,
- argument2);
- }
-
private class Argument {
- private ExtendedDataModel dataModel;
private ListRowKey listRowKey;
private StackingTreeModel model;
private Range range;
+ private Object argument;
}
- private class Argument2 {
- private Object localKey;
- private ExtendedDataModel dataModel;
- }
-
private class Visitor1 implements DataVisitor, LastElementAware {
private DataVisitor dataVisitor;
private boolean theLast;
@@ -253,10 +296,8 @@
ListRowKey listRowKey = new ListRowKey(a.listRowKey, new Key(
a.model.id, rowKey));
//System.out.println(".walk() " + (theLast ? " * " : "") + listRowKey);
- Argument2 argument2 = new Argument2();
- argument2.localKey = rowKey;
- argument2.dataModel = a.dataModel;
- a.model.doWalk(context, dataVisitor, a.range, listRowKey, argument2,
+
+ a.model.doWalk(context, dataVisitor, a.range, listRowKey, a.argument,
theLast);
}
@@ -334,51 +375,16 @@
*/
public Object getRowKey() {
if (parent == null) {
- ListRowKey listRowKey = new ListRowKey();
- return listRowKey;
+ return rowKey;
} else {
- return new ListRowKey((ListRowKey) parent.getRowKey(), new Key(this.modelId, modelKey));
+ return this.parent.getRowKey();
}
}
- protected void setLocalRowKey(Object rowKey) {
- ExtendedDataModel dataModel = getDataModel();
- this.modelKey = rowKey;
- dataModel.setRowKey(rowKey);
- setupModel(dataModel.getRowData());
+ public void setRowKey(Object key) {
+ setupKey(key, FacesContext.getCurrentInstance());
}
-
- /*
- * (non-Javadoc)
- *
- * @see org.ajax4jsf.model.ExtendedDataModel#setRowKey(java.lang.Object)
- */
- protected void doSetRowKey(Object key) {
- ListRowKey listRowKey = (ListRowKey) key;
- if (listRowKey != null) {
- Key rowKey = (Key) listRowKey.get(0);
- if (rowKey.modelId != null) {
- StackingTreeModel stackingTreeModel = (StackingTreeModel) this.getModels().get(rowKey.modelId);
- this.stackingTreeModel = stackingTreeModel;
- this.modelId = rowKey.modelId;
-
- if (listRowKey.depth() == 1) {
- stackingTreeModel.setLocalRowKey(rowKey.modelKey);
- } else {
- stackingTreeModel.setLocalRowKey(rowKey.modelKey);
- stackingTreeModel.doSetRowKey(listRowKey.getSubKey(1));
- }
- }
- }
- }
-
- public void setRowKey(Object key) {
- leaveModel();
-
- doSetRowKey(key);
- }
-
public void addStackingModel(StackingTreeModel model) {
this.models.put(model.id, model);
model.setParent(this);
@@ -390,11 +396,11 @@
* @see javax.faces.model.DataModel#getRowData()
*/
public Object getRowData() {
- if (stackingTreeModel != null && stackingTreeModel != this) {
- return stackingTreeModel.getRowData();
- }
+// if (stackingTreeModel != null && stackingTreeModel != this) {
+// return stackingTreeModel.getRowData();
+// }
- return rowData;
+ return this.rowData;
}
/*
@@ -407,7 +413,15 @@
return true;
}
- protected static class Key {
+ public StackingTreeModel getParent() {
+ return parent;
+ }
+
+ protected static class Key implements Serializable {
+ /**
+ *
+ */
+ private static final long serialVersionUID = -6821854350257816571L;
protected Object modelKey;
protected String modelId;
@@ -431,14 +445,14 @@
TreeComponentModelListener listener) {
this.treeComponentModelListeners.remove(listener);
}
-
+
protected void componentSelected(UIComponent component) {
for (Iterator iterator = this.treeComponentModelListeners.iterator(); iterator.hasNext();) {
TreeComponentModelListener listener = (TreeComponentModelListener) iterator.next();
-
+
listener.componentSelected(component);
}
-
+
if (parent != null) {
parent.componentSelected(component);
}
Modified: trunk/sandbox/ui/treeModel/src/main/java/org/richfaces/component/UIRecursiveTreeNodes.java
===================================================================
--- trunk/sandbox/ui/treeModel/src/main/java/org/richfaces/component/UIRecursiveTreeNodes.java 2007-08-01 16:23:15 UTC (rev 1985)
+++ trunk/sandbox/ui/treeModel/src/main/java/org/richfaces/component/UIRecursiveTreeNodes.java 2007-08-01 16:52:51 UTC (rev 1986)
@@ -6,6 +6,8 @@
import java.util.Map;
+import javax.faces.context.FacesContext;
+
import org.richfaces.model.StackingTreeModel;
import org.richfaces.model.StackingTreeModelDataProvider;
@@ -41,13 +43,13 @@
}) {
- public void setupModel(Object object) {
- super.setupModel(object);
+ public void setupModel(Object object, FacesContext facesContext) {
+ super.setupModel(object, facesContext);
componentSelected(UIRecursiveTreeNodes.this);
}
public Map getModels() {
- return this.parent.getModels();
+ return this.getParent().getModels();
}
};
stackingModel.addStackingModel(recursiveModel);
Modified: trunk/sandbox/ui/treeModel/src/main/java/org/richfaces/component/UITreeNodes.java
===================================================================
--- trunk/sandbox/ui/treeModel/src/main/java/org/richfaces/component/UITreeNodes.java 2007-08-01 16:23:15 UTC (rev 1985)
+++ trunk/sandbox/ui/treeModel/src/main/java/org/richfaces/component/UITreeNodes.java 2007-08-01 16:52:51 UTC (rev 1986)
@@ -4,6 +4,8 @@
package org.richfaces.component;
+import javax.faces.context.FacesContext;
+
import org.richfaces.model.StackingTreeModel;
import org.richfaces.model.StackingTreeModelDataProvider;
import org.richfaces.model.StackingTreeModelProvider;
@@ -30,8 +32,8 @@
}
}) {
- public void setupModel(Object object) {
- super.setupModel(object);
+ public void setupModel(Object object, FacesContext facesContext) {
+ super.setupModel(object, facesContext);
componentSelected(UITreeNodes.this);
}
};
16 years, 8 months