/*
* Sun Public License Notice
*
* The contents of this file are subject to the Sun Public License
* Version 1.0 (the "License"). You may not use this file except in
* compliance with the License. A copy of the License is available at
* http://www.sun.com/
*
* The Original Code is NetBeans. The Initial Developer of the Original
* Code is Sun Microsystems, Inc. Portions Copyright 1997-2003 Sun
* Microsystems, Inc. All Rights Reserved.
*/
package org.openide.util;
/** Service provider interface (SPI) for executing of time consuming task which
* results are visible in UI.
*
* Typical usage is post-initialization of UI components or various long lasting
* operations like network accessing invoked directly or indirectly by user
* from UI.
*
* Note that it's often desirable to provide cancel support, at least for
* longer lasting jobs. See {@link org.openide.util.Cancellable} support.
* Keep in mind that methods {@link #construct} and
* {@link org.openide.util.Cancellable#cancel} can be called concurrently and
* require proper synchronization as such.
*
* @author Dafe Simonek
*
* @since 3.36
*/
public interface AsyncGUIJob {
/** Worker method, can be called in any thread but event dispatch thread.
* Implement your time consuming work here.
* Always called and completed before {@link #finished} method.
*/
public void construct ();
/** Method to update UI using given data constructed in {@link #construct}
* method. Always called in event dispatch thread, after {@link #construct}
* method completed its execution.
*/
public void finished ();
}