1 package org.argeo.connect.e4;
2
3 import java.util.Collections;
4 import java.util.Map;
5 import java.util.SortedMap;
6 import java.util.TreeMap;
7
8 import org.argeo.connect.ServiceRanking;
9 import org.argeo.connect.ui.AppWorkbenchService;
10 import org.argeo.connect.ui.SystemWorkbenchService;
11 import org.eclipse.e4.core.contexts.ContextFunction;
12 import org.eclipse.e4.core.contexts.IEclipseContext;
13
14 public class SystemE4ServiceFunction extends ContextFunction {
15
16
17 private SortedMap<ServiceRanking, AppWorkbenchService> knownAppWbServices = Collections
18 .synchronizedSortedMap(new TreeMap<>());
19
20 @Override
21 public Object compute(IEclipseContext context, String contextKey) {
22
23
24
25
26
27
28 SystemE4Service systemE4Service = new SystemE4Service(knownAppWbServices, context);
29
30
31
32
33
34
35
36
37
38
39 context.set(SystemWorkbenchService.class, systemE4Service);
40 return systemE4Service;
41 }
42
43 public void addAppService(AppWorkbenchService appService, Map<String, Object> properties) {
44
45
46
47
48
49 knownAppWbServices.put(new ServiceRanking(properties), appService);
50 }
51
52 public void removeAppService(AppWorkbenchService appService, Map<String, Object> properties) {
53 knownAppWbServices.remove(new ServiceRanking(properties));
54 }
55
56 }