package sushi.application.pages.transformation.patternbuilder.model;
import java.util.Map;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.form.OnChangeAjaxBehavior;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.model.Model;
import sushi.transformation.collection.SushiPatternTree;
public class CriteriaValuePanel extends Panel {
private static final long serialVersionUID = 1L;
private Form<Void> layoutForm;
private String attributeExpression;
private Map<String, String> criteriaAttributesAndValues;
private SushiPatternTree patternTree;
public CriteriaValuePanel(String id, String attributeExpression, Map<String, String> criteriaAttributesAndValues, SushiPatternTree patternTree) {
super(id);
this.attributeExpression = attributeExpression;
this.criteriaAttributesAndValues = criteriaAttributesAndValues;
this.patternTree = patternTree;
layoutForm = new Form<Void>("layoutForm");
buildCriteriaValueInput();
add(layoutForm);
}
private void buildCriteriaValueInput() {
final AttributeExpressionTextField criteriaValueInput = new AttributeExpressionTextField("criteriaValueInput", new Model<String>(), patternTree);
criteriaValueInput.setOutputMarkupId(true);
OnChangeAjaxBehavior onChangeAjaxBehavior = new OnChangeAjaxBehavior() {
private static final long serialVersionUID = -5737941362786901904L;
@Override
protected void onUpdate(AjaxRequestTarget target) {
if (criteriaValueInput.getModelObject() == null || criteriaValueInput.getModelObject().trim().isEmpty()) {
criteriaAttributesAndValues.remove(attributeExpression);
} else {
criteriaAttributesAndValues.put(attributeExpression, criteriaValueInput.getModelObject());
}
}
};
criteriaValueInput.add(onChangeAjaxBehavior);
criteriaValueInput.setModelObject(criteriaAttributesAndValues.get(attributeExpression));
layoutForm.add(criteriaValueInput);
}
}