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 |
} |