Author: konstantin.mishin
Date: 2009-07-10 08:29:10 -0400 (Fri, 10 Jul 2009)
New Revision: 14878
Modified:
branches/community/3.3.X/framework/impl/src/main/java/org/ajax4jsf/renderkit/RendererUtils.java
branches/community/3.3.X/ui/orderingList/src/main/java/org/richfaces/renderkit/OrderingComponentRendererBase.java
branches/community/3.3.X/ui/orderingList/src/main/resources/org/richfaces/renderkit/html/scripts/ListBase.js
branches/community/3.3.X/ui/orderingList/src/main/resources/org/richfaces/renderkit/html/scripts/OrderingList.js
branches/community/3.3.X/ui/orderingList/src/main/templates/org/richfaces/htmlOrderingList.jspx
Log:
RF-7494
Modified:
branches/community/3.3.X/framework/impl/src/main/java/org/ajax4jsf/renderkit/RendererUtils.java
===================================================================
---
branches/community/3.3.X/framework/impl/src/main/java/org/ajax4jsf/renderkit/RendererUtils.java 2009-07-10
11:44:12 UTC (rev 14877)
+++
branches/community/3.3.X/framework/impl/src/main/java/org/ajax4jsf/renderkit/RendererUtils.java 2009-07-10
12:29:10 UTC (rev 14878)
@@ -51,6 +51,7 @@
import org.ajax4jsf.resource.InternetResource;
import org.ajax4jsf.resource.Java2Dresource;
import org.ajax4jsf.util.HtmlDimensions;
+import org.richfaces.component.util.ComponentUtil;
/**
* Util class for common render operations - render passthru html attributes,
@@ -593,7 +594,20 @@
},
+
/**
+ * Convert parameter to array of srings.
+ */
+ AS_ARRAY {
+
+ @Override
+ Object wrap(Object o) {
+ return ComponentUtil.asArray(o);
+ }
+
+ },
+
+ /**
* Event handler functions wrapper. Wraps <pre>functionCode</pre> object
into:
* <pre>function(event) {
* functionCode
Modified:
branches/community/3.3.X/ui/orderingList/src/main/java/org/richfaces/renderkit/OrderingComponentRendererBase.java
===================================================================
---
branches/community/3.3.X/ui/orderingList/src/main/java/org/richfaces/renderkit/OrderingComponentRendererBase.java 2009-07-10
11:44:12 UTC (rev 14877)
+++
branches/community/3.3.X/ui/orderingList/src/main/java/org/richfaces/renderkit/OrderingComponentRendererBase.java 2009-07-10
12:29:10 UTC (rev 14878)
@@ -611,47 +611,4 @@
}
return "display: none;";
}
-
- public String getAsEventHandler(FacesContext context,
- UIComponent component, String attributeName) {
- String event = (String) component.getAttributes().get(attributeName);
- ScriptString result = JSReference.NULL;
-
- if (event != null) {
- event = event.trim();
-
- if (event.length() != 0) {
- JSFunctionDefinition function = new JSFunctionDefinition();
- function.addParameter("event");
- function.addToBody(event);
-
- result = function;
- }
- }
-
- return ScriptUtils.toScript(result);
- }
-
- public String getColumnClassesAsJSArray(FacesContext context,
- UIComponent component) {
- return ScriptUtils.toScript(getClassesAsList(context, component,
- "columnClasses"));
- }
-
- public String getRowClassesAsJSArray(FacesContext context,
- UIComponent component) {
- return ScriptUtils.toScript(getClassesAsList(context, component,
- "rowClasses"));
- }
-
- protected List getClassesAsList(FacesContext context,
- UIComponent component, String attr) {
-
- String value = (String) ((UIDataAdaptor) component).getAttributes()
- .get(attr);
- if (value != null && (value.length() != 0)) {
- return Arrays.asList(value.split(","));
- }
- return null;
- }
}
Modified:
branches/community/3.3.X/ui/orderingList/src/main/resources/org/richfaces/renderkit/html/scripts/ListBase.js
===================================================================
---
branches/community/3.3.X/ui/orderingList/src/main/resources/org/richfaces/renderkit/html/scripts/ListBase.js 2009-07-10
11:44:12 UTC (rev 14877)
+++
branches/community/3.3.X/ui/orderingList/src/main/resources/org/richfaces/renderkit/html/scripts/ListBase.js 2009-07-10
12:29:10 UTC (rev 14878)
@@ -31,16 +31,14 @@
Richfaces.ListBase.CONTROL_SET = ["A", "INPUT", "TEXTAREA",
"SELECT", "OPTION", "BUTTON"];
Richfaces.ListBase.prototype = {
- initialize : function(containerId, contentTableId, headerTableId, focusKeeperId,
- onclickControlId, controlClass, columnsClasses, rowClasses) {
+ initialize : function(containerId, controlClass, classes) {
this["rich:destructor"] = "destroy";
this.selectedItems = new Array();
- //this.layoutManager = layoutManager;
- this.container = $(containerId);
+ var contentTableId = containerId + "internal_tab";
this.shuttleTable = $(contentTableId);
this.shuttleTable.onselectstart = Richfaces.disableSelectionText;
- this.focusKeeper = $(focusKeeperId);
+ this.focusKeeper = $(containerId + "focusKeeper");
this.focusKeeper.focused = false;
//this.setFocus();
this.focusKeeper.observe("keydown", (function(e)
{this.onkeydownHandler(window.event || e)}).bindAsEventListener(this));
@@ -54,8 +52,7 @@
this.items = null;
//FIX
- this.rowClasses = rowClasses;
- this.columnsClasses = columnsClasses;
+ Object.extend(this, classes);
this.controlClass = controlClass;
this.retrieveShuttleItems(containerId, controlClass);
@@ -65,7 +62,7 @@
this.clckHandler = function(e) {this.onclickHandler(window.event ||
e)}.bindAsEventListener(this);
this.shuttleTable.observe("click", this.clckHandler);
- this.layoutManager = new LayoutManager(headerTableId, contentTableId);
+ this.layoutManager = new LayoutManager(containerId + "internal_header_tab",
contentTableId);
//---
http://jira.jboss.com/jira/browse/RF-3830 FF3 & Safari only!
this.tableElement = document.getElementById(contentTableId);
var rows = this.tableElement.tBodies[0].rows;
@@ -79,7 +76,7 @@
//---
var synch = function()
{this.layoutManager.widthSynchronization()}.bindAsEventListener(this);
RichShuttleUtils.execOnLoad(
- synch, RichShuttleUtils.Condition.ElementPresent(this.container), 100
+ synch, RichShuttleUtils.Condition.ElementPresent(this.shuttleTable.parentNode), 100
);
},
@@ -174,7 +171,7 @@
}
if (this.activeItem) {
- this.activeItem.item.doActive(this.getExtRowClass(this.activeItem.rowIndex),
this.columnsClasses);
+ this.activeItem.item.doActive(this.getExtRowClass(this.activeItem.rowIndex),
this.columnClasses);
}
},
@@ -223,7 +220,7 @@
if (event.ctrlKey) {
this.selectAll();
}
- this.activeItem.item.doActive(this.getExtRowClass(this.activeItem.rowIndex),
this.columnsClasses);
+ this.activeItem.item.doActive(this.getExtRowClass(this.activeItem.rowIndex),
this.columnClasses);
Event.stop(event);
break;
}
@@ -246,8 +243,8 @@
item.item.doNormal();
this.resetMarked();
- newItem.item.doSelect(this.getExtRowClass(newItem.rowIndex), this.columnsClasses);
- newItem.item.doActive(this.getExtRowClass(newItem.rowIndex), this.columnsClasses);
+ newItem.item.doSelect(this.getExtRowClass(newItem.rowIndex), this.columnClasses);
+ newItem.item.doActive(this.getExtRowClass(newItem.rowIndex), this.columnClasses);
this.setActiveItem(newItem);
this.selectedItems.push(newItem);
},
@@ -267,9 +264,9 @@
this.resetMarked();
if (activeItem.item.isSelected()) {
- activeItem.item.doNormal(this.getExtRowClass(activeItem.rowIndex),
this.columnsClasses);
+ activeItem.item.doNormal(this.getExtRowClass(activeItem.rowIndex),
this.columnClasses);
} else {
- activeItem.item.doSelect(this.getExtRowClass(activeItem.rowIndex),
this.columnsClasses);
+ activeItem.item.doSelect(this.getExtRowClass(activeItem.rowIndex),
this.columnClasses);
this.selectedItems[0] = markedShuttleItem; //TODO: delete
}
},
@@ -282,18 +279,18 @@
if (activeItem.item.isSelected()) {
this.selectedItems.remove(markedShuttleItem); //TODO :delete
- activeItem.item.doNormal(this.getExtRowClass(activeItem.rowIndex),
this.columnsClasses);
+ activeItem.item.doNormal(this.getExtRowClass(activeItem.rowIndex),
this.columnClasses);
} else {
- activeItem.item.doSelect(this.getExtRowClass(activeItem.rowIndex),
this.columnsClasses);
+ activeItem.item.doSelect(this.getExtRowClass(activeItem.rowIndex),
this.columnClasses);
this.selectedItems.push(markedShuttleItem); //TODO :delete
}
if ((this.activeItem != null) && (this.activeItem.rowIndex !=
activeItem.rowIndex)) {
//reset activity of an element
if (this.activeItem.item.isSelected()) {
- this.activeItem.item.doSelect(this.getExtRowClass(this.activeItem.rowIndex),
this.columnsClasses);
+ this.activeItem.item.doSelect(this.getExtRowClass(this.activeItem.rowIndex),
this.columnClasses);
} else {
- this.activeItem.item.doNormal(this.getExtRowClass(this.activeItem.rowIndex),
this.columnsClasses);
+ this.activeItem.item.doNormal(this.getExtRowClass(this.activeItem.rowIndex),
this.columnClasses);
}
}
},
@@ -323,7 +320,7 @@
selectItemRange : function(startIndex, endIndex) {
var rows = this.shuttleTbody.rows;
for (var i = startIndex; i <= endIndex; i++) {
- rows[i].item.doSelect(this.getExtRowClass(rows[i].rowIndex), this.columnsClasses);
+ rows[i].item.doSelect(this.getExtRowClass(rows[i].rowIndex), this.columnClasses);
this.selectedItems.push(rows[i]);
}
},
@@ -333,7 +330,7 @@
var length = rows.length;
for (var i = 0; i < length; i++) {
var shuttleItem = rows[i];
- shuttleItem.item.doNormal(this.getExtRowClass(shuttleItem.rowIndex),
this.columnsClasses);
+ shuttleItem.item.doNormal(this.getExtRowClass(shuttleItem.rowIndex),
this.columnClasses);
}
this.selectedItems.length = 0;
@@ -385,9 +382,9 @@
if (this.activeItem) {
if (this.activeItem.item.isSelected()) {
- this.activeItem.item.doSelect(this.getExtRowClass(this.activeItem.rowIndex),
this.columnsClasses);
+ this.activeItem.item.doSelect(this.getExtRowClass(this.activeItem.rowIndex),
this.columnClasses);
} else {
- this.activeItem.item.doNormal(this.getExtRowClass(this.activeItem.rowIndex),
this.columnsClasses);
+ this.activeItem.item.doNormal(this.getExtRowClass(this.activeItem.rowIndex),
this.columnClasses);
}
}
},
Modified:
branches/community/3.3.X/ui/orderingList/src/main/resources/org/richfaces/renderkit/html/scripts/OrderingList.js
===================================================================
---
branches/community/3.3.X/ui/orderingList/src/main/resources/org/richfaces/renderkit/html/scripts/OrderingList.js 2009-07-10
11:44:12 UTC (rev 14877)
+++
branches/community/3.3.X/ui/orderingList/src/main/resources/org/richfaces/renderkit/html/scripts/OrderingList.js 2009-07-10
12:29:10 UTC (rev 14878)
@@ -19,15 +19,17 @@
},
-Richfaces.OrderingList = Class.create(Richfaces.ListBase, {
- initialize: function($super, containerId, contentTableId, headerTableId, focusKeeperId,
ids, onclickControlId, events, controlClass, columnsClasses, rowClasses) {
- $super(containerId, contentTableId, headerTableId, focusKeeperId, onclickControlId,
controlClass, columnsClasses, rowClasses);
-
+Richfaces.OrderingList = Class.create(Richfaces.ListBase, {
+ initialize: function($super, id, options) {
+ options = options || {};
+ var containerId = id + (options.idFuffix || "");
+ $super(containerId, options.itemClass || Richfaces.OrderingListSelectItem,
options.classes);
+ this.container = $(id);
this.container.component = this;
- this.events = events;
+ this.events = options.events || {};
this.controlList = new Array();
- this.initControlList(containerId, ids);
+ this.initControlList(id);
for (var e in this.events) {
if (e && this.events[e]) {
@@ -42,14 +44,15 @@
this.container.component = null;
},
- initControlList : function(containerId, ids) {
+ initControlList : function(containerId) {
+ var ids = ['up', 'down', 'last', 'first'];
for (var i = 0; i < ids.length; i++) {
var id = ids[i];
- var node = $(containerId + id[0]);
- var disNode = $(containerId + id[1]);
+ var node = $(containerId + id);
+ var disNode = $(containerId + "dis" + id);
if (node && disNode) {
- node.observe('click',
Richfaces.OrderingList.HANDLERS[id[0]].bindAsEventListener(this));
- this.controlList[i] = new Richfaces.Control(node, disNode, false, false, id[0]);
+ node.observe('click',
Richfaces.OrderingList.HANDLERS[id].bindAsEventListener(this));
+ this.controlList[i] = new Richfaces.Control(node, disNode, false, false, id);
}
}
},
@@ -179,7 +182,7 @@
if (event.ctrlKey) {
this.selectAll();
}
- this.activeItem.item.doActive(this.getExtRowClass(this.activeItem.rowIndex),
this.columnsClasses);
+ this.activeItem.item.doActive(this.getExtRowClass(this.activeItem.rowIndex),
this.columnClasses);
this.controlListManager();
Event.stop(event);
break;
Modified:
branches/community/3.3.X/ui/orderingList/src/main/templates/org/richfaces/htmlOrderingList.jspx
===================================================================
---
branches/community/3.3.X/ui/orderingList/src/main/templates/org/richfaces/htmlOrderingList.jspx 2009-07-10
11:44:12 UTC (rev 14877)
+++
branches/community/3.3.X/ui/orderingList/src/main/templates/org/richfaces/htmlOrderingList.jspx 2009-07-10
12:29:10 UTC (rev 14878)
@@ -116,21 +116,21 @@
</table>
<f:clientId var="cId"/>
+ <c:scriptObject var="events">
+ <c:scriptOption attributes="onorderchanged, onorderchange, ontopclick,
onbottomclick, onupclick, ondownclick" wrapper="eventHandler" />
+ </c:scriptObject>
+ <c:scriptObject var="classes">
+ <c:scriptOption attributes="columnClasses, rowClasses"
wrapper="asArray" />
+ </c:scriptObject>
+ <c:scriptObject var="options">
+ <c:scriptOption variables="events, classes" />
+ </c:scriptObject>
<script type="text/javascript">
- var clientId = '#{cId}';
- new Richfaces.OrderingList('#{cId}', '#{cId}internal_tab',
- '#{cId}internal_header_tab', '#{cId}focusKeeper',
- [['up', 'disup'], ['down', 'disdown'],
['last', 'dislast'], ['first','disfirst']],
- '#{cId}sortLabel',
- {onorderchanged:#{this:getAsEventHandler(context, component,
"onorderchanged")},
- onorderchange:#{this:getAsEventHandler(context, component,
"onorderchange")},
- ontopclick:#{this:getAsEventHandler(context, component,
"ontopclick")},
- onbottomclick:#{this:getAsEventHandler(context, component,
"onbottomclick")},
- onupclick:#{this:getAsEventHandler(context, component,
"onupclick")},
- ondownclick:#{this:getAsEventHandler(context, component,
"ondownclick")}},
- Richfaces.OrderingListSelectItem,
- #{this:getColumnClassesAsJSArray(context, component)},
- #{this:getRowClassesAsJSArray(context, component)});
+ new Richfaces.OrderingList('#{cId}'
+ <c:if test="#{not empty options}">
+ , <f:writeAsScript value="#{options}" />
+ </c:if>
+ );
</script>
</div>
</f:root>