root / branches / v2_0_0_prep / frameworks / _fwAndami / src / org / gvsig / andami / actioninfo / impl / DefaultActionInfoStatusCache.java @ 38564
History | View | Annotate | Download (2.07 KB)
1 | 38564 | jjdelcerro | package org.gvsig.andami.actioninfo.impl; |
---|---|---|---|
2 | |||
3 | import java.util.HashMap; |
||
4 | import java.util.Map; |
||
5 | |||
6 | import org.gvsig.andami.actioninfo.ActionInfo; |
||
7 | import org.gvsig.andami.actioninfo.ActionInfoStatusCache; |
||
8 | import org.gvsig.andami.plugins.ExtensionHelper; |
||
9 | import org.gvsig.andami.plugins.IExtension; |
||
10 | |||
11 | public class DefaultActionInfoStatusCache implements ActionInfoStatusCache { |
||
12 | |||
13 | private class Status { |
||
14 | Boolean isEnabled = null; |
||
15 | Boolean isVisible = null; |
||
16 | } |
||
17 | |||
18 | private Map<IExtension,Status> extensions = null; |
||
19 | private Map<ActionInfo,Status> actions = null; |
||
20 | |||
21 | public DefaultActionInfoStatusCache() {
|
||
22 | this.clear();
|
||
23 | } |
||
24 | |||
25 | public void clear() { |
||
26 | extensions = new HashMap<IExtension, Status>(); |
||
27 | actions = new HashMap<ActionInfo, Status>(); |
||
28 | } |
||
29 | |||
30 | |||
31 | public boolean isEnabled(ActionInfo action) { |
||
32 | Status status; |
||
33 | IExtension extension = action.getExtension(); |
||
34 | if( ExtensionHelper.canQueryByAction(extension) ) {
|
||
35 | status = actions.get(action); |
||
36 | if( status == null ) { |
||
37 | status = new Status();
|
||
38 | actions.put(action, status); |
||
39 | } |
||
40 | if( status.isEnabled == null ) { |
||
41 | status.isEnabled = new Boolean( action.isEnabled() ); |
||
42 | } |
||
43 | } else {
|
||
44 | status = extensions.get(extension); |
||
45 | if( status == null ) { |
||
46 | status = new Status();
|
||
47 | extensions.put(extension, status); |
||
48 | } |
||
49 | if( status.isEnabled == null ) { |
||
50 | status.isEnabled = new Boolean( extension.isEnabled() ); |
||
51 | } |
||
52 | } |
||
53 | return status.isEnabled.booleanValue();
|
||
54 | } |
||
55 | |||
56 | public boolean isVisible(ActionInfo action) { |
||
57 | Status status; |
||
58 | IExtension extension = action.getExtension(); |
||
59 | if( ExtensionHelper.canQueryByAction(extension) ) {
|
||
60 | status = actions.get(action); |
||
61 | if( status == null ) { |
||
62 | status = new Status();
|
||
63 | actions.put(action, status); |
||
64 | } |
||
65 | if( status.isVisible == null ) { |
||
66 | status.isVisible = new Boolean( action.isVisible() ); |
||
67 | } |
||
68 | } else {
|
||
69 | status = extensions.get(extension); |
||
70 | if( status == null ) { |
||
71 | status = new Status();
|
||
72 | extensions.put(extension, status); |
||
73 | } |
||
74 | if( status.isVisible == null ) { |
||
75 | status.isVisible = new Boolean( extension.isVisible() ); |
||
76 | } |
||
77 | } |
||
78 | return status.isVisible.booleanValue();
|
||
79 | } |
||
80 | |||
81 | } |