169 lines
4.2 KiB
Java
169 lines
4.2 KiB
Java
/**
|
|
*
|
|
*/
|
|
package org.gcube.portlets.user.dataminermanager.client.form;
|
|
|
|
import java.util.ArrayList;
|
|
import java.util.List;
|
|
|
|
import org.gcube.portlets.user.dataminermanager.client.bean.parameters.ColumnListParameter;
|
|
import org.gcube.portlets.user.dataminermanager.client.bean.parameters.Parameter;
|
|
import org.gcube.portlets.user.dataminermanager.client.properties.ColumnItemProperties;
|
|
import org.gcube.portlets.user.dataminermanager.shared.data.ColumnItem;
|
|
import org.gcube.portlets.user.dataminermanager.shared.data.TableItemSimple;
|
|
|
|
import com.google.gwt.core.client.GWT;
|
|
import com.google.gwt.user.client.ui.HTML;
|
|
import com.google.gwt.user.client.ui.Widget;
|
|
import com.sencha.gxt.core.client.IdentityValueProvider;
|
|
import com.sencha.gxt.core.client.Style.SelectionMode;
|
|
import com.sencha.gxt.data.shared.ListStore;
|
|
import com.sencha.gxt.widget.core.client.container.VerticalLayoutContainer;
|
|
import com.sencha.gxt.widget.core.client.grid.CheckBoxSelectionModel;
|
|
import com.sencha.gxt.widget.core.client.grid.ColumnConfig;
|
|
import com.sencha.gxt.widget.core.client.grid.ColumnModel;
|
|
import com.sencha.gxt.widget.core.client.grid.Grid;
|
|
|
|
/**
|
|
*
|
|
* @author Giancarlo Panichi email: <a
|
|
* href="mailto:g.panichi@isti.cnr.it">g.panichi@isti.cnr.it</a>
|
|
*
|
|
*/
|
|
public class ColumnListFld extends AbstractFld {
|
|
|
|
|
|
private VerticalLayoutContainer vp;
|
|
private ColumnListParameter columnListParameter;
|
|
private ListStore<ColumnItem> store;
|
|
private Grid<ColumnItem> grid;
|
|
private CheckBoxSelectionModel<ColumnItem> sm;
|
|
|
|
/**
|
|
*
|
|
* @param parameter
|
|
*/
|
|
public ColumnListFld(Parameter parameter) {
|
|
super(parameter);
|
|
|
|
this.columnListParameter = (ColumnListParameter) parameter;
|
|
vp = new VerticalLayoutContainer();
|
|
init();
|
|
showNoSelectionField();
|
|
}
|
|
|
|
private void init() {
|
|
ColumnItemProperties props = GWT.create(ColumnItemProperties.class);
|
|
|
|
ColumnConfig<ColumnItem, String> labelCol = new ColumnConfig<ColumnItem, String>(
|
|
props.label());
|
|
|
|
IdentityValueProvider<ColumnItem> identity = new IdentityValueProvider<ColumnItem>();
|
|
sm = new CheckBoxSelectionModel<ColumnItem>(identity);
|
|
|
|
List<ColumnConfig<ColumnItem, ?>> l = new ArrayList<ColumnConfig<ColumnItem, ?>>();
|
|
l.add(sm.getColumn());
|
|
l.add(labelCol);
|
|
ColumnModel<ColumnItem> cm = new ColumnModel<ColumnItem>(l);
|
|
|
|
store = new ListStore<ColumnItem>(props.id());
|
|
|
|
grid = new Grid<ColumnItem>(store, cm);
|
|
|
|
sm.setSelectionMode(SelectionMode.MULTI);
|
|
grid.setSelectionModel(sm);
|
|
// grid.getView().setAutoExpandColumn(labelCol);
|
|
grid.setSize("150px", "150px");
|
|
grid.getView().setStripeRows(true);
|
|
grid.getView().setColumnLines(true);
|
|
grid.getView().setAutoFill(true);
|
|
grid.setBorders(false);
|
|
grid.setLoadMask(true);
|
|
grid.setColumnReordering(true);
|
|
grid.setColumnResize(false);
|
|
grid.disable();
|
|
|
|
}
|
|
|
|
/**
|
|
*
|
|
*/
|
|
private void showNoSelectionField() {
|
|
vp.clear();
|
|
vp.add(grid);
|
|
vp.add(new HTML(
|
|
"<div class='workflow-parameters-description'>Select table from parameter "
|
|
+ this.columnListParameter
|
|
.getReferredTabularParameterName() + "</div>"));
|
|
vp.forceLayout();
|
|
}
|
|
|
|
/**
|
|
*
|
|
*/
|
|
private void showFieldWithSelection(TableItemSimple tableItem) {
|
|
vp.clear();
|
|
vp.add(grid);
|
|
vp.add(new HTML(
|
|
"<div class='workflow-parameters-description'>Columns of Data Set "
|
|
+ tableItem.getName() + "</div>"));
|
|
vp.forceLayout();
|
|
}
|
|
|
|
|
|
/**
|
|
*
|
|
*/
|
|
@Override
|
|
public String getValue() {
|
|
String separator = columnListParameter.getSeparator();
|
|
String value = "";
|
|
boolean first = true;
|
|
|
|
for (ColumnItem columnItem : sm.getSelection()) {
|
|
String columnName = columnItem.getName();
|
|
value += (first ? "" : separator) + columnName;
|
|
first = false;
|
|
}
|
|
return value;
|
|
}
|
|
|
|
/**
|
|
*
|
|
*/
|
|
@Override
|
|
public Widget getWidget() {
|
|
return vp;
|
|
}
|
|
|
|
/**
|
|
*
|
|
*/
|
|
@Override
|
|
public void fireEvent(Object message) {
|
|
if (message == null) {
|
|
store.clear();
|
|
store.commitChanges();
|
|
grid.disable();
|
|
showNoSelectionField();
|
|
} else {
|
|
TableItemSimple tableItem = (TableItemSimple) message;
|
|
store.clear();
|
|
store.commitChanges();
|
|
store.addAll(tableItem.getColumns());
|
|
store.commitChanges();
|
|
grid.enable();
|
|
showFieldWithSelection(tableItem);
|
|
}
|
|
}
|
|
|
|
/**
|
|
*
|
|
*/
|
|
@Override
|
|
public boolean isValid() {
|
|
return store.size() > 0;
|
|
}
|
|
|
|
}
|