138 lines
3.5 KiB
Java
138 lines
3.5 KiB
Java
/**
|
|
*
|
|
*/
|
|
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: <a
|
|
* href="mailto:g.panichi@isti.cnr.it">g.panichi@isti.cnr.it</a>
|
|
*
|
|
*/
|
|
public class ColumnFld extends AbstractFld {
|
|
|
|
private VerticalLayoutContainer vp;
|
|
|
|
private String defaultColumn;
|
|
|
|
private ComboBox<ColumnItem> comboBox;
|
|
private ListStore<ColumnItem> 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<ColumnItem>(props.id());
|
|
|
|
comboBox = new ComboBox<ColumnItem>(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(
|
|
"<div class='workflow-parameters-description'>Select table from parameter "
|
|
+ referredTabularParameterName + "</div>"));
|
|
vp.forceLayout();
|
|
}
|
|
|
|
/**
|
|
*
|
|
*/
|
|
private void showFieldWithSelection(TableItemSimple tableItem) {
|
|
vp.clear();
|
|
vp.add(comboBox);
|
|
vp.add(new HTML(
|
|
"<div class='workflow-parameters-description'>Columns of Table "
|
|
+ tableItem.getName() + "</div>"));
|
|
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<ColumnItem> 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);
|
|
}
|
|
}
|
|
|
|
}
|