1 package org.simantics.browsing.ui.model.tooltips;
\r
3 import java.util.HashMap;
\r
4 import java.util.Map;
\r
6 import org.simantics.browsing.ui.BuiltinKeys;
\r
7 import org.simantics.browsing.ui.NodeContext;
\r
8 import org.simantics.browsing.ui.model.InvalidContribution;
\r
9 import org.simantics.browsing.ui.model.nodetypes.NodeType;
\r
10 import org.simantics.browsing.ui.model.tests.Test;
\r
11 import org.simantics.browsing.ui.model.visuals.VisualsContribution;
\r
12 import org.simantics.db.ReadGraph;
\r
13 import org.simantics.db.exception.DatabaseException;
\r
15 public class TooltipContribution extends VisualsContribution {
\r
16 TooltipRule tooltipRule;
\r
18 private Map<Object, Object> auxiliary = new HashMap<>();
\r
20 public TooltipContribution(NodeType nodeType, Test test, TooltipRule tooltipRule, double priority) throws InvalidContribution {
\r
21 super(nodeType, test, priority);
\r
22 if(!tooltipRule.isCompatible(nodeType.getContentType()))
\r
23 throw new InvalidContribution("Tooltip rule is not compatible with the content type.");
\r
24 this.tooltipRule = tooltipRule;
\r
27 public Object getTooltip(Object event, Object parent, NodeContext context) {
\r
29 return tooltipRule.createTooltip(event, parent, context, auxiliary);
\r
36 public boolean shouldCreateToolTip(ReadGraph graph, NodeContext context) throws DatabaseException {
\r
37 Object content = context.getConstant(BuiltinKeys.INPUT);
\r
38 if(test != null && !test.test(graph, content))
\r
41 return tooltipRule.shouldCreateToolTip(graph, context, auxiliary);
\r