]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.browsing.ui.model/src/org/simantics/browsing/ui/model/browsecontexts/BrowseContext.java
Merge commit '0b471805f017da83d715a0d8409f53bdd009d31e'
[simantics/platform.git] / bundles / org.simantics.browsing.ui.model / src / org / simantics / browsing / ui / model / browsecontexts / BrowseContext.java
index 50281f20dc4e1287ea502145175029c7b31666ec..8d5a427c2502bf573e22a87fd682f3eccd69ec34 100644 (file)
@@ -23,6 +23,7 @@ import java.util.Set;
 \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
@@ -52,6 +53,7 @@ import org.simantics.browsing.ui.model.nodetypes.SpecialNodeType;
 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
@@ -86,6 +88,7 @@ public class BrowseContext {
     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
@@ -139,7 +142,8 @@ public class BrowseContext {
                         browseContext.imageDecorationContributions,\r
                         browseContext.modifierContributions,\r
                         browseContext.sorterContributions,\r
-                        browseContext.flatNodeContributions\r
+                        browseContext.flatNodeContributions,\r
+                        browseContext.tooltipContributions\r
                         );\r
             }\r
         }\r
@@ -257,7 +261,11 @@ public class BrowseContext {
     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
@@ -443,6 +451,23 @@ public class BrowseContext {
         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