Revision 43096 trunk/org.gvsig.desktop/org.gvsig.desktop.framework/org.gvsig.andami/src/main/java/org/gvsig/andami/actioninfo/impl/DefaultActionInfoManager.java
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