]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.browsing.ui.graph.impl/src/org/simantics/browsing/ui/graph/impl/Evaluators.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.browsing.ui.graph.impl / src / org / simantics / browsing / ui / graph / impl / Evaluators.java
1 /*******************************************************************************\r
2  * Copyright (c) 2007, 2010 Association for Decentralized Information Management\r
3  * in Industry THTH ry.\r
4  * All rights reserved. This program and the accompanying materials\r
5  * are made available under the terms of the Eclipse Public License v1.0\r
6  * which accompanies this distribution, and is available at\r
7  * http://www.eclipse.org/legal/epl-v10.html\r
8  *\r
9  * Contributors:\r
10  *     VTT Technical Research Centre of Finland - initial API and implementation\r
11  *******************************************************************************/\r
12 package org.simantics.browsing.ui.graph.impl;\r
13 \r
14 import java.util.ArrayList;\r
15 import java.util.Collection;\r
16 import java.util.HashMap;\r
17 import java.util.HashSet;\r
18 import java.util.Map;\r
19 import java.util.Set;\r
20 \r
21 import org.eclipse.jface.resource.ResourceManager;\r
22 import org.simantics.browsing.ui.BuiltinKeys.CheckedStateKey;\r
23 import org.simantics.browsing.ui.BuiltinKeys.ImageDecoratorKey;\r
24 import org.simantics.browsing.ui.BuiltinKeys.ImagerKey;\r
25 import org.simantics.browsing.ui.BuiltinKeys.LabelDecoratorKey;\r
26 import org.simantics.browsing.ui.BuiltinKeys.LabelerKey;\r
27 import org.simantics.browsing.ui.BuiltinKeys.ViewpointKey;\r
28 import org.simantics.browsing.ui.CheckedState;\r
29 import org.simantics.browsing.ui.NodeContext;\r
30 import org.simantics.browsing.ui.PrimitiveQueryUpdater;\r
31 import org.simantics.browsing.ui.Tester;\r
32 import org.simantics.browsing.ui.common.EvaluatorData;\r
33 import org.simantics.browsing.ui.common.EvaluatorData.Evaluator;\r
34 import org.simantics.browsing.ui.common.EvaluatorData.EvaluatorTree;\r
35 import org.simantics.browsing.ui.common.EvaluatorDataImpl;\r
36 import org.simantics.browsing.ui.common.EvaluatorImpl;\r
37 import org.simantics.browsing.ui.common.exception.InvalidBrowserIdException;\r
38 import org.simantics.browsing.ui.common.extension.CheckedStateContributorBindingExtensionManager;\r
39 import org.simantics.browsing.ui.common.extension.ComparableContextContributorBindingExtensionManager;\r
40 import org.simantics.browsing.ui.common.extension.EvaluatorBindingExtensionManager;\r
41 import org.simantics.browsing.ui.common.extension.EvaluatorFactory;\r
42 import org.simantics.browsing.ui.common.extension.ImageDecoratorContributorBindingExtensionManager;\r
43 import org.simantics.browsing.ui.common.extension.ImagerContributorBindingExtensionManager;\r
44 import org.simantics.browsing.ui.common.extension.LabelDecoratorContributorBindingExtensionManager;\r
45 import org.simantics.browsing.ui.common.extension.LabelerContributorBindingExtensionManager;\r
46 import org.simantics.browsing.ui.common.extension.ViewpointContributionContributorBindingExtensionManager;\r
47 import org.simantics.browsing.ui.content.CheckedStateFactory;\r
48 import org.simantics.browsing.ui.content.ComparableContextFactory;\r
49 import org.simantics.browsing.ui.content.ContributorBinding;\r
50 import org.simantics.browsing.ui.content.ImageDecorator;\r
51 import org.simantics.browsing.ui.content.ImageDecoratorFactory;\r
52 import org.simantics.browsing.ui.content.Imager;\r
53 import org.simantics.browsing.ui.content.ImagerFactory;\r
54 import org.simantics.browsing.ui.content.LabelDecorator;\r
55 import org.simantics.browsing.ui.content.LabelDecoratorFactory;\r
56 import org.simantics.browsing.ui.content.Labeler;\r
57 import org.simantics.browsing.ui.content.LabelerFactory;\r
58 import org.simantics.browsing.ui.content.Viewpoint;\r
59 import org.simantics.browsing.ui.content.ViewpointContributionFactory;\r
60 import org.simantics.browsing.ui.content.ViewpointFactory;\r
61 import org.simantics.browsing.ui.model.InvalidContribution;\r
62 import org.simantics.browsing.ui.model.browsecontexts.BrowseContext;\r
63 import org.simantics.db.ReadGraph;\r
64 import org.simantics.db.RequestProcessor;\r
65 import org.simantics.db.Resource;\r
66 import org.simantics.db.common.request.ReadRequest;\r
67 import org.simantics.db.exception.DatabaseException;\r
68 import org.simantics.db.exception.ResourceNotFoundException;\r
69 \r
70 /**\r
71  * An entry point for loading an EvaluatorData in a data-oriented fashion. Also\r
72  * adds contributions made by extensions of the related extension points.\r
73  * \r
74  * @author Antti Villberg\r
75  */\r
76 public class Evaluators {\r
77 \r
78     public static final boolean DEBUG = false;\r
79 \r
80     public static void create(EvaluatorData data, final ResourceManager resourceManager,\r
81             final Map<String, Collection<ContributorBinding<ViewpointContributionFactory>>> viewpointContributions,\r
82             final Set<ContributorBinding<ComparableContextFactory>> comparableContextContributions,\r
83             final Set<ContributorBinding<LabelerFactory>> labelerContributions,\r
84             final Set<ContributorBinding<CheckedStateFactory>> checkStateContributions,\r
85             final Set<ContributorBinding<LabelDecoratorFactory>> labelDecoratorContributions,\r
86             final Set<ContributorBinding<ImagerFactory>> imagerContributions,\r
87             final Set<ContributorBinding<ImageDecoratorFactory>> imageDecoratorContributions) {\r
88 \r
89         Map<Class<?>, Evaluator> evaluators = new HashMap<Class<?>, Evaluator>();\r
90 \r
91         HashMap<String, ContributionViewpointFactory> viewpointFactories = new HashMap<String, ContributionViewpointFactory>();\r
92 \r
93         for(final Map.Entry<String, Collection<ContributorBinding<ViewpointContributionFactory>>> entry : viewpointContributions.entrySet()) {\r
94             Collection<ViewpointContributionFactory> factories = new ArrayList<ViewpointContributionFactory>();\r
95             for(ContributorBinding<ViewpointContributionFactory> binding : entry.getValue()) factories.add(binding.getContributor().getFactory());\r
96             viewpointFactories.put(entry.getKey(), new ContributionViewpointFactory(entry.getKey(), factories));\r
97         }\r
98 \r
99         for(final Map.Entry<String, Collection<ContributorBinding<ViewpointContributionFactory>>> entry : viewpointContributions.entrySet()) {\r
100             ContributionViewpointFactory factory = viewpointFactories.get(entry.getKey());\r
101             for(ContributorBinding<ViewpointContributionFactory> binding : entry.getValue()) {\r
102                 Tester test = binding.getContributor().getNodeContextTester();\r
103                 Class<?> clazz = binding.getContributor().getInputClass();\r
104                 Evaluator evaluator = evaluators.get(clazz);\r
105                 if(evaluator == null) {\r
106                     evaluator = data.newEvaluator();\r
107                     evaluators.put(clazz, evaluator);\r
108                 }\r
109                 if(test == null) {\r
110                     if (DEBUG)\r
111                         System.out.println("add root viewpoint " + factory + " to class " + clazz.getSimpleName());\r
112                     evaluator.addViewpoint(factory, binding.getPreference());\r
113                 } else {\r
114                     if (DEBUG)\r
115                         System.out.println("add viewpoint " + factory + " to class " + clazz.getSimpleName() + " with tester " + test);\r
116                     EvaluatorTree<ViewpointFactory> branch = ((EvaluatorImpl)evaluator).getViewpointTree().addBranch(test);\r
117                     branch.addFactory(factory, binding.getPreference());\r
118                 }\r
119             }\r
120         }\r
121 \r
122         for(final ContributorBinding<ComparableContextFactory> binding : comparableContextContributions) {\r
123 \r
124             ComparableContextFactory factory = binding.getContributor().getFactory();\r
125             Tester test = binding.getContributor().getNodeContextTester();\r
126             Class<?> clazz = binding.getContributor().getInputClass();\r
127             Evaluator evaluator = evaluators.get(clazz);\r
128             if(evaluator == null) {\r
129                 evaluator = data.newEvaluator();\r
130                 evaluators.put(clazz, evaluator);\r
131             }\r
132             if(test == null) {\r
133                 if (DEBUG)\r
134                     System.out.println("add root comparable context " + factory + " to class " + clazz.getSimpleName());\r
135                 evaluator.addComparableContext(factory, binding.getPreference());\r
136             } else {\r
137                 if (DEBUG)\r
138                     System.out.println("add comparable context " + factory + " to class " + clazz.getSimpleName() + " with tester " + test);\r
139                 EvaluatorTree<ComparableContextFactory> branch = ((EvaluatorImpl)evaluator).getComparableContextTree().addBranch(test);\r
140                 branch.addFactory(factory, binding.getPreference());\r
141             }\r
142         }\r
143 \r
144         for(final ContributorBinding<LabelerFactory> binding : labelerContributions) {\r
145 \r
146             LabelerFactory factory = binding.getContributor().getFactory();\r
147             Tester test = binding.getContributor().getNodeContextTester();\r
148             Class<?> clazz = binding.getContributor().getInputClass();\r
149             Evaluator evaluator = evaluators.get(clazz);\r
150             if(evaluator == null) {\r
151                 evaluator = data.newEvaluator();\r
152                 evaluators.put(clazz, evaluator);\r
153             }\r
154             if(test == null) {\r
155                 if (DEBUG)\r
156                     System.out.println("add root labeler " + factory + " to class " + clazz.getSimpleName());\r
157                 evaluator.addLabeler(factory, binding.getPreference());\r
158             } else {\r
159                 if (DEBUG)\r
160                     System.out.println("add labeler " + factory + " to class " + clazz.getSimpleName() + " with tester " + test);\r
161                 EvaluatorTree<LabelerFactory> branch = ((EvaluatorImpl)evaluator).getLabelerTree().addBranch(test);\r
162                 branch.addFactory(factory, binding.getPreference());\r
163             }\r
164         }\r
165 \r
166         for(final ContributorBinding<CheckedStateFactory> binding : checkStateContributions) {\r
167 \r
168             CheckedStateFactory factory = binding.getContributor().getFactory();\r
169             Tester test = binding.getContributor().getNodeContextTester();\r
170             Class<?> clazz = binding.getContributor().getInputClass();\r
171             Evaluator evaluator = evaluators.get(clazz);\r
172             if(evaluator == null) {\r
173                 evaluator = data.newEvaluator();\r
174                 evaluators.put(clazz, evaluator);\r
175             }\r
176             if(test == null) {\r
177                 if (DEBUG)\r
178                     System.out.println("add root check state " + factory + " to class " + clazz.getSimpleName());\r
179                 evaluator.addCheckState(factory, binding.getPreference());\r
180             } else {\r
181                 if (DEBUG)\r
182                     System.out.println("add check state " + factory + " to class " + clazz.getSimpleName() + " with tester " + test);\r
183                 EvaluatorTree<CheckedStateFactory> branch = ((EvaluatorImpl)evaluator).getCheckStateTree().addBranch(test);\r
184                 branch.addFactory(factory, binding.getPreference());\r
185             }\r
186         }\r
187 \r
188         for(final ContributorBinding<LabelDecoratorFactory> binding : labelDecoratorContributions) {\r
189 \r
190             LabelDecoratorFactory factory = binding.getContributor().getFactory();\r
191             Tester test = binding.getContributor().getNodeContextTester();\r
192             Class<?> clazz = binding.getContributor().getInputClass();\r
193             Evaluator evaluator = evaluators.get(clazz);\r
194             if(evaluator == null) {\r
195                 evaluator = data.newEvaluator();\r
196                 evaluators.put(clazz, evaluator);\r
197             }\r
198             if(test == null) {\r
199                 if (DEBUG)\r
200                     System.out.println("add root label decorator " + factory + " to class " + clazz.getSimpleName());\r
201                 evaluator.addLabelDecorator(factory, binding.getPreference());\r
202             } else {\r
203                 if (DEBUG)\r
204                     System.out.println("add label decorator " + factory + " to class " + clazz.getSimpleName() + " with tester " + test);\r
205                 EvaluatorTree<LabelDecoratorFactory> branch = ((EvaluatorImpl)evaluator).getLabelDecoratorTree().addBranch(test);\r
206                 branch.addFactory(factory, binding.getPreference());\r
207             }\r
208         }\r
209 \r
210         for(final ContributorBinding<ImagerFactory> binding : imagerContributions) {\r
211 \r
212             ImagerFactory factory = binding.getContributor().getFactory();\r
213             Tester test = binding.getContributor().getNodeContextTester();\r
214             Class<?> clazz = binding.getContributor().getInputClass();\r
215             Evaluator evaluator = evaluators.get(clazz);\r
216             if(evaluator == null) {\r
217                 evaluator = data.newEvaluator();\r
218                 evaluators.put(clazz, evaluator);\r
219             }\r
220             if(test == null) {\r
221                 if (DEBUG)\r
222                     System.out.println("add root imager " + factory + " to class " + clazz.getSimpleName());\r
223                 evaluator.addImager(factory, binding.getPreference());\r
224             } else {\r
225                 if (DEBUG)\r
226                     System.out.println("add imager " + factory + " to class " + clazz.getSimpleName() + " with tester " + test);\r
227                 EvaluatorTree<ImagerFactory> branch = ((EvaluatorImpl)evaluator).getImagerTree().addBranch(test);\r
228                 branch.addFactory(factory, binding.getPreference());\r
229             }\r
230         }\r
231 \r
232         for(final ContributorBinding<ImageDecoratorFactory> binding : imageDecoratorContributions) {\r
233 \r
234             ImageDecoratorFactory factory = binding.getContributor().getFactory();\r
235             Tester test = binding.getContributor().getNodeContextTester();\r
236             Class<?> clazz = binding.getContributor().getInputClass();\r
237             Evaluator evaluator = evaluators.get(clazz);\r
238             if(evaluator == null) {\r
239                 evaluator = data.newEvaluator();\r
240                 evaluators.put(clazz, evaluator);\r
241             }\r
242             if(test == null) {\r
243                 if (DEBUG)\r
244                     System.out.println("add root image decorator " + factory + " to class " + clazz.getSimpleName());\r
245                 evaluator.addImageDecorator(factory, binding.getPreference());\r
246             } else {\r
247                 if (DEBUG)\r
248                     System.out.println("add image decorator " + factory + " to class " + clazz.getSimpleName() + " with tester " + test);\r
249                 EvaluatorTree<ImageDecoratorFactory> branch = ((EvaluatorImpl)evaluator).getImageDecoratorTree().addBranch(test);\r
250                 branch.addFactory(factory, binding.getPreference());\r
251             }\r
252         }\r
253 \r
254         for(Map.Entry<Class<?>, Evaluator> entry : evaluators.entrySet()) {\r
255             data.addEvaluator(entry.getKey(), entry.getValue());\r
256         }\r
257 \r
258     }\r
259 \r
260     /**\r
261      * @param processor\r
262      * @param browseContexts\r
263      * @param resourceManager\r
264      * @param data\r
265      * @return the URIs of the actual set of browse contexts loaded by this\r
266      *         method. If an included browse context resource has no URI, it\r
267      *         will not be included in this set.\r
268      */\r
269     public static Set<String> loadModelled(\r
270             RequestProcessor processor, \r
271             final Set<String> browseContexts, \r
272             final ResourceManager resourceManager,\r
273             final EvaluatorDataImpl data,\r
274             final boolean useNodeBrowseContexts,\r
275             final boolean useNodeActionContexts) {\r
276 \r
277         final Set<String> allBrowseContexts = new HashSet<String>(browseContexts);\r
278 \r
279         // Create evaluator\r
280         final EvaluatorImpl eval = new EvaluatorImpl();\r
281         data.addEvaluator(Object.class, eval);  \r
282         \r
283         try {\r
284 \r
285             // Load data for evaluator\r
286             processor.syncRequest(new ReadRequest() {\r
287                 \r
288                 @Override\r
289                 public void run(ReadGraph graph) throws DatabaseException {\r
290 \r
291                     // Map browse context names to resources\r
292                     Collection<Resource> browseContextResources = new ArrayList<Resource>(browseContexts.size());\r
293                     for(String browseContext : browseContexts) {\r
294                         try {\r
295                             browseContextResources.add(graph.getResource(browseContext));\r
296                         } catch(ResourceNotFoundException e) {\r
297                             // Expected result, if no modelled contributions exist.\r
298                             //System.err.println("Didn't find " + browseContext + " while loading model browser.");\r
299                         } catch(DatabaseException e) {\r
300                             System.err.println("Didn't find " + browseContext + " while loading model browser.");\r
301                             e.printStackTrace();\r
302                         }\r
303                     }\r
304 \r
305                     // Load browse context\r
306                     try {\r
307                         final BrowseContext browseContext = \r
308                             BrowseContext.create(graph, browseContextResources);\r
309                         \r
310                         data.setBrowseContext(browseContext);\r
311 \r
312                         // Get URI's for all found browse contexts to fill return value\r
313                         for (Resource context : BrowseContext.findSubcontexts(graph, browseContextResources)) {\r
314                             String uri = graph.getPossibleURI(context);\r
315                             if (uri != null)\r
316                                 allBrowseContexts.add(uri);\r
317                         }\r
318 \r
319                         // Fill evaluator\r
320                         eval.addLabeler(new LabelerFactory() {\r
321                             @Override\r
322                             public Labeler create(PrimitiveQueryUpdater updater, final NodeContext context,\r
323                                     LabelerKey key) {\r
324                                 return new EvaluatorLabeler(updater, context, key, browseContext, useNodeBrowseContexts);\r
325                             }\r
326                         }, 0.0);\r
327 \r
328                         eval.addImager(new ImagerFactory() {\r
329                             @Override\r
330                             public Imager create(PrimitiveQueryUpdater updater, NodeContext context,\r
331                                     ImagerKey key) {\r
332                                 return new EvaluatorImager(updater, context, key, browseContext, useNodeBrowseContexts);\r
333                             }\r
334                         }, 0.0);\r
335 \r
336                         eval.addCheckState(new CheckedStateFactory() {\r
337 \r
338                             @Override\r
339                             public CheckedState create(PrimitiveQueryUpdater updater,\r
340                                     NodeContext context, CheckedStateKey key) {\r
341                                 return new EvaluatorCheckedState(updater, context, key, browseContext, useNodeBrowseContexts).getState();\r
342                             }\r
343                         }, 0.0);\r
344 \r
345                         eval.addLabelDecorator(new LabelDecoratorFactory() {\r
346                             @Override\r
347                             public LabelDecorator create(PrimitiveQueryUpdater updater,\r
348                                     NodeContext context, LabelDecoratorKey key) {\r
349                                 return new EvaluatorLabelDecorator(updater, context, key, browseContext, useNodeBrowseContexts);\r
350                             }\r
351                         }, 0.0);\r
352 \r
353                         eval.addImageDecorator(new ImageDecoratorFactory() {\r
354                             @Override\r
355                             public ImageDecorator create(PrimitiveQueryUpdater updater,\r
356                                     NodeContext context, ImageDecoratorKey key) {\r
357                                 return new EvaluatorImageDecorator(updater, context, key, browseContext, useNodeBrowseContexts);\r
358                             }\r
359                         }, 0.0);\r
360 \r
361                         eval.addViewpoint(new ViewpointFactory() {\r
362                             @Override\r
363                             public Viewpoint create(PrimitiveQueryUpdater updater, \r
364                                     final NodeContext context,\r
365                                     ViewpointKey key) {\r
366                                 return new EvaluatorViewpoint(updater, context, key, browseContext, useNodeBrowseContexts, useNodeActionContexts);\r
367                             }\r
368                         }, 0.0);\r
369                     } catch (InvalidContribution e) {\r
370                         e.printStackTrace();\r
371                         return;\r
372                     }\r
373 \r
374                 }\r
375 \r
376             });\r
377 \r
378         } catch (DatabaseException e) {\r
379 \r
380             e.printStackTrace();\r
381 \r
382         }\r
383 \r
384         return allBrowseContexts;\r
385     }\r
386 \r
387     public static void loadExtensions(RequestProcessor processor, final Set<String> browseContexts, final ResourceManager resourceManager,\r
388             final Map<String, Collection<ContributorBinding<ViewpointContributionFactory>>> viewpointContributions,\r
389             final Set<ContributorBinding<ComparableContextFactory>> comparableContextContributions,\r
390             final Set<ContributorBinding<LabelerFactory>> labelerContributions,\r
391             final Set<ContributorBinding<CheckedStateFactory>> checkStateContributions,\r
392             final Set<ContributorBinding<LabelDecoratorFactory>> labelDecoratorContributions,\r
393             final Set<ContributorBinding<ImagerFactory>> imagerContributions,\r
394             final Set<ContributorBinding<ImageDecoratorFactory>> imageDecoratorContributions) {\r
395 \r
396         for(ContributorBinding<ViewpointContributionFactory> binding : ViewpointContributionContributorBindingExtensionManager.getInstance().getBoundContributions(browseContexts)) {\r
397             String viewpointId = binding.getContributor().getFactory().getViewpointId();\r
398             Collection<ContributorBinding<ViewpointContributionFactory>> viewpoints = viewpointContributions.get(viewpointId);\r
399             if(viewpoints == null) {\r
400                 viewpoints = new ArrayList<ContributorBinding<ViewpointContributionFactory>>();\r
401                 viewpointContributions.put(viewpointId, viewpoints);\r
402             }\r
403             viewpoints.add(binding);\r
404         }\r
405 \r
406         for(final ContributorBinding<ComparableContextFactory> binding : ComparableContextContributorBindingExtensionManager.getInstance().getBoundContributions(browseContexts)) {\r
407             comparableContextContributions.add(binding);\r
408         }\r
409 \r
410         for(final ContributorBinding<LabelerFactory> binding : LabelerContributorBindingExtensionManager.getInstance().getBoundContributions(browseContexts)) {\r
411             labelerContributions.add(binding);\r
412         }\r
413 \r
414         for(final ContributorBinding<CheckedStateFactory> binding : CheckedStateContributorBindingExtensionManager.getInstance().getBoundContributions(browseContexts)) {\r
415             checkStateContributions.add(binding);\r
416         }\r
417 \r
418         for(final ContributorBinding<LabelDecoratorFactory> binding : LabelDecoratorContributorBindingExtensionManager.getInstance().getBoundContributions(browseContexts)) {\r
419             labelDecoratorContributions.add(binding);\r
420         }\r
421 \r
422         for(final ContributorBinding<ImagerFactory> binding : ImagerContributorBindingExtensionManager.getInstance().getBoundContributions(browseContexts)) {\r
423             imagerContributions.add(binding);\r
424         }\r
425 \r
426         for(final ContributorBinding<ImageDecoratorFactory> binding : ImageDecoratorContributorBindingExtensionManager.getInstance().getBoundContributions(browseContexts)) {\r
427             imageDecoratorContributions.add(binding);\r
428         }\r
429 \r
430     }\r
431 \r
432     public static EvaluatorData load(RequestProcessor processor, Set<String> browseContexts, ResourceManager resourceManager) throws InvalidBrowserIdException {\r
433         return load(processor, browseContexts, resourceManager, false, false);\r
434     }\r
435 \r
436     public static EvaluatorData load(RequestProcessor processor, Set<String> browseContexts, ResourceManager resourceManager, boolean useNodeBrowseContexts, boolean useNodeActionContexts) throws InvalidBrowserIdException {\r
437 \r
438         Map<String, Collection<ContributorBinding<ViewpointContributionFactory>>> viewpointContributions = new HashMap<String, Collection<ContributorBinding<ViewpointContributionFactory>>>();\r
439         Set<ContributorBinding<ComparableContextFactory>> comparableContextContributions = new HashSet<ContributorBinding<ComparableContextFactory>>();\r
440         Set<ContributorBinding<LabelerFactory>> labelerContributions = new HashSet<ContributorBinding<LabelerFactory>>();\r
441         Set<ContributorBinding<CheckedStateFactory>> checkStateContributions = new HashSet<ContributorBinding<CheckedStateFactory>>();\r
442         Set<ContributorBinding<LabelDecoratorFactory>> labelDecoratorContributions = new HashSet<ContributorBinding<LabelDecoratorFactory>>();\r
443         Set<ContributorBinding<ImagerFactory>> imagerContributions = new HashSet<ContributorBinding<ImagerFactory>>();\r
444         Set<ContributorBinding<ImageDecoratorFactory>> imageDecoratorContributions = new HashSet<ContributorBinding<ImageDecoratorFactory>>();\r
445 \r
446         EvaluatorDataImpl data = new EvaluatorDataImpl();\r
447 \r
448         // Load modelled contributions\r
449         Set<String> allBrowseContexts = loadModelled(processor, browseContexts, resourceManager, data, useNodeBrowseContexts, useNodeActionContexts);\r
450 \r
451         // Load extension point contributions\r
452         loadExtensions(processor, allBrowseContexts, resourceManager, viewpointContributions, comparableContextContributions, labelerContributions, checkStateContributions, labelDecoratorContributions, imagerContributions, imageDecoratorContributions);\r
453 \r
454         // Create contributed evaluators\r
455         create(data, resourceManager, viewpointContributions, comparableContextContributions, labelerContributions, checkStateContributions, labelDecoratorContributions, imagerContributions, imageDecoratorContributions);\r
456 \r
457         // Create plugin evaluators for the contexts\r
458         for(EvaluatorFactory factory : EvaluatorBindingExtensionManager.getInstance().getBoundFactories(allBrowseContexts)) {\r
459             data.addEvaluator(factory.getClazz(), factory.create(allBrowseContexts));\r
460         }\r
461 \r
462         return data;\r
463 \r
464     }\r
465     \r
466 }\r