Author: Alex.Kolonitsky
Date: 2009-02-12 09:27:41 -0500 (Thu, 12 Feb 2009)
New Revision: 12641
Modified:
trunk/framework/impl/src/main/java/org/richfaces/component/UISwitchablePanel.java
trunk/test-applications/seleniumTest/richfaces/src/main/java/org/ajax4jsf/bean/RichPanelTestBean.java
trunk/test-applications/seleniumTest/richfaces/src/main/webapp/pages/togglePanel/togglePanelTest.xhtml
trunk/test-applications/seleniumTest/richfaces/src/test/java/org/richfaces/testng/TogglePanelTest.java
trunk/ui/togglePanel/src/main/java/org/richfaces/component/UITogglePanel.java
trunk/ui/togglePanel/src/main/java/org/richfaces/renderkit/html/ToggleControlRenderer.java
trunk/ui/togglePanel/src/main/java/org/richfaces/renderkit/html/TogglePanelRenderer.java
Log:
TogglePanel: state facets are not switched inside data table
https://jira.jboss.org/jira/browse/RF-5828
Modified:
trunk/framework/impl/src/main/java/org/richfaces/component/UISwitchablePanel.java
===================================================================
---
trunk/framework/impl/src/main/java/org/richfaces/component/UISwitchablePanel.java 2009-02-12
14:11:26 UTC (rev 12640)
+++
trunk/framework/impl/src/main/java/org/richfaces/component/UISwitchablePanel.java 2009-02-12
14:27:41 UTC (rev 12641)
@@ -67,15 +67,14 @@
public String getSwitchType() {
if (this.switchType != null) {
return switchType;
- }
+ }
ValueBinding switchTypeBinding = getValueBinding("switchType");
if (switchTypeBinding != null) {
return (String) switchTypeBinding.getValue(FacesContext.getCurrentInstance());
}
- //TODO use DEFAULT_METHOD
- return SERVER_METHOD;
+ return DEFAULT_METHOD;
}
public void setSwitchType(String switchType) {
@@ -103,7 +102,7 @@
if(facesEvent instanceof ActionEvent){
//TODO invoke action listener or remove it
- if(isImmediate()){
+ if (isImmediate()) {
FacesContext facesContext = FacesContext.getCurrentInstance();
facesContext.renderResponse();
}
@@ -119,7 +118,7 @@
Object oldValue = getValue();
if ((oldValue == null && newValue != null) ||
- (oldValue != null && !oldValue.equals(newValue))) {
+ (oldValue != null && !oldValue.equals(newValue))) {
queueEvent(new ValueChangeEvent(this, oldValue, newValue));
}
@@ -135,9 +134,7 @@
}
if (AjaxRendererUtils.isAjaxRequest(facesContext) &&
this.getSwitchType().equals(AJAX_METHOD)) {
- AjaxRendererUtils.addRegionByName(facesContext,
- this,
- this.getId());
+ AjaxRendererUtils.addRegionByName(facesContext, this, this.getId());
}
}
} else /* component should throw IllegalArgumentException for unknown events - RF-30 */
{
@@ -149,7 +146,7 @@
//no processing here
}
- protected Iterator getSwitchedFacetsAndChildren() {
+ protected Iterator<UIComponent> getSwitchedFacetsAndChildren() {
return getFacetsAndChildren();
}
@@ -163,9 +160,9 @@
}
// Process all facets and children of this component
- Iterator kids = getSwitchedFacetsAndChildren();
+ Iterator<UIComponent> kids = getSwitchedFacetsAndChildren();
while (kids.hasNext()) {
- UIComponent kid = (UIComponent) kids.next();
+ UIComponent kid = kids.next();
kid.processDecodes(context);
}
@@ -174,18 +171,6 @@
if (isImmediate()) {
validate(context);
-
-// if (!isValid()) {
-// context.renderResponse();
-// }
-
- //UISwitchablePanel has a special behavior
- //it stops processing after APPLY_REQUEST_VALUES phase
- //when immediate
-//
-// set context.renderResponse() in broadcast method if component is immediate
-// and ActionEvent is occured (RF-1032)
-// context.renderResponse();
}
} catch (RuntimeException e) {
context.renderResponse();
@@ -195,30 +180,30 @@
public void processUpdates(FacesContext context) {
if (context == null) {
- throw new NullPointerException("FacesContext is null!");
- }
-
- if (!isRendered()) {
- return ;
- }
-
- Iterator kids = getSwitchedFacetsAndChildren();
- while (kids.hasNext()) {
- UIComponent kid = (UIComponent) kids.next();
- kid.processUpdates(context);
- }
-
- try {
- updateModel(context);
-
- if (!isValid()) {
- context.renderResponse();
- }
-
- } catch (RuntimeException e) {
- context.renderResponse();
- throw e;
- }
+ throw new NullPointerException("FacesContext is null!");
+ }
+
+ if (!isRendered()) {
+ return;
+ }
+
+ Iterator<UIComponent> kids = getSwitchedFacetsAndChildren();
+ while (kids.hasNext()) {
+ UIComponent kid = kids.next();
+ kid.processUpdates(context);
+ }
+
+ try {
+ updateModel(context);
+
+ if (!isValid()) {
+ context.renderResponse();
+ }
+
+ } catch (RuntimeException e) {
+ context.renderResponse();
+ throw e;
+ }
}
public void processValidators(FacesContext context) {
@@ -230,7 +215,7 @@
return ;
}
- Iterator kids = getSwitchedFacetsAndChildren();
+ Iterator<UIComponent> kids = getSwitchedFacetsAndChildren();
while (kids.hasNext()) {
UIComponent kid = (UIComponent) kids.next();
kid.processValidators(context);
@@ -244,7 +229,6 @@
context.renderResponse();
}
}
-
} catch (RuntimeException e) {
context.renderResponse();
throw e;
Modified:
trunk/test-applications/seleniumTest/richfaces/src/main/java/org/ajax4jsf/bean/RichPanelTestBean.java
===================================================================
---
trunk/test-applications/seleniumTest/richfaces/src/main/java/org/ajax4jsf/bean/RichPanelTestBean.java 2009-02-12
14:11:26 UTC (rev 12640)
+++
trunk/test-applications/seleniumTest/richfaces/src/main/java/org/ajax4jsf/bean/RichPanelTestBean.java 2009-02-12
14:27:41 UTC (rev 12641)
@@ -24,6 +24,9 @@
import java.util.HashMap;
import java.util.Map;
+import javax.faces.application.FacesMessage;
+import javax.faces.application.FacesMessage.Severity;
+import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
public class RichPanelTestBean {
@@ -193,6 +196,8 @@
}
public void actionListener(ActionEvent event) {
+ FacesContext facesContext = FacesContext.getCurrentInstance();
+ facesContext.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR,
"a", "b"));
this.value = event.getComponent().getId();
}
Modified:
trunk/test-applications/seleniumTest/richfaces/src/main/webapp/pages/togglePanel/togglePanelTest.xhtml
===================================================================
(Binary files differ)
Modified:
trunk/test-applications/seleniumTest/richfaces/src/test/java/org/richfaces/testng/TogglePanelTest.java
===================================================================
---
trunk/test-applications/seleniumTest/richfaces/src/test/java/org/richfaces/testng/TogglePanelTest.java 2009-02-12
14:11:26 UTC (rev 12640)
+++
trunk/test-applications/seleniumTest/richfaces/src/test/java/org/richfaces/testng/TogglePanelTest.java 2009-02-12
14:27:41 UTC (rev 12641)
@@ -32,7 +32,6 @@
public void testTogglePanelComponentAjaxMode(Template template) {
renderPage(template, RESET_METHOD);
- //FIXME:
https://jira.jboss.org/jira/browse/RF-5828
String parentId = getParentId() + "_form:";
String inputId = parentId + "_value";
@@ -46,6 +45,7 @@
String twoFacet = parentId + "ajax_state_two";
writeStatus("Check ajax mode");
+
writeStatus("Click on ajax controlNext");
clickAjaxCommandAndWait(controlNext);
AssertValueEquals(inputId, "ajax_next");
@@ -72,7 +72,6 @@
public void testTogglePanelComponentServerMode(Template template) {
renderPage(template, RESET_METHOD);
- //FIXME:
https://jira.jboss.org/jira/browse/RF-5828
String parentId = getParentId() + "_form:";
String inputId = parentId + "_value";
Modified: trunk/ui/togglePanel/src/main/java/org/richfaces/component/UITogglePanel.java
===================================================================
---
trunk/ui/togglePanel/src/main/java/org/richfaces/component/UITogglePanel.java 2009-02-12
14:11:26 UTC (rev 12640)
+++
trunk/ui/togglePanel/src/main/java/org/richfaces/component/UITogglePanel.java 2009-02-12
14:27:41 UTC (rev 12641)
@@ -54,13 +54,13 @@
public abstract String getSwitchType();
public abstract void setSwitchType(String switchType);
- public Object convertSwitchValue(UIComponent component, Object object) {
- if (component instanceof UIToggleControl) {
- UIToggleControl toggleControl = (UIToggleControl) component;
+ public Object convertSwitchValue(UIComponent toggleControlComponent, Object object) {
+ if (toggleControlComponent instanceof UIToggleControl) {
+ UIToggleControl toggleControl = (UIToggleControl) toggleControlComponent;
String stateName = toggleControl.getSwitchToState();
- List stateOrderList = getStateOrderList();
+ List<String> stateOrderList = getStateOrderList();
if (stateName != null) {
return stateName;
@@ -75,21 +75,19 @@
} else {
return stateOrderList.get(++currentIdx);
}
- }
- else{
+ } else {
return stateOrderList.get(0);
}
-
}
} else {
- return super.convertSwitchValue(component, object);
+ return super.convertSwitchValue(toggleControlComponent, object);
}
}
- public List getStateOrderList() {
- List list = new ArrayList();
+ public List<String> getStateOrderList() {
+ List<String> list = new ArrayList<String>();
String order = getStateOrder();
- if(order!=null) {
+ if (order != null) {
StringTokenizer st = new StringTokenizer(order, ";,", false);
while(st.hasMoreTokens()) {
String name = st.nextToken().trim();
Modified:
trunk/ui/togglePanel/src/main/java/org/richfaces/renderkit/html/ToggleControlRenderer.java
===================================================================
---
trunk/ui/togglePanel/src/main/java/org/richfaces/renderkit/html/ToggleControlRenderer.java 2009-02-12
14:11:26 UTC (rev 12640)
+++
trunk/ui/togglePanel/src/main/java/org/richfaces/renderkit/html/ToggleControlRenderer.java 2009-02-12
14:27:41 UTC (rev 12641)
@@ -24,6 +24,7 @@
*/
package org.richfaces.renderkit.html;
+import java.io.IOException;
import java.util.Map;
import javax.faces.component.UIComponent;
@@ -35,11 +36,9 @@
import org.ajax4jsf.event.AjaxEvent;
import org.ajax4jsf.renderkit.AjaxRendererUtils;
import org.ajax4jsf.renderkit.HeaderResourcesRendererBase;
-import org.ajax4jsf.renderkit.RendererUtils;
import org.richfaces.component.UIToggleControl;
import org.richfaces.component.UITogglePanel;
import org.richfaces.event.SwitchablePanelSwitchEvent;
-import java.io.IOException;
/**
* @author igels
@@ -53,7 +52,7 @@
/* (non-Javadoc)
* @see org.ajax4jsf.renderkit.RendererBase#getComponentClass()
*/
- protected Class getComponentClass() {
+ protected Class<? extends UIComponent> getComponentClass() {
return UIToggleControl.class;
}
@@ -69,9 +68,9 @@
public void doDecode(FacesContext context, UIComponent component) {
super.doDecode(context, component);
ExternalContext exCtx = context.getExternalContext();
- Map rqMap = exCtx.getRequestParameterMap();
+ Map<String, String> rqMap = exCtx.getRequestParameterMap();
Object clnId = rqMap.get(component.getClientId(context));
- if(clnId!=null) {
+ if (clnId != null) {
// enqueue event here for this component or for component with Id
// taken fro forId attribute
UIToggleControl control = (UIToggleControl)component;
@@ -80,17 +79,10 @@
new SwitchablePanelSwitchEvent(panel, null, control).queue();
-// ToggleEvent event = new ToggleEvent(panel, control.getSwitchToState());
-// if (control.isImmediate()) {
-// event.setPhaseId(PhaseId.APPLY_REQUEST_VALUES);
-// } else {
-// event.setPhaseId(PhaseId.INVOKE_APPLICATION);
-// }
-// event.queue();
-
if(UITogglePanel.AJAX_METHOD.equals(panel.getSwitchType())) {
new AjaxEvent(component).queue();
}
+
ActionEvent actionEvent = new ActionEvent(component);
component.queueEvent(actionEvent);
}
Modified:
trunk/ui/togglePanel/src/main/java/org/richfaces/renderkit/html/TogglePanelRenderer.java
===================================================================
---
trunk/ui/togglePanel/src/main/java/org/richfaces/renderkit/html/TogglePanelRenderer.java 2009-02-12
14:11:26 UTC (rev 12640)
+++
trunk/ui/togglePanel/src/main/java/org/richfaces/renderkit/html/TogglePanelRenderer.java 2009-02-12
14:27:41 UTC (rev 12641)
@@ -32,7 +32,6 @@
import javax.faces.FacesException;
import javax.faces.component.UIComponent;
-import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
import javax.faces.context.ResponseWriter;
@@ -49,19 +48,18 @@
/* (non-Javadoc)
* @see org.ajax4jsf.renderkit.RendererBase#getComponentClass()
*/
- protected Class getComponentClass() {
+ protected Class<? extends UIComponent> getComponentClass() {
return UITogglePanel.class;
}
public void doDecode(FacesContext context, UIComponent component) {
super.doDecode(context, component);
- ExternalContext exCtx = context.getExternalContext();
- Map rqMap = exCtx.getRequestParameterMap();
+ Map<String, String> rqMap =
context.getExternalContext().getRequestParameterMap();
Object clnId = rqMap.get(component.getClientId(context));
UITogglePanel panel = (UITogglePanel)component;
- if (clnId!=null) {
+ if (clnId != null) {
if (UITogglePanel.CLIENT_METHOD.equals(panel.getSwitchType())) {
- new SwitchablePanelSwitchEvent(panel, (String) clnId, null).queue();
+ new SwitchablePanelSwitchEvent(panel, clnId, null).queue();
}
}
}
@@ -79,11 +77,11 @@
//xxx by nick - denis - do not catch exception, rethrow them
public void handleFacets(FacesContext context, UITogglePanel component) throws
IOException {
UITogglePanel panel = (UITogglePanel)component;
- List stateOrderList = component.getStateOrderList();
+ List<String> stateOrderList = component.getStateOrderList();
String state = (String) component.getValue();
if (state == null) {
String initialState = component.getInitialState();
- if(initialState != null) {
+ if (initialState != null) {
state = initialState;
} else {
if (!stateOrderList.isEmpty()) {
@@ -91,18 +89,18 @@
} else {
throw new FacesException("The \"initialState\" attribute of the
togglePanel component should be set if \"stateOrder\" attribute is
empty!");
}
- }
+ }
}
ResponseWriter out = context.getResponseWriter();
String switchType = panel.getSwitchType();
- if(UITogglePanel.CLIENT_METHOD.equals(switchType)) {
+ if (UITogglePanel.CLIENT_METHOD.equals(switchType)) {
// Client
String panelId = panel.getClientId(context);
StringBuffer divIds = new StringBuffer();
boolean first = true;
- for (Iterator iterator = stateOrderList.iterator(); iterator.hasNext();) {
+ for (Iterator<String> iterator = stateOrderList.iterator(); iterator.hasNext();)
{
String stateName = (String) iterator.next();
UIComponent child = getFacet(component, stateName);
@@ -132,7 +130,9 @@
out.endElement("input");
out.endElement("div");
- String script = MessageFormat.format(CLIENT_SCRIPT, new Object[]{panelId,
divIds.toString(), state});
+
+ String script = MessageFormat.format(CLIENT_SCRIPT,
+ panelId, divIds.toString(), state);
out.write(script);
// } else if(UITogglePanel.AJAX_METHOD.equals(switchType)) {