// This file is part of OpenTSDB. // Copyright (C) 2010-2012 The OpenTSDB Authors. // // This program is free software: you can redistribute it and/or modify it // under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 2.1 of the License, or (at your // option) any later version. This program is distributed in the hope that it // will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty // of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser // General Public License for more details. You should have received a copy // of the GNU Lesser General Public License along with this program. If not, // see <http://www.gnu.org/licenses/>. package tsd.client; import com.google.gwt.event.dom.client.BlurEvent; import com.google.gwt.event.dom.client.BlurHandler; import com.google.gwt.user.client.Command; import com.google.gwt.user.client.DeferredCommand; import com.google.gwt.user.client.ui.TextBox; class ValidatedTextBox extends TextBox implements BlurHandler { private String regexp; public ValidatedTextBox() { } public void setValidationRegexp(final String regexp) { if (this.regexp == null) { // First call to this method. super.addBlurHandler(this); } this.regexp = regexp; } public String getValidationRegexp() { return regexp; } public void onBlur(final BlurEvent event) { final String interval = getText(); if (!interval.matches(regexp)) { // Steal the dateBoxFormatError :) addStyleName("dateBoxFormatError"); event.stopPropagation(); DeferredCommand.addCommand(new Command() { public void execute() { // TODO(tsuna): Understand why this doesn't work as expected, even // though we cancel the onBlur event and we put the focus afterwards // using a deferred command. //setFocus(true); selectAll(); } }); } else { removeStyleName("dateBoxFormatError"); } } }