package sushi.application.pages.transformation.patternbuilder.model;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.form.OnChangeAjaxBehavior;
import org.apache.wicket.ajax.markup.html.form.AjaxCheckBox;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.form.TextField;
import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.model.Model;
import org.apache.wicket.model.PropertyModel;
import sushi.transformation.element.PatternOperatorElement;
import sushi.transformation.element.RangeElement;
public class UntilPatternOperatorRangePanel extends Panel {
private static final long serialVersionUID = 1L;
private Boolean leftEndpointEnabled;
private Boolean rightEndpointEnabled;
private Form<Void> layoutForm;
private int leftEndpoint;
private AjaxCheckBox leftEndpointEnabledCheckBox;
private TextField<Integer> leftEndpointInput;
private int rightEndpoint;
private TextField<Integer> rightEndpointInput;
private AjaxCheckBox rightEndpointEnabledCheckBox;
public UntilPatternOperatorRangePanel(String id, PatternOperatorElement element) {
super(id);
this.leftEndpointEnabled = true;
this.rightEndpointEnabled = true;
layoutForm = new Form<Void>("layoutForm");
final RangeElement rangeElement = element.getRangeElement();
leftEndpoint = rangeElement.getLeftEndpoint();
leftEndpointInput = new TextField<Integer>("leftEndpointInput", new PropertyModel<Integer>(this, "leftEndpoint")) {
private static final long serialVersionUID = -3575218222042227551L;
@Override
public boolean isEnabled() {
return leftEndpointEnabledCheckBox.getModelObject();
}
};
OnChangeAjaxBehavior onChangeAjaxBehavior = new OnChangeAjaxBehavior() {
private static final long serialVersionUID = 8789007504544472059L;
@Override
protected void onUpdate(AjaxRequestTarget target) {
rangeElement.setLeftEndpoint(leftEndpoint);
}
};
leftEndpointInput.add(onChangeAjaxBehavior);
leftEndpointInput.setOutputMarkupId(true);
layoutForm.add(leftEndpointInput);
leftEndpointEnabledCheckBox = new AjaxCheckBox("leftEndpointEnabledCheckbox", Model.of(rangeElement.getLeftEndpoint() != -1)) {
private static final long serialVersionUID = -8207035371422899809L;
@Override
protected void onUpdate(AjaxRequestTarget target) {
if (leftEndpointEnabledCheckBox.getModelObject()) {
leftEndpoint = 0;
} else {
leftEndpoint = -1;
}
rangeElement.setLeftEndpoint(leftEndpoint);
target.add(leftEndpointInput);
}
};
leftEndpointEnabledCheckBox.setOutputMarkupId(true);
layoutForm.add(leftEndpointEnabledCheckBox);
rightEndpoint = rangeElement.getRightEndpoint();
rightEndpointInput = new TextField<Integer>("rightEndpointInput", new PropertyModel<Integer>(this, "rightEndpoint")) {
private static final long serialVersionUID = 4121692531784473397L;
@Override
public boolean isEnabled() {
return rightEndpointEnabledCheckBox.getModelObject();
}
};
onChangeAjaxBehavior = new OnChangeAjaxBehavior() {
private static final long serialVersionUID = 68845840865685483L;
@Override
protected void onUpdate(AjaxRequestTarget target) {
rangeElement.setRightEndpoint(rightEndpoint);
}
};
rightEndpointInput.add(onChangeAjaxBehavior);
rightEndpointInput.setOutputMarkupId(true);
layoutForm.add(rightEndpointInput);
rightEndpointEnabledCheckBox = new AjaxCheckBox("rightEndpointEnabledCheckbox", Model.of(rangeElement.getLeftEndpoint() != -1)) {
private static final long serialVersionUID = -7937834776333473869L;
protected void onUpdate(AjaxRequestTarget target) {
if (rightEndpointEnabledCheckBox.getModelObject()) {
rightEndpoint = 1;
} else {
rightEndpoint = -1;
}
rangeElement.setRightEndpoint(rightEndpoint);
target.add(rightEndpointInput);
}
};
rightEndpointEnabledCheckBox.setOutputMarkupId(true);
layoutForm.add(rightEndpointEnabledCheckBox);
add(layoutForm);
}
}