18 package org.turro.wd.tree;
20 import java.text.ParseException;
21 import java.util.logging.Level;
22 import java.util.logging.Logger;
23 import org.turro.pivot.dialog.ProgressSheet;
24 import org.apache.pivot.collections.List;
25 import org.apache.pivot.collections.Sequence;
26 import org.apache.pivot.util.concurrent.Task;
27 import org.apache.pivot.util.concurrent.TaskExecutionException;
28 import org.apache.pivot.wtk.TreeView;
29 import org.apache.pivot.wtk.content.TreeNode;
45 protected abstract String
done();
51 public String
execute() throws TaskExecutionException {
53 inc = 1 / (countNodes((List<TreeNode>)
treeView.getTreeData(),
false, 0.0) * 1.0);
54 processNodes((List<TreeNode>)
treeView.getTreeData(),
false);
57 }
catch (ParseException ex) {
58 Logger.getLogger(
DefaultTask.class.getName()).log(Level.SEVERE,
null, ex);
64 private void processNodes(List<TreeNode> nodes,
boolean selected)
throws ParseException {
65 for(TreeNode tn : nodes) {
66 boolean sel = selected ||
treeView.isNodeChecked(
67 Sequence.Tree.pathOf((List<TreeNode>)
treeView.getTreeData(), tn));
71 if(tn instanceof TreeDirectory) {
72 ProgressSheet.nextProgress(
null, tn.getText(), -1);
73 processNodes((TreeDirectory) tn, sel);
77 }
else if(tn instanceof TreeWorkFile) {
80 ProgressSheet.nextProgress(
null, tn.getText(), inc);
82 ProgressSheet.nextProgress(
null, tn.getText(), -1);
88 private double countNodes(List<TreeNode> nodes,
boolean selected,
double count)
throws ParseException {
89 for(TreeNode tn : nodes) {
90 boolean sel = selected ||
treeView.isNodeChecked(
91 Sequence.Tree.pathOf((List<TreeNode>)
treeView.getTreeData(), tn));
92 if(tn instanceof TreeDirectory) {
93 count = countNodes((TreeDirectory) tn, sel, count);
94 }
else if(tn instanceof TreeWorkFile) {
static void startMeasuredProgress(String caption, boolean canCancel)
static void endProgress(String caption)
static ProgressSheet getInstance()
abstract void process(TreeWorkFile file)
DefaultTask(TreeView treeView, String caption)
abstract void process(TreeDirectory dir)