// ============================================================================ // // Copyright (C) 2006-2016 Talend Inc. - www.talend.com // // This source code is available under agreement available at // %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt // // You should have received a copy of the agreement // along with this program; if not, write to Talend SA // 9 rue Pages 92150 Suresnes, France // // ============================================================================ package com.amalto.workbench.dialogs; import java.util.List; import java.util.regex.Pattern; import org.eclipse.jface.dialogs.Dialog; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.swt.SWT; import org.eclipse.swt.custom.CCombo; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Shell; import com.amalto.workbench.i18n.Messages; public class SelectFieldDialog extends Dialog { String title; private CCombo fieldNameCombo; private List<String> fields; private String field; private String defualtField; public SelectFieldDialog(Shell parentShell, String title, List<String> fields, String defualtField) { super(parentShell); this.title = title; this.fields = fields; this.defualtField = defualtField; } @Override protected Control createDialogArea(Composite parent) { parent.getShell().setText(this.title); Composite composite = (Composite) super.createDialogArea(parent); GridLayout layout = (GridLayout) composite.getLayout(); layout.numColumns = 2; Label serverLabel = new Label(composite, SWT.NONE); serverLabel.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, true, 1, 1)); serverLabel.setText(Messages.SelectFieldDialog_FieldName); fieldNameCombo = new CCombo(composite, SWT.DROP_DOWN | SWT.BORDER | SWT.READ_ONLY); fieldNameCombo.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1)); fieldNameCombo.setItems(fields.toArray(new String[fields.size()])); if (fields.size() > 0) { if (defualtField == null) fieldNameCombo.select(0); else fieldNameCombo.setText(defualtField); } return composite; } public String getField() { return field; } @Override protected void okPressed() { if (!validateInput()) return; field = fieldNameCombo.getText().trim(); super.okPressed(); } private boolean validateInput() { if ("".equals(fieldNameCombo.getText().trim())) {//$NON-NLS-1$ MessageDialog.openError(getShell(), Messages._Error, Messages.SelectFieldDialog_FileNameCannotbeEmpty); return false; } if (Pattern.compile("^\\s+\\w+\\s*").matcher(fieldNameCombo.getText()).matches()//$NON-NLS-1$ || fieldNameCombo.getText().trim().replaceAll("\\s", "").length() != fieldNameCombo.getText().trim().length()) {//$NON-NLS-1$//$NON-NLS-2$ MessageDialog.openError(getShell(), Messages._Error, Messages.SelectFieldDialog_FileNameCannotContainEmpty); return false; } return true; } }