Author: Alex.Kolonitsky
Date: 2009-12-23 07:31:44 -0500 (Wed, 23 Dec 2009)
New Revision: 16201
Added:
branches/community/3.3.X/samples/extendedDataTable-sample/src/main/webapp/pages/RF-4612.xhtml
branches/community/3.3.X/samples/extendedDataTable-sample/src/main/webapp/pages/RF-5751.xhtml
branches/community/3.3.X/samples/extendedDataTable-sample/src/main/webapp/pages/RF-6439.xhtml
branches/community/3.3.X/samples/extendedDataTable-sample/src/main/webapp/pages/RF-7173.xhtml
branches/community/3.3.X/samples/extendedDataTable-sample/src/main/webapp/pages/RF-8072.xhtml
Modified:
branches/community/3.3.X/ui/extendedDataTable/src/main/java/org/richfaces/renderkit/html/RichTableMenuRenderer.java
Log:
ExtendedDataTable duplicate Id exception
https://jira.jboss.org/jira/browse/RF-8223
Added:
branches/community/3.3.X/samples/extendedDataTable-sample/src/main/webapp/pages/RF-4612.xhtml
===================================================================
---
branches/community/3.3.X/samples/extendedDataTable-sample/src/main/webapp/pages/RF-4612.xhtml
(rev 0)
+++
branches/community/3.3.X/samples/extendedDataTable-sample/src/main/webapp/pages/RF-4612.xhtml 2009-12-23
12:31:44 UTC (rev 16201)
@@ -0,0 +1,64 @@
+<html
xmlns="http://www.w3.org/1999/xhtml"
+
xmlns:f="http://java.sun.com/jsf/core"
+
xmlns:c="http://java.sun.com/jstl/core"
+
xmlns:h="http://java.sun.com/jsf/html"
+
xmlns:ui="http://java.sun.com/jsf/facelets"
+
xmlns:rich="http://richfaces.org/rich"
+
xmlns:extdt="http://labs.jboss.com/jbossrichfaces/ui/extendedDataTab...
+
xmlns:a4j="http://richfaces.org/a4j">
+
+<head>
+<title></title>
+</head>
+<body>
+<f:view>
+ <h:form id="productionsForm">
+
+ <rich:extendedDataTable id="productionsTable"
+ value="#{extendedDataTableBean.dataModel}"
+ var="production"
+
+ width="#{extendedDataTableControlBean.width}"
+ height="#{extendedDataTableControlBean.height}"
+ selection="#{extendedDataTableBean.selection}"
+
+
onRowMouseOver="this.style.backgroundColor='#{a4jSkin.additionalBackgroundColor}'"
+ onRowMouseOut="this.style.backgroundColor=''"
+ selectionMode="single"
+ selectedClass="rich-sdt-row-selected"
+ rowClasses="rvgRowOne,rvgRowTwo">
+
+
+ <!-- action="#{extendedDataTableControlBean.onSelectionChange}"
-->
+
+ <a4j:support
+ event="onselectionchange"
+ immediate="true"
+ reRender="col1"
+ oncomplete="alert('OnSelectionChange WORK!!!');"
+ />
+
+ <rich:column width="150px" id="col1">
+ <f:facet name="header">First</f:facet>
+
+ <h:selectOneMenu onclick="Event.stop(event);">
+ <f:selectItem itemValue="1" itemLabel="1"
/>
+ <f:selectItem itemValue="2" itemLabel="2"
/>
+ <f:selectItem itemValue="3" itemLabel="3"
/>
+ </h:selectOneMenu>
+ </rich:column>
+
+ <rich:column width="150px" id="col2">
+ <f:facet name="header">Second</f:facet>
+
+ <h:selectOneMenu onclick="Event.stop(event);">
+ <f:selectItem itemValue="1" itemLabel="1"
/>
+ <f:selectItem itemValue="2" itemLabel="2"
/>
+ <f:selectItem itemValue="3" itemLabel="3"
/>
+ </h:selectOneMenu>
+ </rich:column>
+ </rich:extendedDataTable>
+ </h:form>
+</f:view>
+</body>
+</html>
\ No newline at end of file
Added:
branches/community/3.3.X/samples/extendedDataTable-sample/src/main/webapp/pages/RF-5751.xhtml
===================================================================
---
branches/community/3.3.X/samples/extendedDataTable-sample/src/main/webapp/pages/RF-5751.xhtml
(rev 0)
+++
branches/community/3.3.X/samples/extendedDataTable-sample/src/main/webapp/pages/RF-5751.xhtml 2009-12-23
12:31:44 UTC (rev 16201)
@@ -0,0 +1,51 @@
+<!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:ui="http://java.sun.com/jsf/facelets"
+
xmlns:h="http://java.sun.com/jsf/html"
+
xmlns:f="http://java.sun.com/jsf/core"
+
xmlns:a4j="http://richfaces.org/a4j"
+
xmlns:rich="http://richfaces.org/rich">
+
+ <style>
+ #ClientUI_Box0 {
+ height:0px;
+ font-size:0px;
+ display:none;
+ }
+
+ #ClientUI_Box1 {
+ height:0px;
+ font-size:0px;
+ display:none;
+ }
+ </style>
+
+ <h:form id="f">
+ <rich:extendedDataTable id="table"
+ value="#{extendedTableBean.capitalsDataModel}"
var="cap"
+ width="300px" height="400px"
+ >
+
+ <rich:column sortable="true" sortBy="#{cap.state}"
width="120px" filterBy="#{cap.state}"
filterEvent="onkeyup">
+ <f:facet name="header">
+ <h:outputText value="Make" />
+ </f:facet>
+ <h:outputText value="#{cap.state}" />
+ </rich:column>
+
+ <rich:column width="120px">
+ <f:facet name="header">
+ <h:outputText value="Model" />
+ </f:facet>
+ <h:outputText value="#{cap.name}" />
+ </rich:column>
+
+ <rich:column width="120px">
+ <f:facet name="header">
+ <h:outputText value="Price" />
+ </f:facet>
+ <h:outputText value="#{cap.timeZone}" />
+ </rich:column>
+ </rich:extendedDataTable>
+ </h:form>
+</html>
Added:
branches/community/3.3.X/samples/extendedDataTable-sample/src/main/webapp/pages/RF-6439.xhtml
===================================================================
---
branches/community/3.3.X/samples/extendedDataTable-sample/src/main/webapp/pages/RF-6439.xhtml
(rev 0)
+++
branches/community/3.3.X/samples/extendedDataTable-sample/src/main/webapp/pages/RF-6439.xhtml 2009-12-23
12:31:44 UTC (rev 16201)
@@ -0,0 +1,39 @@
+<!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:ui="http://java.sun.com/jsf/facelets"
+
xmlns:h="http://java.sun.com/jsf/html"
+
xmlns:f="http://java.sun.com/jsf/core"
+
xmlns:a4j="http://richfaces.org/a4j"
+
xmlns:rich="http://richfaces.org/rich">
+
+ <head>
+ <title></title>
+ </head>
+ <body>
+ <f:view>
+ <rich:modalPanel id="p" width="650"
height="650">
+ <f:facet name="header">
+ <h:panelGroup>Doc</h:panelGroup>
+ </f:facet>
+ <f:facet name="controls">
+ <h:panelGroup>
+ <h:graphicImage value="/img/break.gif"
style="cursor: pointer;">
+ <rich:componentControl for="p"
operation="hide" event="onclick" />
+ </h:graphicImage>
+ </h:panelGroup>
+ </f:facet>
+ <h:form id="f">
+ <rich:extendedDataTable
value="#{extendedTableBean.capitalsDataModel}"
+ var="field1" id="ed">
+ <rich:column>#{field1}</rich:column>
+ </rich:extendedDataTable>
+ </h:form>
+ </rich:modalPanel>
+
+
+ <h:form id="f2">
+ <a4j:commandLink value="open panel" reRender="ed"
oncomplete="Richfaces.showModalPanel('p');"/>
+ </h:form>
+ </f:view>
+ </body>
+</html>
Added:
branches/community/3.3.X/samples/extendedDataTable-sample/src/main/webapp/pages/RF-7173.xhtml
===================================================================
---
branches/community/3.3.X/samples/extendedDataTable-sample/src/main/webapp/pages/RF-7173.xhtml
(rev 0)
+++
branches/community/3.3.X/samples/extendedDataTable-sample/src/main/webapp/pages/RF-7173.xhtml 2009-12-23
12:31:44 UTC (rev 16201)
@@ -0,0 +1,46 @@
+<!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:ui="http://java.sun.com/jsf/facelets"
+
xmlns:h="http://java.sun.com/jsf/html"
+
xmlns:f="http://java.sun.com/jsf/core"
+
xmlns:a4j="http://richfaces.org/a4j"
+
xmlns:rich="http://richfaces.org/rich">
+
+ <style>
+ #ClientUI_Box0 {
+ height:0px;
+ font-size:0px;
+ display:none;
+ }
+
+ #ClientUI_Box1 {
+ height:0px;
+ font-size:0px;
+ display:none;
+ }
+ </style>
+
+ <h:form id="f">
+ <rich:extendedDataTable
+ value="#{extendedTableBean.capitalsDataModel}"
+ var="cap"
+ id="table"
+ width="580px"
+ height="400px"
+ >
+ <rich:column label="State Name">
+ <f:facet name="header"><h:outputText value="State
Name"/></f:facet>
+ <h:outputText value="#{cap.state}"/>
+ </rich:column>
+ <rich:column label="State Capital">
+ <f:facet name="header"><h:outputText value="State
Capital"/></f:facet>
+ <h:outputText value="#{cap.name}"/>
+ </rich:column>
+ <rich:column label="Time Zone">
+ <f:facet name="header"><h:outputText value="Time
Zone"/></f:facet>
+ <h:outputText value="#{cap.timeZone}"/>
+ </rich:column>
+ </rich:extendedDataTable>
+
+ </h:form>
+</html>
Added:
branches/community/3.3.X/samples/extendedDataTable-sample/src/main/webapp/pages/RF-8072.xhtml
===================================================================
---
branches/community/3.3.X/samples/extendedDataTable-sample/src/main/webapp/pages/RF-8072.xhtml
(rev 0)
+++
branches/community/3.3.X/samples/extendedDataTable-sample/src/main/webapp/pages/RF-8072.xhtml 2009-12-23
12:31:44 UTC (rev 16201)
@@ -0,0 +1,18 @@
+<html
xmlns="http://www.w3.org/1999/xhtml"
+
xmlns:f="http://java.sun.com/jsf/core"
+
xmlns:c="http://java.sun.com/jstl/core"
+
xmlns:h="http://java.sun.com/jsf/html"
+
xmlns:ui="http://java.sun.com/jsf/facelets"
+
xmlns:extdt="http://labs.jboss.com/jbossrichfaces/ui/extendedDataTab...
+
xmlns:dt="http://labs.jboss.com/jbossrichfaces/ui/dataTable"
+
xmlns:a4j="http://richfaces.org/a4j">
+<body>
+<f:view>
+ <h:form id="form">
+ <extdt:extendedDataTable id="table">
+ <dt:column >Hello</dt:column>
+ </extdt:extendedDataTable>
+ </h:form>
+</f:view>
+</body>
+</html>
\ No newline at end of file
Modified:
branches/community/3.3.X/ui/extendedDataTable/src/main/java/org/richfaces/renderkit/html/RichTableMenuRenderer.java
===================================================================
---
branches/community/3.3.X/ui/extendedDataTable/src/main/java/org/richfaces/renderkit/html/RichTableMenuRenderer.java 2009-12-23
11:42:32 UTC (rev 16200)
+++
branches/community/3.3.X/ui/extendedDataTable/src/main/java/org/richfaces/renderkit/html/RichTableMenuRenderer.java 2009-12-23
12:31:44 UTC (rev 16201)
@@ -155,6 +155,7 @@
UIMenuSeparator sep = (UIMenuSeparator) context.getApplication()
.createComponent(UIMenuSeparator.COMPONENT_TYPE);
+ sep.setId(getId("sep_1"));
menu.getChildren().add(sep);
// add menu item for grouping
@@ -162,11 +163,13 @@
sep = (UIMenuSeparator) context.getApplication().createComponent(
UIMenuSeparator.COMPONENT_TYPE);
+ sep.setId(getId("sep_2"));
menu.getChildren().add(sep);
// add menu items for changing column visibility
UIMenuGroup group = (HtmlMenuGroup) context.getApplication()
.createComponent(UIMenuGroup.COMPONENT_TYPE);
+ group.setId(getId("visibility"));
group.setValue(ComponentMessageUtil.getMessage(context, MSG_COLUMNS,
new Object[] {}).getSummary());
group.setIcon(iconColumnsURI);
@@ -177,9 +180,13 @@
while (columns.hasNext()) {
buildMenuItem(group, columns.next());
- }// while
+ }
}// buildMenu
+ private String getId(String str) {
+ return column.getId() + "_rich_" + str;
+ }
+
/**
* Builds menu item for sorting.
*
@@ -195,6 +202,9 @@
.createComponent(UIMenuItem.COMPONENT_TYPE);
menuItem.setSubmitMode("none");
+
+ String ascStr = asc ? "asc" : "desc";
+ menuItem.setId(getId("sort_" + asc));
String actionScript = null;
StringBuilder actionScriptBuilder = new StringBuilder();
if ((Boolean) column.getAttributes().get("sortable")) {
@@ -214,9 +224,9 @@
actionScript = actionScript.replace("{columnId}",
columnClientId);
}
- if (actionScript.contains("{sortDirection}"))
- actionScript = actionScript.replace("{sortDirection}",
- asc ? "asc" : "desc");
+ if (actionScript.contains("{sortDirection}")) {
+ actionScript = actionScript.replace("{sortDirection}",
ascStr);
+ }
}
} else {
menuItem.setDisabled(true);
@@ -247,6 +257,7 @@
.createComponent(UIMenuItem.COMPONENT_TYPE);
menuItem.setSubmitMode("none");
+ menuItem.setId("group");
String actionScript = null;
StringBuilder actionScriptBuilder = new StringBuilder();
boolean isGroupingColumn = column.getId().equalsIgnoreCase(
@@ -254,21 +265,18 @@
if ((Boolean) column.getAttributes().get("sortable")) {
if (groupFunction != null) {
if (prepareFunction != null) {
- actionScriptBuilder.append(prepareFunction.toScript())
- .append("; ");
+ actionScriptBuilder.append(prepareFunction.toScript()).append(";
");
}
actionScriptBuilder.append(groupFunction.toScript());
actionScript = actionScriptBuilder.toString();
if (actionScript.contains("{columnId}")) {
- String columnClientId = (String) column.getAttributes()
- .get("columnClientId");
+ String columnClientId = (String)
column.getAttributes().get("columnClientId");
if (columnClientId == null)
columnClientId = column.getClientId(context);
if (isGroupingColumn) {
columnClientId = "";
}
- actionScript = actionScript.replace("{columnId}",
- columnClientId);
+ actionScript = actionScript.replace("{columnId}",
columnClientId);
}
}
} else {
@@ -304,35 +312,32 @@
if (col.isRendered(false)) {
UIMenuItem menuItem = (UIMenuItem) context.getApplication()
.createComponent(UIMenuItem.COMPONENT_TYPE);
+ menuItem.setId(parent.getId() + '_' + col.getId());
+ menuItem.setSubmitMode("none");
+ menuItem.setStyle("text-align: left;");
- menuItem.setSubmitMode("none");
+ String label = (String)col.getAttributes().get("label");
+ menuItem.setValue(label == null ? "" : label);
+
boolean columnVisible = col.isVisible();
+
String actionScript = null;
- StringBuilder actionScriptBuilder = new StringBuilder();
-
- menuItem.setStyle("text-align: left;");
-
- if ((!columnVisible) || (visibleColumnsCount > 1)) {
+ if (!columnVisible || (visibleColumnsCount > 1)) {
if (changeColumnVisibilityFunction != null) {
+ StringBuilder actionScriptBuilder = new StringBuilder();
if (prepareFunction != null) {
- actionScriptBuilder.append(prepareFunction.toScript())
- .append("; ");
+
actionScriptBuilder.append(prepareFunction.toScript()).append("; ");
}
- actionScriptBuilder.append(changeColumnVisibilityFunction
- .toScript());
+
actionScriptBuilder.append(changeColumnVisibilityFunction.toScript());
actionScript = actionScriptBuilder.toString();
if (actionScript.contains("{columnId}"))
- actionScript = actionScript.replace("{columnId}",
- col.getId());
+ actionScript = actionScript.replace("{columnId}",
col.getId());
}
}// if
- String label = (String)col.getAttributes().get("label");
- menuItem.setValue(label == null ? "" : label);
+
menuItem.setIcon(columnVisible ? iconCheckedURI : iconUncheckedURI);
if (menuItem instanceof HtmlMenuItem) {
- ((HtmlMenuItem) menuItem)
- .setOnclick(actionScript == null ? "return false;"
- : actionScript);
+ ((HtmlMenuItem) menuItem).setOnclick(actionScript == null ? "return
false;" : actionScript);
}
// add item to menu