Statistics
| Revision:

root / org.gvsig.proj / branches / refactor2018 / org.gvsig.proj / org.gvsig.proj.swing / org.gvsig.proj.swing.impl / src / main / java / org / gvsig / proj / swing / impl / tree / AsyncGroupLoader.java @ 866

History | View | Annotate | Download (1.2 KB)

1
package org.gvsig.proj.swing.impl.tree;
2

    
3
import java.util.ArrayList;
4
import java.util.concurrent.ExecutionException;
5

    
6
import javax.swing.SwingWorker;
7
import javax.swing.tree.TreeNode;
8

    
9
import org.gvsig.tools.ToolsLocator;
10
import org.gvsig.tools.i18n.I18nManager;
11
import org.slf4j.Logger;
12
import org.slf4j.LoggerFactory;
13

    
14
public abstract class AsyncGroupLoader extends SwingWorker<ArrayList<TreeNode>, TreeNode>
15
                implements GroupLoader {
16
        final protected I18nManager i18nManager = ToolsLocator.getI18nManager();
17
        private static Logger logger = LoggerFactory.getLogger(AsyncGroupLoader.class);
18
        protected LoadedGroup caller;
19
        public AsyncGroupLoader(LoadedGroup caller) {
20
                this.caller = caller;
21
        }
22

    
23
        @Override
24
        protected void done() {
25
                super.done();
26
                if (!isCancelled()) {
27
                        try {
28
                                ArrayList<TreeNode> result = get();
29
                                this.caller.loaded(result, this);
30
                        } catch (InterruptedException | ExecutionException e) {
31
                                logger.debug(e.getMessage(), e);
32
                        }
33
                }
34
                else {
35
                        this.caller.cancelled(this);
36
                }
37
        }
38
        
39
        @Override
40
        public void cancel() {
41
                cancel(false);
42
        }
43

    
44
        @Override
45
        public TreeNode createLoadingNode() {
46
                return new LoadingNode(caller, caller.geTreeContainer(), i18nManager.getTranslation("Loading..."));
47
        }
48
}