/* * Copyright (C) 2006-2016 DLR, Germany * * All rights reserved * * http://www.rcenvironment.de/ */ package de.rcenvironment.core.gui.utils.incubator; import org.eclipse.swt.widgets.Event; import org.eclipse.swt.widgets.Listener; /** * Verifies that endpoint names only contain characters a..z, A..Z, 0..9, underscore or blank. Underscore and blank are parameterized. * * @author Sascha Zur * @author Oliver Seebach * */ public class AlphanumericalTextContraintListener implements Listener { private boolean acceptBlank = false; private boolean acceptUnderscore = false; private final char[] forbiddenCharacters; public AlphanumericalTextContraintListener(boolean acceptBlank, boolean acceptUnderscore) { this.acceptBlank = acceptBlank; this.acceptUnderscore = acceptUnderscore; forbiddenCharacters = null; } public AlphanumericalTextContraintListener(char[] acceptedCharacters) { acceptBlank = false; acceptUnderscore = false; this.forbiddenCharacters = acceptedCharacters; } @Override public void handleEvent(Event event) { String string = event.text; if (string == null) { return; } for (int i = 0; i < string.length(); i++) { char c = string.charAt(i); boolean inForbiddenChars = false; if (forbiddenCharacters != null) { for (char accepted : forbiddenCharacters) { if (accepted == c) { inForbiddenChars = true; } } } if (!(c >= 'a' && c <= 'z') && !(c >= 'A' && c <= 'Z') && !(c >= '0' && c <= '9') && !((c == ' ') && acceptBlank) && !((c == '_') && acceptUnderscore) && inForbiddenChars) { event.doit = false; return; } } } }