]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.workbench.search.impl/src/org/simantics/workbench/search/impl/SearchServiceFactory.java
Add missing influxdb-client-core to target platform
[simantics/platform.git] / bundles / org.simantics.workbench.search.impl / src / org / simantics / workbench / search / impl / SearchServiceFactory.java
1 package org.simantics.workbench.search.impl;
2
3
4 import org.eclipse.core.expressions.Expression;
5 import org.eclipse.ui.IWorkbench;
6 import org.eclipse.ui.IWorkbenchPartSite;
7 import org.eclipse.ui.IWorkbenchWindow;
8 import org.eclipse.ui.internal.expressions.ActivePartExpression;
9 import org.eclipse.ui.internal.expressions.WorkbenchWindowExpression;
10 import org.eclipse.ui.internal.services.IWorkbenchLocationService;
11 import org.eclipse.ui.services.AbstractServiceFactory;
12 import org.eclipse.ui.services.IServiceLocator;
13 import org.simantics.workbench.search.ISearchService;
14
15 @SuppressWarnings("restriction")
16 public class SearchServiceFactory extends AbstractServiceFactory {
17
18         @SuppressWarnings("rawtypes")
19         @Override
20         public Object create(Class serviceInterface, IServiceLocator parentLocator,
21                         IServiceLocator locator) {
22                 if (!ISearchService.class.equals(serviceInterface))
23                         return null;
24                 IWorkbenchLocationService wls = (IWorkbenchLocationService) locator
25                                 .getService(IWorkbenchLocationService.class);
26                 final IWorkbench wb = wls.getWorkbench();
27                 if (wb == null) {
28                         return null;
29                 }
30
31                 @SuppressWarnings("unchecked")
32                 Object parent = parentLocator.getService(serviceInterface);
33                 if (parent == null) {
34                         return new SearchServiceImpl();
35                 }
36                 final IWorkbenchWindow window = wls.getWorkbenchWindow();
37                 final IWorkbenchPartSite site = wls.getPartSite();
38                 if (site == null) {
39                         Expression exp = new WorkbenchWindowExpression(window);
40                         return new SlaveSearchService((ISearchService)parent, exp);
41                 }
42                 if (parent instanceof SlaveSearchService) {
43                         Expression parentExp = ((SlaveSearchService) parent).getDefaultExpression();
44                         return new NestableSearchService((ISearchService)parent, parentExp);
45                 }
46
47                 Expression exp = new ActivePartExpression(site.getPart());
48                 return new SlaveSearchService((ISearchService)parent, exp);
49         }
50
51 }