|
52 | 52 | import org.scijava.Context; |
53 | 53 | import org.scijava.Gateway; |
54 | 54 | import org.scijava.InstantiableException; |
| 55 | +import org.scijava.MenuPath; |
55 | 56 | import org.scijava.Priority; |
56 | 57 | import org.scijava.command.CommandService; |
57 | 58 | import org.scijava.log.LogService; |
@@ -98,6 +99,9 @@ public class DefaultScriptService extends |
98 | 99 | /** List of directories to scan for scripts. */ |
99 | 100 | private ArrayList<File> scriptDirs; |
100 | 101 |
|
| 102 | + /** Menu prefix to use for each script directory, if any. */ |
| 103 | + private HashMap<File, MenuPath> menuPrefixes; |
| 104 | + |
101 | 105 | /** Index of available scripts, by script <em>file</em>. */ |
102 | 106 | private HashMap<File, ScriptInfo> scripts; |
103 | 107 |
|
@@ -133,11 +137,24 @@ public List<File> getScriptDirectories() { |
133 | 137 | return Collections.unmodifiableList(scriptDirs()); |
134 | 138 | } |
135 | 139 |
|
| 140 | + @Override |
| 141 | + public MenuPath getMenuPrefix(final File scriptDirectory) { |
| 142 | + return menuPrefixes().get(scriptDirectory); |
| 143 | + } |
| 144 | + |
136 | 145 | @Override |
137 | 146 | public void addScriptDirectory(final File scriptDirectory) { |
138 | 147 | scriptDirs().add(scriptDirectory); |
139 | 148 | } |
140 | 149 |
|
| 150 | + @Override |
| 151 | + public void addScriptDirectory(final File scriptDirectory, |
| 152 | + final MenuPath menuPrefix) |
| 153 | + { |
| 154 | + scriptDirs().add(scriptDirectory); |
| 155 | + menuPrefixes().put(scriptDirectory, menuPrefix); |
| 156 | + } |
| 157 | + |
141 | 158 | @Override |
142 | 159 | public void removeScriptDirectory(final File scriptDirectory) { |
143 | 160 | scriptDirs().remove(scriptDirectory); |
@@ -283,6 +300,12 @@ private List<File> scriptDirs() { |
283 | 300 | return scriptDirs; |
284 | 301 | } |
285 | 302 |
|
| 303 | + /** Gets {@link #menuPrefixes}, initializing if needed. */ |
| 304 | + private HashMap<File, MenuPath> menuPrefixes() { |
| 305 | + if (menuPrefixes == null) initMenuPrefixes(); |
| 306 | + return menuPrefixes; |
| 307 | + } |
| 308 | + |
286 | 309 | /** Gets {@link #scripts}, initializing if needed. */ |
287 | 310 | private HashMap<File, ScriptInfo> scripts() { |
288 | 311 | if (scripts == null) initScripts(); |
@@ -338,6 +361,12 @@ private synchronized void initScriptDirs() { |
338 | 361 | scriptDirs = dirs; |
339 | 362 | } |
340 | 363 |
|
| 364 | + /** Initializes {@link #menuPrefixes}. */ |
| 365 | + private synchronized void initMenuPrefixes() { |
| 366 | + if (menuPrefixes != null) return; |
| 367 | + menuPrefixes = new HashMap<File, MenuPath>(); |
| 368 | + } |
| 369 | + |
341 | 370 | /** Initializes {@link #scripts}. */ |
342 | 371 | private synchronized void initScripts() { |
343 | 372 | if (scripts != null) return; // already initialized |
|
0 commit comments