package org.jbpm.formbuilder.client.effect.scriptviews;
import java.util.HashMap;
import java.util.Map;
import org.jbpm.formbuilder.client.FormBuilderGlobals;
import org.jbpm.formbuilder.client.effect.scripthandlers.HeaderViewPanel;
import org.jbpm.formbuilder.client.effect.scripthandlers.PopulateComboBoxScriptHelper;
import org.jbpm.formbuilder.client.messages.I18NConstants;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.FlexTable;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.ListBox;
import com.google.gwt.user.client.ui.TextBox;
public class PopulateComboBoxScriptHelperView extends FlexTable {
private final I18NConstants i18n = FormBuilderGlobals.getInstance().getI18n();
private final TextBox url = new TextBox();
private final ListBox method = new ListBox();
private final ListBox resultStatus = new ListBox();
private final ListBox responseLanguage = new ListBox();
private final TextBox resultXPath = new TextBox();
private final TextBox subPathForKeys = new TextBox();
private final TextBox subPathForValues = new TextBox();
private final TextBox checkBoxId = new TextBox();
private final HeaderViewPanel headerViewPanel = new HeaderViewPanel();
public PopulateComboBoxScriptHelperView(PopulateComboBoxScriptHelper helper) {
populateMethodList();
populateResultStatusList();
populateResponseLanguageList();
setWidget(0, 0, new Label(i18n.PopulateComboBoxScriptHelperUrl()));
setWidget(0, 1, url);
setWidget(1, 0, new Label(i18n.PopulateComboBoxScriptHelperMethod()));
setWidget(1, 1, method);
setWidget(2, 0, new Label(i18n.PopulateComboBoxScriptHelperResultStatus()));
setWidget(2, 1, resultStatus);
setWidget(3, 0, new Label(i18n.PopulateComboBoxScriptHelperResponseLanguage()));
setWidget(3, 1, responseLanguage);
setWidget(4, 0, new Label(i18n.PopulateComboBoxScriptHelperResultPath()));
setWidget(4, 1, resultXPath);
setWidget(5, 0, new Label(i18n.PopulateComboBoxScriptHelperSubPathForKeys()));
setWidget(5, 1, subPathForKeys);
setWidget(6, 0, new Label(i18n.PopulateComboBoxScriptHelperSubPathForValues()));
setWidget(6, 1, subPathForValues);
setWidget(7, 0, new Label(i18n.PopulateComboBoxScriptHelperSendHeaders()));
setWidget(7, 1, new Button(i18n.PopulateComboBoxScriptHelperAddHeader(), new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
headerViewPanel.addHeaderRow("", "");
}
}));
setWidget(8, 0, headerViewPanel);
getFlexCellFormatter().setColSpan(8, 0, 2);
setWidget(9, 0, new Label(i18n.PopulateComboBoxScriptHelperCheckBoxId()));
setWidget(9, 1, checkBoxId);
}
private void populateResponseLanguageList() {
responseLanguage.addItem("xml");
responseLanguage.addItem("json");
}
private void populateResultStatusList() {
resultStatus.addItem("200 - OK", "200");
resultStatus.addItem("201 - Created", "201");
resultStatus.addItem("404 - Not found", "404");
resultStatus.addItem("500 - Server error", "500");
}
private void populateMethodList() {
method.addItem("GET");
method.addItem("POST");
method.addItem("PUT");
method.addItem("DELETE");
}
public void readDataFrom(PopulateComboBoxScriptHelper helper) {
this.url.setValue(helper.getUrl());
for (int index = 0; index < this.method.getItemCount(); index++) {
if (this.method.getValue(index).equals(helper.getMethod())) {
this.method.setSelectedIndex(index);
break;
}
}
for (int index = 0; index < this.resultStatus.getItemCount(); index++) {
if (this.resultStatus.getValue(index).equals(helper.getResultStatus())) {
this.resultStatus.setSelectedIndex(index);
break;
}
}
this.resultXPath.setValue(helper.getResultXPath());
for (int index = 0; index < this.responseLanguage.getItemCount(); index++) {
if (this.responseLanguage.getValue(index).equals(helper.getResponseLanguage())) {
this.responseLanguage.setSelectedIndex(index);
break;
}
}
headerViewPanel.clear();
if (helper.getHeaders() != null) {
for (Map.Entry<String, String> entry : helper.getHeaders().entrySet()) {
headerViewPanel.addHeaderRow(entry.getKey(), entry.getValue());
}
}
this.subPathForKeys.setValue(helper.getSubPathForKeys());
this.subPathForValues.setValue(helper.getSubPathForValues());
this.checkBoxId.setValue(helper.getCheckBoxId());
}
public void writeDataTo(PopulateComboBoxScriptHelper helper) {
helper.setUrl(this.url.getValue());
helper.setMethod(this.method.getValue(this.method.getSelectedIndex()));
helper.setResultStatus(this.resultStatus.getValue(this.resultStatus.getSelectedIndex()));
helper.setResultXPath(this.resultXPath.getValue());
helper.setResponseLanguage(this.responseLanguage.getValue(this.responseLanguage.getSelectedIndex()));
Map<String, String> headersMap = new HashMap<String, String>();
for (Map.Entry<String, String> header : this.headerViewPanel.getHeaders()) {
headersMap.put(header.getKey(), header.getValue());
}
helper.setHeaders(headersMap);
helper.setSubPathForKeys(this.subPathForKeys.getValue());
helper.setSubPathForValues(this.subPathForValues.getValue());
helper.setCheckBoxId(this.checkBoxId.getValue());
}
}