Package examples

Class ActionExample4


public class ActionExample4 extends Application
An @Action that executes a background Task.

This example demonstates the use of a background Task. If an @Action returns a Task, it's executed on a worker thread, and monitored by the application framework.

When executed, the ListFilesTask Task class recursively lists all of the files beginning with some root, and publishes the files it finds, 10 at a time. A private subclass of ListFilesTask overrides the Task.process method to update a JList's ListModel with the new files:

 private class DoListFiles extends ListFilesTask {
    public DoListFiles(File root) {
         super(root);
         listModel.clear();
     }
     @Override protected void process(List<File> files) {
         if (!isCancelled()) {
             listModel.addAll(files);
         }
     }
 }
 

The example's go @Action, keeps a reference to the DoListFiles background Task so that the stop @Action can cancel it:

 private Task doListFiles = null;
 @Action public Task go() {
     stop(); // maybe cancel pending Task
     doListFiles = new DoListFiles(getRootFile());
     setStopEnabled(true);
     return doListFiles;
 }
 @Action(enabledProperty = "stopEnabled") public void stop() {
     if ((doListFiles != null) invalid input: '&'invalid input: '&' (doListFiles.cancel(true))) {
         setStopEnabled(false);
     }
 }
 
The Action's resources are initialized from a ResourceBundle, as with ActionExample2. Additionally, the ListFilesTask's title and description properties are initialized from the resources/ListFilesTask.properties ResourceBundle:
 ListFilesTask.title = List Files
 ListFilesTask.description = List all of the files accessible from some root directory
 ListFilesTask.directoryMessage = Listing files in {0}
 
The directoryMessage resource is used by ListFilesTask to format a message each time a new directory is listed.
See Also:
  • Constructor Details

    • ActionExample4

      public ActionExample4()
  • Method Details

    • go

      @Action public Task go()
      The go @Action.

      Cancel the pending DoListFiles Task and then return a new one. We add a PropertyChangeListener to the new Task so that we can monitor its "message" property.

      Returns:
      the new background Task
      See Also:
    • stop

      @Action(enabledProperty="stopEnabled") public void stop()
      The stop @Action.

      Cancel the pending DoListFiles Task, if there is one.

      See Also:
    • isStopEnabled

      public boolean isStopEnabled()
    • setStopEnabled

      public void setStopEnabled(boolean stopEnabled)
    • startup

      protected void startup()
      Description copied from class: Application
      Responsible for starting the application; for creating and showing the initial GUI.

      This method is called by the static launch method, subclasses must override it. It runs on the event dispatching thread.

      Specified by:
      startup in class Application
      See Also:
    • main

      public static void main(String[] args)