\r
import org.eclipse.jface.resource.ImageDescriptor;\r
import org.eclipse.swt.widgets.Display;\r
+import org.eclipse.swt.widgets.Event;\r
import org.eclipse.swt.widgets.Shell;\r
import org.simantics.browsing.ui.BuiltinKeys;\r
import org.simantics.browsing.ui.CheckedState;\r
import org.simantics.browsing.ui.model.sorters.AlphanumericSorter;\r
import org.simantics.browsing.ui.model.sorters.Sorter;\r
import org.simantics.browsing.ui.model.sorters.SorterContribution;\r
+import org.simantics.browsing.ui.model.tooltips.TooltipContribution;\r
import org.simantics.browsing.ui.model.visuals.FlatNodeContribution;\r
import org.simantics.browsing.ui.model.visuals.VisualsContribution;\r
import org.simantics.db.ReadGraph;\r
OrderedNodeTypeMultiMap<ModifierContribution> modifierContributions = new OrderedNodeTypeMultiMap<ModifierContribution>();\r
OrderedNodeTypeMultiMap<SorterContribution> sorterContributions = new OrderedNodeTypeMultiMap<SorterContribution>();\r
OrderedNodeTypeMultiMap<FlatNodeContribution> flatNodeContributions = new OrderedNodeTypeMultiMap<FlatNodeContribution>();\r
+ OrderedNodeTypeMultiMap<TooltipContribution> tooltipContributions = new OrderedNodeTypeMultiMap<>();\r
\r
private final String[] uris; \r
\r
browseContext.imageDecorationContributions,\r
browseContext.modifierContributions,\r
browseContext.sorterContributions,\r
- browseContext.flatNodeContributions\r
+ browseContext.flatNodeContributions,\r
+ browseContext.tooltipContributions\r
);\r
}\r
}\r
public static ArrayList<NodeContext> augment(ReadGraph graph, BrowseContext bc, Collection<NodeContext> contexts, boolean resolveABC) throws DatabaseException {\r
ArrayList<NodeContext> result = new ArrayList<NodeContext>();\r
for(NodeContext context : contexts) {\r
- ActionBrowseContext abc = resolveABC ? graph.syncRequest(new ResolveActionBrowseContext(context)) : null;\r
+ ActionBrowseContext abc = null;\r
+ if(resolveABC) {\r
+ abc = graph.syncRequest(new ResolveActionBrowseContext(context));\r
+ if(abc == null) abc = (ActionBrowseContext)context.getConstant(BuiltinKeys.ACTION_BROWSE_CONTEXT);\r
+ }\r
result.add(NodeContextBuilder.buildWithData(NodeType.KEY_SEQUENCE_EXT,\r
new Object[] {\r
context.getConstant(BuiltinKeys.INPUT), \r
return null;\r
}\r
\r
+ public TooltipContribution shouldCreateToolTip(ReadGraph graph, Event event, NodeContext context) throws DatabaseException {\r
+ NodeType nodeType = getNodeType(graph, context);\r
+ if(nodeType != null)\r
+ for(TooltipContribution contribution : tooltipContributions.get(graph, nodeType)) { \r
+ if (contribution.shouldCreateToolTip(graph, context))\r
+ return contribution;\r
+ }\r
+ return null;\r
+ }\r
+ \r
+ public Object getTooltip(TooltipContribution contribution, Object event, Object parent, NodeContext context) throws DatabaseException {\r
+ Object tooltip = contribution.getTooltip(event, parent, context);\r
+ if (tooltip != null)\r
+ return tooltip;\r
+ return null;\r
+ }\r
+ \r
private Graph toGraph() {\r
Graph graph = new Graph();\r
new Node(graph, "Foo");\r