/*******************************************************************************
* Copyright (c) 2012 VMware, Inc.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* VMware, Inc. - initial API and implementation
*******************************************************************************/
package org.springframework.ide.eclipse.wizard.template;
import java.util.regex.Pattern;
import org.eclipse.swt.events.KeyAdapter;
import org.eclipse.swt.events.KeyEvent;
import org.eclipse.swt.widgets.Text;
import org.springframework.ide.eclipse.wizard.template.infrastructure.ui.WizardUIInfoElement;
/**
* @author Terry Denney
*/
public class WizardTextKeyValidator extends KeyAdapter {
private final int index;
private final WizardUIInfoElement element;
private final Text text;
private final ITemplateWizardPage page;
public WizardTextKeyValidator(int index, WizardUIInfoElement element, Text text, ITemplateWizardPage page) {
this.index = index;
this.element = element;
this.text = text;
this.page = page;
}
@Override
public void keyReleased(KeyEvent e) {
validate();
page.updateMessage();
}
public void validate() {
String[] errorMessages = page.getErrorMessages();
String[] messages = page.getMessages();
errorMessages[index] = null;
messages[index] = null;
String textEntered = text.getText();
String errorMsg = element.getErrorMessage();
if (textEntered == null || textEntered.length() == 0) {
if (element.getRequired()) {
if (errorMsg != null && errorMsg.length() > 0) {
messages[index] = errorMsg;
}
else {
messages[index] = "Enter a " + element.getName() + "."; //$NON-NLS-1$ //$NON-NLS-2$
}
}
}
else {
String regex = element.getPattern();
if (regex != null) {
if (!Pattern.matches(regex, textEntered)) {
if (errorMsg != null && errorMsg.length() > 0) {
errorMessages[index] = errorMsg;
}
else {
errorMessages[index] = "Input for field " + element.getName() + " does not match the regex " + regex + "."; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
}
}
}
}
}
}