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) && (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:
    Action, Task
    • Constructor Detail

      • ActionExample4

        public ActionExample4()
    • Method Detail

      • 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()
      • stop

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

        Cancel the pending DoListFiles Task, if there is one.

        See Also:
        go()
      • isStopEnabled

        public boolean isStopEnabled()
      • setStopEnabled

        public void setStopEnabled​(boolean stopEnabled)
      • main

        public static void main​(java.lang.String[] args)