Bug 180746 [DataBinding] TextObservableValue should take a delay-argument
Sometimes SWT.Modify is needed as update event type but the performance (number of propagated update-events) should be similar to SWT.FocusOut. Therefore I suggest to create an additional constructor with a parameter int delayInMilliseconds which defines a delay between the time the last SWT.Modify-Event occured and fireValueChanging() is called. This will allow the customer to enter multiple characters without starting a validation each time. A further advance is when binding the validation result to a label or similar, the label won't change confusingly while you still enter your text. The current structure of TextObservableValue doesn't provide a way to achieve the described behaviour by subclassing without reimplementation. Maybe this behaviour can even be useful whit SWT.FocusOut ? More information:
bundles/org.eclipse.core.databinding.observable/src/org/eclipse/core/databinding/observable/Observables.java
/*******************************************************************************
 * Copyright (c) 2006 Cerner Corporation and others.
 * 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:
 *     Brad Reynolds - initial API and implementation
 ******************************************************************************/
package org.eclipse.core.databinding.observable;
import java.util.List;
import java.util.Set;
import org.eclipse.core.databinding.observable.list.IListChangeListener;
import org.eclipse.core.databinding.observable.list.IObservableList;
import org.eclipse.core.databinding.observable.list.ObservableList;
import org.eclipse.core.databinding.observable.set.IObservableSet;
import org.eclipse.core.databinding.observable.set.ISetChangeListener;
import org.eclipse.core.databinding.observable.set.ObservableSet;
import org.eclipse.core.internal.databinding.observable.EmptyObservableList;
import org.eclipse.core.internal.databinding.observable.EmptyObservableSet;
import org.eclipse.core.internal.databinding.observable.ProxyObservableSet;
import org.eclipse.core.internal.databinding.observable.UnmodifiableObservableList;
/**
 * Contains static methods to operate on or return
 * {@link IObservable Observables}.
 * 
 * @since 3.2
 */
public class Observables {