Author: abelevich
Date: 2009-12-03 10:09:52 -0500 (Thu, 03 Dec 2009)
New Revision: 16053
Modified:
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/UISubTable.java
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/state/DataTableState.java
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/model/visual/impl/ColumnVisualModelImpl.java
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/renderkit/ToggleControlRendererBase.java
root/ui-sandbox/trunk/components/tables/ui/src/main/resources/META-INF/resources/toggler.js
Log:
add client toggle support
Modified:
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/UISubTable.java
===================================================================
---
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/UISubTable.java 2009-12-03
13:19:01 UTC (rev 16052)
+++
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/UISubTable.java 2009-12-03
15:09:52 UTC (rev 16053)
@@ -27,7 +27,6 @@
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.event.AbortProcessingException;
-import javax.faces.event.ComponentSystemEventListener;
import javax.faces.event.FacesEvent;
import javax.faces.event.PhaseId;
@@ -46,7 +45,7 @@
*
*/
-public abstract class UISubTable extends UIDataTableBase implements Row, Column,
Expandable, ComponentSystemEventListener {
+public abstract class UISubTable extends UIDataTableBase implements Row, Column,
Expandable {
public static final String COMPONENT_TYPE = "org.richfaces.SubTable";
@@ -62,7 +61,7 @@
private SubTableVisualModel visualModel;
- private DataComponentState componentState;
+ private SubTableState componentState;
enum PropertyKeys {
switchType, expanded, toggleExpression, childState, visualModel
@@ -175,7 +174,7 @@
ValueExpression expression = getValueExpression("componentState");
if(expression != null) {
- componentState = (DataComponentState)expression.getValue(elContext);
+ componentState = (SubTableState)expression.getValue(elContext);
}
if(componentState == null) {
@@ -183,7 +182,10 @@
}
if(componentState == null) {
- componentState = createComponentState();
+ Object state = createComponentState();
+ if(state instanceof SubTableState) {
+ componentState = (SubTableState)state;
+ }
}
if(expression != null && !expression.isReadOnly(elContext)) {
@@ -191,10 +193,7 @@
}
}
- if(componentState instanceof SubTableState) {
- dataTableState.addSubTableState((SubTableState)componentState);
- }
-
+ dataTableState.addSubTableState(componentState);
return componentState;
}
@@ -208,13 +207,64 @@
Object [] state = (Object [])stateObject;
if(state != null) {
super.setIterationState(state[0]);
- this.componentState = (DataComponentState)state[1];
+ this.componentState = (SubTableState)state[1];
} else {
super.setIterationState(state);
this.componentState = null;
}
}
-
+
+/* @Override
+ public Object saveState(FacesContext context) {
+
+ // TODO handle model serialization - "execute" model
+ Boolean componentStateIsStateHolder = null;
+ Object savedComponentState = null;
+
+ // TODO - partial state saving handling
+ if (componentState instanceof StateHolder) {
+ componentStateIsStateHolder = Boolean.TRUE;
+
+ StateHolder stateHolder = (StateHolder) componentState;
+
+ if (!stateHolder.isTransient()) {
+ savedComponentState = stateHolder.saveState(context);
+ }
+ } else {
+ componentStateIsStateHolder = Boolean.FALSE;
+
+ if (componentState instanceof Serializable) {
+ savedComponentState = componentState;
+ }
+ }
+
+ return new Object[] {super.saveState(context), savedComponentState,
componentStateIsStateHolder};
+ }
+
+
+ @Override
+ public void restoreState(FacesContext context, Object stateObject) {
+ Object[] state = (Object[]) stateObject;
+
+ // TODO Auto-generated method stub
+ super.restoreState(context, state[0]);
+
+ Object savedComponentState = state[1];
+
+ if (savedComponentState != null) {
+ boolean componentStateIsStateHolder = ((Boolean) state[2]).booleanValue();
+
+ if (componentStateIsStateHolder) {
+ componentState = (SubTableState)createComponentState();
+ ((StateHolder) componentState).restoreState(context,
savedComponentState);
+ } else {
+ componentState = (SubTableState) restoreAttachedState(context,
savedComponentState);
+ }
+
+ // TODO update state model binding
+ }
+ }
+ */
public void setExpanded(boolean expanded) {
this.expanded = expanded;
}
@@ -246,16 +296,16 @@
if(event instanceof ToggleEvent) {
ToggleEvent toggleEvent = (ToggleEvent)event;
- MethodExpression expression = getToggleListener();
- if(expression != null) {
- expression.invoke(getFacesContext().getELContext(), new Object[]{toggleEvent});
- }
-
//not sure that this is right ... need to discuss
SubTableState state = getCurrentComponentState();
if(event.isAppropriateListener(state)) {
toggleEvent.processListener(state);
}
+
+ MethodExpression expression = getToggleListener();
+ if(expression != null) {
+ expression.invoke(getFacesContext().getELContext(), new Object[]{toggleEvent});
+ }
}
}
Modified:
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/state/DataTableState.java
===================================================================
---
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/state/DataTableState.java 2009-12-03
13:19:01 UTC (rev 16052)
+++
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/state/DataTableState.java 2009-12-03
15:09:52 UTC (rev 16053)
@@ -65,7 +65,9 @@
}
public void addSubTableState(SubTableState state) {
- this.subTableStates.put(state.getId(), state);
+ if(state != null) {
+ this.subTableStates.put(state.getId(), state);
+ }
}
public SubTableState getSubTableState(String id) {
Modified:
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/model/visual/impl/ColumnVisualModelImpl.java
===================================================================
---
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/model/visual/impl/ColumnVisualModelImpl.java 2009-12-03
13:19:01 UTC (rev 16052)
+++
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/model/visual/impl/ColumnVisualModelImpl.java 2009-12-03
15:09:52 UTC (rev 16053)
@@ -7,4 +7,6 @@
*
*/
public class ColumnVisualModelImpl implements ColumnVisualModel {
+ public ColumnVisualModelImpl() {
+ }
}
Modified:
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/renderkit/ToggleControlRendererBase.java
===================================================================
---
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/renderkit/ToggleControlRendererBase.java 2009-12-03
13:19:01 UTC (rev 16052)
+++
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/renderkit/ToggleControlRendererBase.java 2009-12-03
15:09:52 UTC (rev 16053)
@@ -55,7 +55,7 @@
Map<String, String> params =
context.getExternalContext().getRequestParameterMap();
- String hiddenId = toggle.getClientId();
+ String hiddenId = toggle.getClientId() + HIDDEN;
String state = params.get(hiddenId);
if(state != null && state.trim().length()> 0) {
@@ -92,8 +92,9 @@
encodeControl(context, writer, toggleControl, switchType, expanded, false);
encodeControl(context, writer, toggleControl, switchType, !expanded, true);
- // encodeHiddenInput(context, writer, toggleControl);
+ encodeHiddenInput(context, writer, toggleControl);
+
}
}
}
Modified:
root/ui-sandbox/trunk/components/tables/ui/src/main/resources/META-INF/resources/toggler.js
===================================================================
---
root/ui-sandbox/trunk/components/tables/ui/src/main/resources/META-INF/resources/toggler.js 2009-12-03
13:19:01 UTC (rev 16052)
+++
root/ui-sandbox/trunk/components/tables/ui/src/main/resources/META-INF/resources/toggler.js 2009-12-03
15:09:52 UTC (rev 16053)
@@ -30,16 +30,16 @@
this.command("show", elements);
}
this.state = toState;
- // this.saveState(this.state);
+ this.saveState(this.state);
}
}
Toggle.prototype.saveState= function(state) {
- /*var id = this.hidden;
+ var id = this.hidden;
var element = this.getElement(id);
if(element) {
element.attr('value', state);
- }*/
+ }
}
Toggle.prototype.clientToggle= function(toState){
@@ -47,14 +47,9 @@
}
Toggle.prototype.serverToggle = function(toState) {
- if(mojarra && mojarra.jsfcljs) {
- var form = this.getElement(this.formId);
- var prv = {};
- if(this.id) {
- prv[this.id] = toState;
- mojarra.jsfcljs(form[0],prv,'');
- }
- }
+ this.saveState(toState);
+ var form = this.getElement(this.formId);
+ form.submit();
}
Toggle.prototype.ajaxToggle = function(toState) {