package sushi.application.pages.simulator;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior;
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 sushi.application.components.tree.SushiLabelTreeTable;
import sushi.application.pages.simulator.model.SimulationTreeTableElement;
import sushi.application.pages.simulator.model.SimulationTreeTableProvider;
import sushi.simulation.DerivationType;
public class DurationEntryPanel extends Panel {
private static final long serialVersionUID = 1L;
private TextField<String> durationTextField, derivationTextField;
private SushiLabelTreeTable<SimulationTreeTableElement<Object>, String> treeTable;
private DerivationType derivationType;
public DurationEntryPanel(String id, final int entryId, final SimulationTreeTableProvider<Object> simulationTreeTableProvider) {
super(id);
this.derivationType = DerivationType.FIXED;
Form<Void> form = new Form<Void>("form");
durationTextField = new TextField<String>("durationTextField", Model.of(simulationTreeTableProvider.getDurationForEntry(entryId)));
durationTextField.setOutputMarkupPlaceholderTag(true);
durationTextField.setOutputMarkupId(true);
durationTextField.add(new AjaxFormComponentUpdatingBehavior("onchange"){
private static final long serialVersionUID = 1L;
@Override
protected void onUpdate(AjaxRequestTarget target) {
simulationTreeTableProvider.setDurationForEntry(getMeanDurationFromField(), entryId);
}
});
form.add(durationTextField);
derivationTextField = new TextField<String>("derivationTextField", Model.of(simulationTreeTableProvider.getDerivationForEntry(entryId)));
derivationTextField.setOutputMarkupPlaceholderTag(true);
derivationTextField.setOutputMarkupId(true);
derivationTextField.add(new AjaxFormComponentUpdatingBehavior("onchange"){
private static final long serialVersionUID = 1L;
@Override
protected void onUpdate(AjaxRequestTarget target) {
simulationTreeTableProvider.setDerivationForEntry(getMeanDurationFromField(), entryId);
}
});
DerivationType derivationType = simulationTreeTableProvider.getDerivationTypeForEntry(entryId);
if(!(DerivationType.NORMAL.equals(derivationType))){
derivationTextField.setVisible(false);
}
form.add(derivationTextField);
add(form);
simulationTreeTableProvider.registerDurationInputAtEntry(this, entryId);
}
public void setTable(SushiLabelTreeTable<SimulationTreeTableElement<Object>, String> treeTable) {
this.treeTable = treeTable;
}
private String getMeanDurationFromField(){
return durationTextField.getValue();
}
private String getDerivationFromField(){
return durationTextField.getValue();
}
public void setDerivationType(DerivationType derivationType) {
if(derivationType.equals(DerivationType.NORMAL)){
derivationTextField.setVisible(true);
}
else{
derivationTextField.setVisible(false);
}
}
}