package org.gcube.portlets.user.td.csvexportwidget.client; import org.gcube.portlets.user.td.csvexportwidget.client.grid.ColumnDataGridPanel; import org.gcube.portlets.user.td.gwtservice.client.rpc.TDGWTServiceAsync; import org.gcube.portlets.user.td.gwtservice.shared.csv.AvailableCharsetList; import org.gcube.portlets.user.td.gwtservice.shared.csv.CSVExportSession; import org.gcube.portlets.user.td.wizardwidget.client.WizardCard; 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.google.gwt.user.client.Command; import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.gwt.user.client.ui.HasValue; import com.google.gwt.user.client.ui.HorizontalPanel; import com.sencha.gxt.cell.core.client.form.ComboBoxCell.TriggerAction; import com.sencha.gxt.core.client.util.Padding; import com.sencha.gxt.core.client.util.ToggleGroup; import com.sencha.gxt.data.shared.StringLabelProvider; import com.sencha.gxt.widget.core.client.container.VerticalLayoutContainer; import com.sencha.gxt.widget.core.client.form.FieldLabel; import com.sencha.gxt.widget.core.client.form.FormPanel; import com.sencha.gxt.widget.core.client.form.Radio; import com.sencha.gxt.widget.core.client.form.SimpleComboBox; import com.sencha.gxt.widget.core.client.form.TextField; import com.sencha.gxt.widget.core.client.tips.ToolTip; import com.sencha.gxt.widget.core.client.tips.ToolTipConfig; /** * * @author "Giancarlo Panichi" g.panichi@isti.cnr.it * */ public class CSVExportConfigCard extends WizardCard { private static final String DEFAULT_DELIMETER = ","; protected CSVExportSession csvExportSession; protected SimpleComboBox encodings; protected TextField customDelimiterField; protected Radio otherDelimiter; protected Radio commaDelimiter; protected Radio spaceDelimiter; protected Radio tabDelimiter; protected Radio semicoloDelimiter; protected ColumnDataGridPanel csvColumnGridPanel; public CSVExportConfigCard(final CSVExportSession csvExportSession) { super("CSV configuration", ""); if (csvExportSession == null) { Log.error("CSVExportSession is null"); } this.csvExportSession = csvExportSession; FormPanel panel = createPanel(); setContent(panel); } protected FormPanel createPanel() { FormPanel panel = new FormPanel(); panel.setLabelWidth(90); panel.getElement().setPadding(new Padding(5)); VerticalLayoutContainer content = new VerticalLayoutContainer(); panel.add(content); encodings = new SimpleComboBox( new StringLabelProvider()); encodings.setToolTip("The CSV file encoding"); encodings.setTabIndex(0); encodings.setEditable(false); encodings.setForceSelection(true); encodings.setTriggerAction(TriggerAction.ALL); encodings.addSelectionHandler(new SelectionHandler() { @Override public void onSelection(SelectionEvent event) { //updateGrid(); } }); content.add(new FieldLabel(encodings, "File encoding")); commaDelimiter = new Radio(); commaDelimiter.setBoxLabel("Comma"); commaDelimiter.setValue(true); spaceDelimiter = new Radio(); spaceDelimiter.setBoxLabel("Space"); tabDelimiter = new Radio(); tabDelimiter.setBoxLabel("Tab"); semicoloDelimiter = new Radio(); semicoloDelimiter.setBoxLabel("Semicolon"); otherDelimiter = new Radio(); otherDelimiter.setBoxLabel("Other delimiter"); customDelimiterField = new TextField(); customDelimiterField.setEnabled(false); customDelimiterField.setValue(DEFAULT_DELIMETER); customDelimiterField.setAllowBlank(false); customDelimiterField.setWidth(20); ToggleGroup delimitersGroup = new ToggleGroup(); delimitersGroup.add(commaDelimiter); delimitersGroup.add(spaceDelimiter); delimitersGroup.add(tabDelimiter); delimitersGroup.add(semicoloDelimiter); delimitersGroup.add(otherDelimiter); delimitersGroup .addValueChangeHandler(new ValueChangeHandler>() { @Override public void onValueChange( ValueChangeEvent> event) { customDelimiterField.setEnabled(otherDelimiter .getValue()); if (!otherDelimiter.getValue()) customDelimiterField.clearInvalid(); else customDelimiterField.validate(); if (otherDelimiter.getValue() && !customDelimiterField.isValid()) return; } }); HorizontalPanel delimitersPanel = new HorizontalPanel(); delimitersPanel.add(commaDelimiter); delimitersPanel.add(spaceDelimiter); delimitersPanel.add(tabDelimiter); delimitersPanel.add(semicoloDelimiter); delimitersPanel.add(otherDelimiter); delimitersPanel.add(customDelimiterField); new ToolTip(delimitersPanel, new ToolTipConfig( "The delimiter use to delimit the CSV fields")); content.add(new FieldLabel(delimitersPanel, "Delimiter")); csvColumnGridPanel=new ColumnDataGridPanel(); content.add(csvColumnGridPanel); return panel; } protected char getSelectedDelimiter() { if (otherDelimiter.getValue()) return customDelimiterField.getValue().charAt(0); if (commaDelimiter.getValue()) return ','; if (spaceDelimiter.getValue()) return ' '; if (tabDelimiter.getValue()) return '\t'; if (semicoloDelimiter.getValue()) return ';'; return DEFAULT_DELIMETER.charAt(0); } @Override public void setup() { setEnableBackButton(true); setEnableNextButton(false); encodings.focus(); TDGWTServiceAsync.INSTANCE .getAvailableCharset(new AsyncCallback() { @Override public void onSuccess(AvailableCharsetList result) { GWT.log("CharsetInfo: " + result.getCharsetList().size() + " charset, default: " + result.getDefaultCharset()); for (String charset : result.getCharsetList()) encodings.add(charset); encodings.setValue(result.getDefaultCharset()); } /** * {@inheritDoc} */ @Override public void onFailure(Throwable caught) { GWT.log("Error loading charset list", caught); showErrorAndHide("Error loading charset list", "Error loading charset list", "", caught); } }); Command sayNextCard = new Command() { @Override public void execute() { //CSVTableDetailCard csvTableDetailCard = new CSVTableDetailCard( // csvImportSession); //getWizardWindow() // .addCard(csvTableDetailCard); Log.info("NextCard CSVTableDetailCard"); //getWizardWindow().nextCard(); } }; getWizardWindow().setNextButtonCommand(sayNextCard); } @Override public void dispose() { //csvExportSession // .setColumnToImportMask(csvSample.getImportColumnsMask()); } }