package sushi.application.pages.simulator; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior; 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.form.TextField; 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 sushi.application.pages.AbstractSushiPage; import sushi.application.pages.simulator.model.SimulationTreeTableElement; import sushi.bpmn.decomposition.ANDComponent; import sushi.bpmn.decomposition.IPattern; import sushi.bpmn.decomposition.LoopComponent; import sushi.bpmn.decomposition.SequenceComponent; import sushi.bpmn.decomposition.XORComponent; import sushi.bpmn.element.AbstractBPMNElement; import sushi.correlation.CorrelationRule; import sushi.event.SushiEventType; import sushi.event.attribute.SushiAttribute; import sushi.simulation.ValueRule; import sushi.simulation.ValueRuleType; import sushi.util.Tuple; public class AdvancedValuesPanel extends Panel{ private SimulationPanel simulationPanel; // private DropDownChoice<SushiAttribute> attributeSelect; // private DropDownChoice<String> valueSelect; private List<SushiAttribute> attributeList; private WebMarkupContainer valueRuleMarkupContainer; private List<ValueRule> valueRules; private ListView<ValueRule> valueRuleListView; private final List<ValueRuleType> valueOptionList = new ArrayList<ValueRuleType>(Arrays.asList(ValueRuleType.EQUAL, ValueRuleType.UNEQUAL)); public AdvancedValuesPanel(String id, final SimulationPanel simulationPanel) { super(id); this.simulationPanel = simulationPanel; this.attributeList = new ArrayList<SushiAttribute>(); this.setOutputMarkupId(true); Form<Void> form = new Form<Void>("form"); valueRules = new ArrayList<ValueRule>(); // attributeSelect = new DropDownChoice<SushiAttribute>("attributeSelect", new Model<SushiAttribute>(), attributeList); // attributeSelect.setOutputMarkupId(true); // form.add(attributeSelect); // valueSelect = new DropDownChoice<String>("valueSelect", new Model<String>(), valueOptionList); // form.add(valueSelect); AjaxButton addButton = new AjaxButton("addButton", form) { private static final long serialVersionUID = 1L; @Override public void onSubmit(AjaxRequestTarget target, Form form) { valueRules.add(new ValueRule()); target.add(valueRuleMarkupContainer); } }; form.add(addButton); valueRuleListView = new ListView<ValueRule>("valueRuleListView", valueRules){ @Override protected void populateItem(ListItem<ValueRule> item) { final ValueRule valueRule = item.getModelObject(); final DropDownChoice<SushiAttribute> attributeSelect = new DropDownChoice<SushiAttribute>("attributeSelect", new Model<SushiAttribute>(), attributeList); attributeSelect.setOutputMarkupId(true); item.add(attributeSelect); attributeSelect.setModelObject(valueRule.getAttribute()); attributeSelect.add(new AjaxFormComponentUpdatingBehavior("onChange") { private static final long serialVersionUID = -4107411122913362658L; @Override protected void onUpdate(AjaxRequestTarget target) { valueRule.setAttribute(attributeSelect.getModelObject()); target.add(valueRuleMarkupContainer); } }); final DropDownChoice<ValueRuleType> valueSelect = new DropDownChoice<ValueRuleType>("valueSelect", new Model<ValueRuleType>(), valueOptionList); valueSelect.setOutputMarkupId(true); item.add(valueSelect); valueSelect.setModelObject(valueRule.getRuleType()); valueSelect.add(new AjaxFormComponentUpdatingBehavior("onChange") { private static final long serialVersionUID = -4107411122913362658L; @Override protected void onUpdate(AjaxRequestTarget target) { valueRule.setRuleType(valueSelect.getModelObject()); target.add(valueRuleMarkupContainer); } }); } }; valueRuleMarkupContainer = new WebMarkupContainer("valueRuleMarkupContainer"); valueRuleMarkupContainer.add(valueRuleListView); valueRuleMarkupContainer.setOutputMarkupId(true); form.addOrReplace(valueRuleMarkupContainer); add(form); } public List<Tuple<SushiAttribute, String>> getAdvancedValueRules(){ List<Tuple<SushiAttribute, String>> advancedValueRules = new ArrayList<Tuple<SushiAttribute, String>>(); return advancedValueRules; } public void refreshAttributeChoice(){ attributeList.clear(); attributeList.addAll(simulationPanel.getAttributesFromTable()); } public List<ValueRule> getValueRules(){ return valueRules; } }