100 lines
3.4 KiB
Java
100 lines
3.4 KiB
Java
package org.gcube.portlets.user.td.expressionwidget.client;
|
|
|
|
import org.gcube.data.analysis.tabulardata.expression.Operator;
|
|
import org.gcube.portlets.user.td.expressionwidget.client.operation.Operation;
|
|
import org.gcube.portlets.user.td.expressionwidget.client.operation.OperationProperties;
|
|
import org.gcube.portlets.user.td.expressionwidget.client.operation.OperationsStore;
|
|
|
|
import com.allen_sauer.gwt.log.client.Log;
|
|
import com.google.gwt.core.client.GWT;
|
|
import com.google.gwt.event.logical.shared.SelectionEvent;
|
|
import com.google.gwt.event.logical.shared.SelectionHandler;
|
|
import com.google.gwt.event.logical.shared.ValueChangeEvent;
|
|
import com.google.gwt.event.logical.shared.ValueChangeHandler;
|
|
import com.sencha.gxt.cell.core.client.form.ComboBoxCell.TriggerAction;
|
|
import com.sencha.gxt.core.client.dom.ScrollSupport.ScrollMode;
|
|
import com.sencha.gxt.core.client.util.Margins;
|
|
import com.sencha.gxt.data.shared.LabelProvider;
|
|
import com.sencha.gxt.data.shared.ListStore;
|
|
import com.sencha.gxt.widget.core.client.container.HorizontalLayoutContainer;
|
|
import com.sencha.gxt.widget.core.client.container.SimpleContainer;
|
|
import com.sencha.gxt.widget.core.client.container.VerticalLayoutContainer;
|
|
import com.sencha.gxt.widget.core.client.container.VerticalLayoutContainer.VerticalLayoutData;
|
|
import com.sencha.gxt.widget.core.client.container.HorizontalLayoutContainer.HorizontalLayoutData;
|
|
|
|
import com.sencha.gxt.widget.core.client.form.ComboBox;
|
|
import com.sencha.gxt.widget.core.client.info.Info;
|
|
|
|
/**
|
|
*
|
|
* @author "Giancarlo Panichi"
|
|
* <a href="mailto:g.panichi@isti.cnr.it">g.panichi@isti.cnr.it</a>
|
|
*
|
|
*/
|
|
public class ConditionWidget extends SimpleContainer {
|
|
protected Operator op;
|
|
protected ComboBox<Operation> comboOp=null;
|
|
|
|
ConditionWidget(String columnPlaceHolderId,String columnTypeCode, String dataTypeName){
|
|
VerticalLayoutContainer vert=new VerticalLayoutContainer();
|
|
vert.setScrollMode(ScrollMode.AUTO);
|
|
vert.setAdjustForScroll(true);
|
|
|
|
HorizontalLayoutContainer horiz=new HorizontalLayoutContainer();
|
|
|
|
OperationProperties props = GWT.create(OperationProperties.class);
|
|
ListStore<Operation> storeOp = new ListStore<Operation>(props.id());
|
|
storeOp.addAll(OperationsStore.getAll(dataTypeName));
|
|
|
|
Log.trace("Store created");
|
|
|
|
|
|
comboOp = new ComboBox<Operation>(storeOp,
|
|
props.label());
|
|
|
|
Log.trace("ComboOperation created");
|
|
|
|
addHandlersForEventObservation(comboOp, props.label());
|
|
|
|
comboOp.setEmptyText("Select a operation...");
|
|
comboOp.setWidth(150);
|
|
comboOp.setTypeAhead(true);
|
|
comboOp.setTriggerAction(TriggerAction.ALL);
|
|
|
|
horiz.add(comboOp,new HorizontalLayoutData(-1, -1, new Margins(0)));
|
|
|
|
vert.add(horiz,new VerticalLayoutData(-1, -1, new Margins(0)));
|
|
add(vert);
|
|
}
|
|
|
|
private <T> void addHandlersForEventObservation(ComboBox<T> combo,
|
|
final LabelProvider<T> labelProvider) {
|
|
combo.addValueChangeHandler(new ValueChangeHandler<T>() {
|
|
|
|
public void onValueChange(ValueChangeEvent<T> event) {
|
|
Info.display(
|
|
"Value Changed",
|
|
"New value: "
|
|
+ (event.getValue() == null ? "nothing"
|
|
: labelProvider.getLabel(event
|
|
.getValue()) + "!"));
|
|
|
|
}
|
|
});
|
|
combo.addSelectionHandler(new SelectionHandler<T>() {
|
|
public void onSelection(SelectionEvent<T> event) {
|
|
Info.display(
|
|
"State Selected",
|
|
"You selected "
|
|
+ (event.getSelectedItem() == null ? "nothing"
|
|
: labelProvider.getLabel(event
|
|
.getSelectedItem()) + "!"));
|
|
}
|
|
});
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|