package sushi.application.pages.transformation.patternbuilder.model;
import java.util.ArrayList;
import java.util.List;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior;
import org.apache.wicket.ajax.form.OnChangeAjaxBehavior;
import org.apache.wicket.ajax.markup.html.form.AjaxButton;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.form.DropDownChoice;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.list.ListItem;
import org.apache.wicket.markup.html.list.ListView;
import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.model.Model;
import org.apache.wicket.model.PropertyModel;
import sushi.application.pages.transformation.AdvancedTransformationRuleEditorPanel;
import sushi.correlation.CorrelationRule;
import sushi.event.SushiEventType;
import sushi.event.attribute.SushiAttribute;
import sushi.transformation.element.PatternOperatorElement;
public class EveryDistinctPatternOperatorPanel extends Panel {
private static final long serialVersionUID = 1L;
private Form<Void> layoutForm;
private WebMarkupContainer distinctAttributesMarkupContainer;
private List<String> distinctAttributes;
public EveryDistinctPatternOperatorPanel(String id, PatternOperatorElement element, final AdvancedTransformationRuleEditorPanel panel) {
super(id);
layoutForm = new Form<Void>("layoutForm");
distinctAttributes = element.getDistinctAttributes();
AjaxButton addDistinctAttributeButton = new AjaxButton("addDistinctAttributeButton", layoutForm) {
private static final long serialVersionUID = -118988274912205531L;
@Override
public void onSubmit(AjaxRequestTarget target, Form<?> form) {
distinctAttributes.add(new String());
target.add(distinctAttributesMarkupContainer);
}
};
addDistinctAttributeButton.setOutputMarkupId(true);
layoutForm.add(addDistinctAttributeButton);
ListView<String> distinctAttributesListView = new ListView<String>("distinctAttributesListView", distinctAttributes) {
private static final long serialVersionUID = 4168798264053898499L;
@Override
protected void populateItem(final ListItem<String> item) {
final AttributeExpressionTextField distinctAttributeInput = new AttributeExpressionTextField("distinctAttributeInput", new Model<String>(), panel.getPatternBuilderPanel().getPatternTree());
OnChangeAjaxBehavior onChangeAjaxBehavior = new OnChangeAjaxBehavior() {
private static final long serialVersionUID = 2339672763583311932L;
@Override
protected void onUpdate(AjaxRequestTarget target) {
item.setModelObject(distinctAttributeInput.getModelObject());
}
};
distinctAttributeInput.setModelObject(item.getModelObject());
distinctAttributeInput.add(onChangeAjaxBehavior);
distinctAttributeInput.setOutputMarkupId(true);
item.add(distinctAttributeInput);
AjaxButton removeDistinctButton = new AjaxButton("removeDistinctAttributeButton", layoutForm) {
private static final long serialVersionUID = -4244320500409194238L;
@Override
public void onSubmit(AjaxRequestTarget target, Form<?> form) {
distinctAttributes.remove(item.getModelObject());
target.add(distinctAttributesMarkupContainer);
}
};
item.add(removeDistinctButton);
}
};
distinctAttributesMarkupContainer = new WebMarkupContainer("distinctAttributesMarkupContainer");
distinctAttributesMarkupContainer.add(distinctAttributesListView);
distinctAttributesMarkupContainer.setOutputMarkupId(true);
layoutForm.addOrReplace(distinctAttributesMarkupContainer);
add(layoutForm);
}
}