/*
* Copyright 2011-2013 PrimeFaces Extensions.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.primefaces.extensions.showcase.controller.dynaform;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.EnumSet;
import java.util.List;
import java.util.Set;
import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.component.visit.VisitContext;
import javax.faces.component.visit.VisitHint;
import javax.faces.context.FacesContext;
import org.primefaces.context.RequestContext;
import org.primefaces.extensions.component.dynaform.DynaForm;
import org.primefaces.extensions.model.dynaform.DynaFormModel;
import org.primefaces.extensions.model.dynaform.DynaFormRow;
import org.primefaces.extensions.showcase.model.dynaform.Condition;
import org.primefaces.extensions.util.visitcallback.ExecutableVisitCallback;
import org.primefaces.extensions.util.visitcallback.VisitTaskExecutor;
/**
* ClearDynaFormController
*
* @author Oleg Varaksin / last modified by $Author$
* @version $Revision$
*/
@ManagedBean
@ViewScoped
public class ClearDynaFormController implements Serializable {
private static final long serialVersionUID = 20130504L;
public static final Set<VisitHint> VISIT_HINTS = EnumSet.of(VisitHint.SKIP_UNRENDERED);
private DynaFormModel model;
private List<Condition> conditions;
@PostConstruct
protected void initialize() {
model = new DynaFormModel();
conditions = new ArrayList<Condition>();
// 1. condition and row
Condition condition = new Condition("model", 2, "eq", "mercedes", 0);
conditions.add(condition);
DynaFormRow row = model.createRegularRow();
row.addControl(condition, "column");
row.addControl(condition, "offset");
row.addControl(condition, "operator");
row.addControl(condition, "value");
row.addControl(condition, "clear");
// 2. condition and row
condition = new Condition("manufacturer", 1, "not", "chrysler group", 1);
conditions.add(condition);
row = model.createRegularRow();
row.addControl(condition, "column");
row.addControl(condition, "offset");
row.addControl(condition, "operator");
row.addControl(condition, "value");
row.addControl(condition, "clear");
// 3. condition and row
condition = new Condition("year", 0, "lt", "2010", 2);
conditions.add(condition);
row = model.createRegularRow();
row.addControl(condition, "column");
row.addControl(condition, "offset");
row.addControl(condition, "operator");
row.addControl(condition, "value");
row.addControl(condition, "clear");
}
public void clearInputs(int index) {
FacesContext fc = FacesContext.getCurrentInstance();
DynaForm dynaForm = (DynaForm) fc.getViewRoot().findComponent(":mainForm:dynaForm");
// Ids of components to be visited
String[] ids = new String[] {"tableColumn", "inputValue", "inputOffset", "valueOperator"};
VisitTaskExecutor visitTaskExecutor =
new ClearInputsExecutor(fc.getELContext(), RequestContext.getCurrentInstance(), ids, index);
// clear inputs in the visit callback
ExecutableVisitCallback visitCallback = new ExecutableVisitCallback(visitTaskExecutor);
dynaForm.visitTree(VisitContext.createVisitContext(fc, null, VISIT_HINTS), visitCallback);
}
public String getConditions() {
StringBuilder sb = new StringBuilder();
for (Condition condition : conditions) {
sb.append(condition.toString());
sb.append("<br/>");
}
return sb.toString();
}
public DynaFormModel getModel() {
return model;
}
}