]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.browsing.ui.graph.impl/src/org/simantics/browsing/ui/graph/impl/EvaluatorLabeler.java
Sync git svn branch with SVN repository r33144.
[simantics/platform.git] / bundles / org.simantics.browsing.ui.graph.impl / src / org / simantics / browsing / ui / graph / impl / EvaluatorLabeler.java
index 222c0e261a4d04af05c4a21726339b857d49f40e..9e0b7b5380d60436e7f7e5abd564da1c4dc2b5e3 100644 (file)
@@ -3,19 +3,28 @@ package org.simantics.browsing.ui.graph.impl;
 import java.util.Map;\r
 \r
 import org.simantics.browsing.ui.BuiltinKeys.LabelerKey;\r
+import org.eclipse.swt.widgets.Composite;\r
+import org.eclipse.swt.widgets.Event;\r
+import org.simantics.Simantics;\r
 import org.simantics.browsing.ui.NodeContext;\r
 import org.simantics.browsing.ui.PrimitiveQueryUpdater;\r
 import org.simantics.browsing.ui.graph.impl.contribution.LabelerContributionImpl;\r
 import org.simantics.browsing.ui.model.browsecontexts.BrowseContext;\r
+import org.simantics.browsing.ui.model.tooltips.TooltipContribution;\r
 import org.simantics.db.ReadGraph;\r
 import org.simantics.db.UndoContext;\r
+import org.simantics.db.common.request.UniqueRead;\r
+import org.simantics.db.common.utils.RequestUtil;\r
 import org.simantics.db.exception.DatabaseException;\r
+import org.simantics.ui.SimanticsUI;\r
 \r
 public class EvaluatorLabeler extends LabelerContributionImpl {\r
        \r
        final BrowseContext browseContext;\r
        final boolean useNodeBrowseContexts;\r
        \r
+    private TooltipContribution currentTooltipContribution;\r
+       \r
     public EvaluatorLabeler(PrimitiveQueryUpdater updater, NodeContext context,\r
                        LabelerKey key,\r
                        BrowseContext browseContext, boolean useNodeBrowseContexts) {\r
@@ -54,5 +63,32 @@ public class EvaluatorLabeler extends LabelerContributionImpl {
        return "EvaluatorLabeler[" + browseContext + "] " + context;\r
     }\r
     \r
+    \r
+    @Override\r
+    public boolean shouldCreateToolTip(Event event, NodeContext context) {\r
+        try {\r
+            currentTooltipContribution = RequestUtil.trySyncRequest(\r
+                    Simantics.getSession(),\r
+                    SimanticsUI.UI_THREAD_REQUEST_START_TIMEOUT,\r
+                    SimanticsUI.UI_THREAD_REQUEST_EXECUTION_TIMEOUT,\r
+                    null,\r
+                    new UniqueRead<TooltipContribution>() {\r
+                @Override\r
+                public TooltipContribution perform(ReadGraph graph) throws DatabaseException {\r
+                    return BrowseContext.get(graph,context,browseContext,useNodeBrowseContexts).shouldCreateToolTip(graph, event, context);\r
+                }\r
+            });\r
+            if (currentTooltipContribution != null)\r
+                return true;\r
+        } catch (DatabaseException | InterruptedException e) {\r
+            e.printStackTrace();\r
+        }\r
+        return false;\r
+    }\r
+    \r
+    @Override\r
+    public Composite createToolTipContentArea(Event event, Composite parent, NodeContext nodeContext) {\r
+        return (Composite) currentTooltipContribution.getTooltip(event, parent, nodeContext);\r
+    }\r
 \r
 }\r