/** * */ package org.gcube.portlets.user.dataminermanager.client.form; import java.util.ArrayList; import org.gcube.portlets.user.dataminermanager.client.bean.parameters.ColumnParameter; import org.gcube.portlets.user.dataminermanager.client.bean.parameters.Parameter; import org.gcube.portlets.user.dataminermanager.client.properties.ColumnItemPropertiesCombo; 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.cell.core.client.form.ComboBoxCell.TriggerAction; import com.sencha.gxt.data.shared.ListStore; import com.sencha.gxt.widget.core.client.container.VerticalLayoutContainer; import com.sencha.gxt.widget.core.client.form.ComboBox; /** * * @author Giancarlo Panichi email: g.panichi@isti.cnr.it * */ public class ColumnFld extends AbstractFld { private VerticalLayoutContainer vp; private String defaultColumn; private ComboBox comboBox; private ListStore store; private String referredTabularParameterName; /** * @param parameter */ public ColumnFld(Parameter parameter) { super(parameter); vp = new VerticalLayoutContainer(); ColumnParameter p = (ColumnParameter) parameter; this.referredTabularParameterName = p.getReferredTabularParameterName(); this.defaultColumn = p.getDefaultColumn(); ColumnItemPropertiesCombo props = GWT .create(ColumnItemPropertiesCombo.class); store = new ListStore(props.id()); comboBox = new ComboBox(store, props.label()); comboBox.setAllowBlank(false); comboBox.setForceSelection(true); comboBox.setEditable(false); comboBox.setTriggerAction(TriggerAction.ALL); if (p.getDescription() != null) comboBox.setTitle(p.getDescription()); comboBox.setEnabled(false); showNoSelectionField(); } /** * */ private void showNoSelectionField() { vp.clear(); ; vp.add(comboBox); vp.add(new HTML( "
Select table from parameter " + referredTabularParameterName + "
")); vp.forceLayout(); } /** * */ private void showFieldWithSelection(TableItemSimple tableItem) { vp.clear(); vp.add(comboBox); vp.add(new HTML( "
Columns of Table " + tableItem.getName() + "
")); vp.forceLayout(); } /** * */ @Override public String getValue() { ColumnItem columnItem = comboBox.getCurrentValue(); return columnItem != null ? columnItem.getName() : null; } /** * */ @Override public Widget getWidget() { return vp; } @Override public void fireEvent(Object message) { if (message == null) { store.clear(); store.commitChanges(); comboBox.clear(); comboBox.setEnabled(false); showNoSelectionField(); } else { TableItemSimple tableItem = (TableItemSimple) message; store.clear(); store.commitChanges(); ArrayList columns = tableItem.getColumns(); if (columns != null) { store.addAll(columns); for (ColumnItem columnItem : columns) { if (columnItem.getName().compareTo(defaultColumn) == 0) { comboBox.setValue(columnItem); break; } } store.commitChanges(); } comboBox.clear(); comboBox.setEnabled(true); showFieldWithSelection(tableItem); } } }