Statistics
| Revision:

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