1 package org.simantics.browsing.ui.graph.impl;
\r
3 import java.util.Map;
\r
5 import org.simantics.browsing.ui.BuiltinKeys.LabelerKey;
\r
6 import org.eclipse.swt.widgets.Composite;
\r
7 import org.eclipse.swt.widgets.Event;
\r
8 import org.simantics.Simantics;
\r
9 import org.simantics.browsing.ui.NodeContext;
\r
10 import org.simantics.browsing.ui.PrimitiveQueryUpdater;
\r
11 import org.simantics.browsing.ui.graph.impl.contribution.LabelerContributionImpl;
\r
12 import org.simantics.browsing.ui.model.browsecontexts.BrowseContext;
\r
13 import org.simantics.browsing.ui.model.tooltips.TooltipContribution;
\r
14 import org.simantics.db.ReadGraph;
\r
15 import org.simantics.db.UndoContext;
\r
16 import org.simantics.db.common.request.UniqueRead;
\r
17 import org.simantics.db.common.utils.RequestUtil;
\r
18 import org.simantics.db.exception.DatabaseException;
\r
19 import org.simantics.ui.SimanticsUI;
\r
21 public class EvaluatorLabeler extends LabelerContributionImpl {
\r
23 final BrowseContext browseContext;
\r
24 final boolean useNodeBrowseContexts;
\r
26 private TooltipContribution currentTooltipContribution;
\r
28 public EvaluatorLabeler(PrimitiveQueryUpdater updater, NodeContext context,
\r
30 BrowseContext browseContext, boolean useNodeBrowseContexts) {
\r
31 super(updater, context, key);
\r
32 this.browseContext = browseContext;
\r
33 this.useNodeBrowseContexts = useNodeBrowseContexts;
\r
37 public Map<String, String> labels(
\r
39 NodeContext context)
\r
40 throws DatabaseException {
\r
41 boolean oldSynchronous = graph.setSynchronous(false);
\r
43 return BrowseContext.get(graph,context,browseContext,useNodeBrowseContexts).getLabel(graph, context);
\r
45 graph.setSynchronous(oldSynchronous);
\r
50 public int category(ReadGraph graph,
\r
51 NodeContext context)
\r
52 throws DatabaseException {
\r
57 getModifier(ReadGraph graph, UndoContext undoContext,
\r
58 NodeContext context, String columnKey) throws DatabaseException {
\r
59 return BrowseContext.get(graph,context,browseContext,useNodeBrowseContexts).getModifier(graph, context, columnKey);
\r
62 public String toString() {
\r
63 return "EvaluatorLabeler[" + browseContext + "] " + context;
\r
68 public boolean shouldCreateToolTip(Event event, NodeContext context) {
\r
70 currentTooltipContribution = RequestUtil.trySyncRequest(
\r
71 Simantics.getSession(),
\r
72 SimanticsUI.UI_THREAD_REQUEST_START_TIMEOUT,
\r
73 SimanticsUI.UI_THREAD_REQUEST_EXECUTION_TIMEOUT,
\r
75 new UniqueRead<TooltipContribution>() {
\r
77 public TooltipContribution perform(ReadGraph graph) throws DatabaseException {
\r
78 return BrowseContext.get(graph,context,browseContext,useNodeBrowseContexts).shouldCreateToolTip(graph, event, context);
\r
81 if (currentTooltipContribution != null)
\r
83 } catch (DatabaseException | InterruptedException e) {
\r
84 e.printStackTrace();
\r
90 public Composite createToolTipContentArea(Event event, Composite parent, NodeContext nodeContext) {
\r
91 return (Composite) currentTooltipContribution.getTooltip(event, parent, nodeContext);
\r