data-miner-manager/src/main/java/org/gcube/portlets/user/dataminermanager/client/form/OperatorFieldWidget.java

156 lines
4.1 KiB
Java

/**
*
*/
package org.gcube.portlets.user.dataminermanager.client.form;
import org.gcube.portlets.user.dataminermanager.client.bean.parameters.ListParameter;
import org.gcube.portlets.user.dataminermanager.client.bean.parameters.ObjectParameter;
import org.gcube.portlets.user.dataminermanager.client.bean.parameters.Parameter;
import com.allen_sauer.gwt.log.client.Log;
import com.google.gwt.user.client.ui.HTML;
import com.sencha.gxt.core.client.util.Margins;
import com.sencha.gxt.widget.core.client.container.HorizontalLayoutContainer;
import com.sencha.gxt.widget.core.client.container.HorizontalLayoutContainer.HorizontalLayoutData;
import com.sencha.gxt.widget.core.client.container.MarginData;
import com.sencha.gxt.widget.core.client.container.SimpleContainer;
import com.sencha.gxt.widget.core.client.form.FieldLabel;
/**
* @author ceras
*
*/
public class OperatorFieldWidget extends SimpleContainer {
private Parameter parameter;
private AbstractFld field;
private HorizontalLayoutContainer horiz;
// private Field generalParameterField;
// private SimpleComboBox<String> inputDataParameterField;
// private TextField<String> outputDataParameterField;
/**
*
*/
public OperatorFieldWidget(Parameter p) {
super();
this.parameter = p;
horiz = new HorizontalLayoutContainer();
try {
// this.setStyleAttribute("margin", "10px");
if (p.isObject())
field = createObjectField((ObjectParameter) p);
else if (p.isEnum())
field = new EnumFld(p);
else if (p.isTabular())
field = new TabularFld(p);
else if (p.isTabularList())
field = new TabularListFld(p);
else if (p.isColumn())
field = new ColumnFld(p);
else if (p.isColumnList())
field = new ColumnListFld(p);
else if (p.isList())
field = createListField((ListParameter) p);
else if (p.isFile())
field = new FileFld(p);
FieldLabel label = new FieldLabel(field.getWidget(), p.getName());
horiz.add(label, new HorizontalLayoutData(-1, 1, new Margins(0)));
if (p.getDescription() != null) {
HTML descr = new HTML(p.getDescription());
descr.addStyleName("workflow-fieldDescription");
horiz.add(descr);
}
} catch (Throwable e) {
Log.error("Error: " + e.getLocalizedMessage());
e.printStackTrace();
horiz.add(new FieldLabel(new HTML("Error in field retrieving!"),p.getName()));
}
add(horiz, new MarginData(0));
}
/**
* @return the parameter
*/
public Parameter getParameter() {
return parameter;
}
public String getFieldValue() {
return field.getValue();
}
public String getValue() {
return getFieldValue();
}
/**
* @param p
* @return
*/
private AbstractFld createObjectField(ObjectParameter p) {
String type = p.getType();
if (type.contentEquals(Integer.class.getName())) {
return new IntFld(p);
} else if (type.contentEquals(String.class.getName())) {
return new StringFld(p);
} else if (type.contentEquals(Boolean.class.getName())) {
return new BooleanFld(p);
} else if (type.contentEquals(Double.class.getName())) {
return new DoubleFld(p);
} else if (type.contentEquals(Float.class.getName())) {
return new FloatFld(p);
} else
return null;
}
/**
*
*/
private AbstractFld createListField(ListParameter p) {
String type = p.getType();
if (type.contentEquals(String.class.getName())
|| type.contentEquals("STRING")) { // TODO REMOVE "STRING"
return new ListStringFld(p);
} else if (type.contentEquals(Integer.class.getName())
|| type.contentEquals("NUMBER")) {
return new ListIntFld(p);
}
// } else if (type.contentEquals(Boolean.class.getName())) {
// return new ListBooleanField(p);
// } else if (type.contentEquals(Double.class.getName())) {
// return new ListDoubleField(p);
// } else if (type.contentEquals(Float.class.getName())) {
// return new ListFloatField(p);
// }
else
return null;
}
/**
*
*/
public void updateOperatorParameterValue() {
this.parameter.setValue(this.getFieldValue());
}
public AbstractFld getField() {
return field;
}
public boolean isValid() {
if (field != null)
return field.isValid();
else
return false;
}
}