// ============================================================================ // // 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 org.talend.dataprofiler.core.ui.wizard.folder; import java.util.regex.Pattern; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; import org.eclipse.jface.wizard.WizardPage; import org.eclipse.swt.SWT; import org.eclipse.swt.events.ModifyEvent; import org.eclipse.swt.events.ModifyListener; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Text; import org.talend.dataprofiler.core.CorePlugin; import org.talend.dataprofiler.core.PluginConstant; import org.talend.dataprofiler.core.i18n.internal.DefaultMessagesImpl; /** * Page for new folder details. */ public class FolderWizardPage extends WizardPage { private static final String DESC = DefaultMessagesImpl.getString("FolderWizardPage.createSubfolder"); //$NON-NLS-1$ private Text nameText; private IStatus nameStatus; private final String defaultLabel; /** * Constructs a new NewProjectWizardPage. */ public FolderWizardPage(String defaultLabel) { super("WizardPage"); //$NON-NLS-1$ this.defaultLabel = defaultLabel; setTitle(DefaultMessagesImpl.getString("FolderWizardPage.folder")); //$NON-NLS-1$ setDescription(DESC); nameStatus = createOkStatus(); } /** * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite) */ public void createControl(Composite parent) { Composite container = new Composite(parent, SWT.NONE); GridLayout layout = new GridLayout(2, false); container.setLayout(layout); // Name Label nameLab = new Label(container, SWT.NONE); nameLab.setText("Name"); //$NON-NLS-1$ nameText = new Text(container, SWT.BORDER); nameText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); setControl(container); addListeners(); setPageComplete(false); setDefaultValues(); } private void setDefaultValues() { if (defaultLabel != null) { setName(defaultLabel); } } private void addListeners() { nameText.addModifyListener(new ModifyListener() { public void modifyText(ModifyEvent e) { checkFieldsValue(); } }); } /** * DOC ocarbone Comment method "checkField". */ protected void checkFieldsValue() { // Field Name if (nameText.getText().length() == 0) { nameStatus = new Status(IStatus.ERROR, CorePlugin.PLUGIN_ID, IStatus.OK, DefaultMessagesImpl.getString("FolderWizardPage.name"), null); //$NON-NLS-1$ } else if (!Pattern.matches(PluginConstant.FOLDER_PATTERN, nameText.getText())) { nameStatus = new Status(IStatus.ERROR, CorePlugin.PLUGIN_ID, IStatus.OK, DefaultMessagesImpl.getString("FolderWizardPage.invalidCharacters"), null); //$NON-NLS-1$ } else if ((defaultLabel == null || !defaultLabel.equals(nameText.getText())) && !((FolderWizard) getWizard()).isValid(nameText.getText())) { nameStatus = new Status(IStatus.ERROR, CorePlugin.PLUGIN_ID, IStatus.OK, DefaultMessagesImpl.getString( "FolderWizardPage.names", nameText.getText()) //$NON-NLS-1$ , null); //$NON-NLS-1$ } else { nameStatus = createOkStatus(); } updatePageStatus(); } private void updatePageStatus() { setMessage(findMostSevere()); setPageComplete(findMostSevere().getSeverity() != IStatus.ERROR); } private IStatus findMostSevere() { return nameStatus; } private void setMessage(IStatus status) { String message2 = status.getMessage(); if (IStatus.ERROR == status.getSeverity()) { setErrorMessage(message2); setMessage(""); //$NON-NLS-1$ } else { if (message2.length() == 0) { message2 = DESC; } setMessage(message2); setErrorMessage(null); } } public String getName() { return nameText.getText(); } public void setName(String name) { this.nameText.setText(name); } private static IStatus createOkStatus() { return new Status(IStatus.OK, CorePlugin.PLUGIN_ID, IStatus.OK, "", null); //$NON-NLS-1$ } }