Revision 43096 trunk/org.gvsig.desktop/org.gvsig.desktop.framework/org.gvsig.andami/src/main/java/org/gvsig/andami/actioninfo/impl/DefaultActionInfoManager.java

View differences:

DefaultActionInfoManager.java
22 22
 */
23 23
package org.gvsig.andami.actioninfo.impl;
24 24

  
25
import java.io.File;
26
import java.io.FileInputStream;
27
import java.io.FileNotFoundException;
25 28
import java.util.ArrayList;
26 29
import java.util.Collections;
27 30
import java.util.Comparator;
......
29 32
import java.util.Iterator;
30 33
import java.util.List;
31 34
import java.util.Map;
32

  
35
import java.util.Properties;
36
import java.util.logging.Level;
37
import javax.imageio.stream.FileImageInputStream;
38
import org.apache.commons.io.IOUtils;
39
import org.apache.commons.lang3.BooleanUtils;
40
import org.apache.commons.lang3.StringUtils;
41
import org.gvsig.andami.PluginsLocator;
33 42
import org.gvsig.andami.actioninfo.ActionInfo;
34 43
import org.gvsig.andami.actioninfo.ActionInfoManager;
35 44
import org.gvsig.andami.actioninfo.ActionInfoStatusCache;
......
41 50

  
42 51
public class DefaultActionInfoManager implements ActionInfoManager {
43 52

  
44
    private static Logger logger = LoggerFactory.getLogger(DefaultActionInfoManager.class);
53
    private static final Logger logger = LoggerFactory.getLogger(DefaultActionInfoManager.class);
45 54

  
46
    private Map<String, ActionInfo> actions = new HashMap<String, ActionInfo>();
55
    private final Map<String, ActionInfo> actions = new HashMap<>();
47 56
    private int anonymousCounter = 1;
57
    private Properties activeStates = null;
48 58

  
59
    @Override
49 60
    public ActionInfo createAction(Class<? extends IExtension> extension, String name, String text, String command, String icon, String accelerator, long position, String tip) {
61
        //name = StringUtils.stripToNull(name);
50 62
        name = emptyToNull(name);
51 63
        String actionName = name;
52
        if (actionName == null) {
64
        if ( StringUtils.isEmpty(actionName) ) {
53 65
            actionName = String.format("anonymous__%04d", this.anonymousCounter++);
54 66
        }
55 67
        ActionInfo action = new DefaultActionInfo(extension, actionName, text, command, icon, accelerator, position, tip);
......
66 78
        return action;
67 79
    }
68 80

  
81
    @Override
69 82
    public ActionInfo createAction(IExtension extension, String name, String text, String command, String icon, String accelerator, long position, String tip) {
70 83
        name = emptyToNull(name);
71 84
        String actionName = name;
72
        if (actionName == null) {
85
        if ( StringUtils.isEmpty(actionName) ) {
73 86
            actionName = String.format("anonymous__%04d", this.anonymousCounter++);
74 87
        }
75 88
        ActionInfo action = new DefaultActionInfo(extension, actionName, text, command, icon, accelerator, position, tip);
......
93 106
        return "".equals(s.trim()) ? null : s;
94 107
    }
95 108

  
109
    @Override
96 110
    public ActionInfo registerAction(ActionInfo action) {
97 111
        if (action == null) {
98 112
    		// Avisamos en el log de que se intenta registrar una accion null, intentado
......
108 122
        ActionInfo previous = this.getAction(action.getName());
109 123
        if (previous != null) {
110 124
            ((DefaultActionInfo) previous).merge(action);
111
            return previous;
125
            action = previous;
112 126
        } else {
113 127
            this.actions.put(action.getName(), action);
114 128
            SimpleIdentityManager identityManager = ToolsLocator.getIdentityManager();
115 129
            identityManager.registerAction(action.getName());
116
            return action;
117 130
        }
131
        //this.updateActiveState(action);
132
        return action;
118 133
    }
119 134

  
135
    private void updateActiveState(ActionInfo action) {
136
        if( activeStates==null ) {
137
            this.activeStates = new Properties();
138
            File home = PluginsLocator.getManager().getApplicationHomeFolder();
139
            File states = new File(home,"actions-states.properties");
140
            FileInputStream fis = null;
141
            try {
142
                fis = new FileInputStream(states);
143
                this.activeStates.load(fis);
144
            } catch (Exception ex) {
145
                logger.warn("Can't load actions states from '"+states.getAbsolutePath()+"'.",ex);
146
            } finally  {
147
                IOUtils.closeQuietly(fis);
148
            }
149
        }
150
        Boolean active = BooleanUtils.toBooleanObject((String) this.activeStates.getProperty(action.getName(),"true"));
151
        action.setActive(active);
152
    }
153
    
154
    @Override
120 155
    public ActionInfo getAction(String name) {
121
        if (name == null || "".equals(name)) {
156
        if ( StringUtils.isEmpty(name) ) {
122 157
            try {
123 158
                throw new IllegalArgumentException();
124 159
            } catch (IllegalArgumentException e) {
......
129 164
        return this.actions.get(name);
130 165
    }
131 166

  
167
    @Override
132 168
    public Iterator<ActionInfo> getActions() {
133
        List<ActionInfo> actions = new ArrayList<ActionInfo>();
169
        List<ActionInfo> actions = new ArrayList<>();
134 170
        actions.addAll(this.actions.values());
135 171
        Collections.sort(actions, new Comparator<ActionInfo>() {
172
            @Override
136 173
            public int compare(ActionInfo arg0, ActionInfo arg1) {
137 174
                String s0 = String.format("%s/%012d", arg0.getPluginName(), arg0.getPosition());
138 175
                String s1 = String.format("%s/%012d", arg1.getPluginName(), arg1.getPosition());
......
143 180
    	return actions.iterator();
144 181
    }
145 182

  
183
    @Override
146 184
    public ActionInfoStatusCache createActionStatusCache() {
147 185
        return new DefaultActionInfoStatusCache();
148 186
    }
149 187

  
188
    @Override
150 189
    public void redirect(String sourceName, String targetName) {
151 190
        ActionInfo source = this.getAction(sourceName);
152 191
        if (source == null) {
......
159 198
        source.getRedirections().add(target);
160 199
    }
161 200

  
201
    @Override
162 202
    public void execute(String actionName, Object[] parameters) {
163 203
        ActionInfo action = this.actions.get(actionName);
164 204
        if (action == null) {
......
167 207
        action.execute(parameters);
168 208
    }
169 209

  
210
    @Override
170 211
    public ActionInfo getTranslated(ActionInfo actionInfo) {
171 212
        return new TranslatedActionInfo(actionInfo);
172 213
    }

Also available in: Unified diff