Allow column specific tooltips in the GraphExplorer 00/2300/1
authorMarko Luukkainen <marko.luukkainen@semantum.fi>
Thu, 11 Oct 2018 11:12:36 +0000 (14:12 +0300)
committerTuukka Lehtonen <tuukka.lehtonen@semantum.fi>
Thu, 11 Oct 2018 11:48:43 +0000 (11:48 +0000)
gitlab #146

Change-Id: I8c07e3013783ffd31fba95391e0b8ba35b855b84
(cherry picked from commit d4cdaa8ea386ab9f6432854db9481f42c70983fd)

bundles/org.simantics.browsing.ui.graph.impl/src/org/simantics/browsing/ui/graph/impl/contribution/FinalLabelerContributionImpl.java
bundles/org.simantics.browsing.ui.graph.impl/src/org/simantics/browsing/ui/graph/impl/contributor/labeler/ColumnLabelerContributorImpl.java
bundles/org.simantics.browsing.ui.swt/src/org/simantics/browsing/ui/swt/GraphExplorerToolTip.java

index ed56886944644b453c3d6f07d6c4a7cfc9a3337c..cf1e3223d1e28fa2d5f48600a86abbe78e9f70ab 100644 (file)
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2007, 2010 Association for Decentralized Information Management
+ * Copyright (c) 2007, 2018 Association for Decentralized Information Management
  * in Industry THTH ry.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
@@ -8,12 +8,15 @@
  *
  * Contributors:
  *     VTT Technical Research Centre of Finland - initial API and implementation
+ *     Semantum Oy - gitlab #146 - tooltip support
  *******************************************************************************/
 package org.simantics.browsing.ui.graph.impl.contribution;
 
 import java.util.Collections;
 import java.util.Map;
 
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Event;
 import org.simantics.Simantics;
 import org.simantics.browsing.ui.BuiltinKeys;
 import org.simantics.browsing.ui.BuiltinKeys.LabelerKey;
@@ -24,6 +27,7 @@ import org.simantics.browsing.ui.PrimitiveQueryUpdater;
 import org.simantics.browsing.ui.common.labelers.LabelerContent;
 import org.simantics.browsing.ui.common.labelers.LabelerStub;
 import org.simantics.browsing.ui.common.node.IModifiableNode;
+import org.simantics.browsing.ui.graph.impl.contributor.labeler.ColumnLabelerContributorImpl;
 import org.simantics.browsing.ui.graph.impl.request.ResourceQuery;
 import org.simantics.db.AsyncReadGraph;
 import org.simantics.db.ReadGraph;
@@ -161,6 +165,16 @@ public abstract class FinalLabelerContributionImpl extends LabelerStub {
         
     }
 
+    @Override
+    public boolean shouldCreateToolTip(Event event, NodeContext nodeContext) {
+        return createToolTip(event, nodeContext);
+    }
+
+    @Override
+    public Composite createToolTipContentArea(Event event, Composite parent, NodeContext nodeContext) {
+        return (Composite)createToolTipContent(event, parent, nodeContext);
+    }
+
     // OVERRIDE
 
     public Modifier getModifier(ReadGraph graph, UndoContext undoContext, NodeContext context, String columnKey) throws DatabaseException {
@@ -171,4 +185,12 @@ public abstract class FinalLabelerContributionImpl extends LabelerStub {
 
     public abstract int category(ReadGraph graph, NodeContext context) throws DatabaseException;
 
+    public boolean createToolTip(Object event, NodeContext nodeContext) {
+        return false;
+    }
+
+    public Object createToolTipContent(Object event, Object parent, NodeContext nodeContext) {
+        return null;
+    }
+
 }
index d1dab0fb97adc521097769b14d88e115f15be79f..47dcf92c255a4b3a5015931e6d6aab7212e0d688 100644 (file)
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2007, 2010 Association for Decentralized Information Management
+ * Copyright (c) 2007, 2018 Association for Decentralized Information Management
  * in Industry THTH ry.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
@@ -8,6 +8,7 @@
  *
  * Contributors:
  *     VTT Technical Research Centre of Finland - initial API and implementation
+ *     Semantum Oy - gitlab #146 - tooltip support
  *******************************************************************************/
 package org.simantics.browsing.ui.graph.impl.contributor.labeler;
 
@@ -55,6 +56,14 @@ abstract public class ColumnLabelerContributorImpl<T> implements Contributor<Lab
         this.clazz = clazz;
     }
 
+    public boolean shouldCreateToolTip(Object event, T input) {
+        return false;
+    }
+
+    public Object createToolTipContentArea(Object event, Object parent, T input) {
+        return null;
+    }
+
     @Override
     public LabelerFactory getFactory() {
 
@@ -100,6 +109,18 @@ abstract public class ColumnLabelerContributorImpl<T> implements Contributor<Lab
                         return ColumnLabelerContributorImpl.this.toString();
                     }
 
+                    @Override
+                    public boolean createToolTip(Object event, NodeContext nodeContext) {
+                        T input = (T)context.getConstant(BuiltinKeys.INPUT);
+                        return ColumnLabelerContributorImpl.this.shouldCreateToolTip(event, input);
+                    }
+
+                    @Override
+                    public Object createToolTipContent(Object event, Object parent, NodeContext nodeContext) {
+                        T input = (T)context.getConstant(BuiltinKeys.INPUT);
+                        return ColumnLabelerContributorImpl.this.createToolTipContentArea(event, parent, input);
+                    }
+
                 };
 
             }
index f23d4ee1943ae1afb6ce4b1cb167ff197b473c7f..0cc2e71a8c768ddce6c08a2a85cb648794b0a4e5 100644 (file)
@@ -5,6 +5,7 @@ import org.eclipse.swt.graphics.Point;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Event;
 import org.eclipse.swt.widgets.Tree;
+import org.eclipse.swt.widgets.TreeColumn;
 import org.eclipse.swt.widgets.TreeItem;
 import org.simantics.browsing.ui.BuiltinKeys;
 import org.simantics.browsing.ui.NodeContext;
@@ -44,6 +45,19 @@ public class GraphExplorerToolTip extends ToolTip {
         TreeItem treeItem = parent.getItem(new Point(event.x, event.y));
         if (treeItem == null)
             return false;
+        // Locate the column, and add the column reference to Event object.
+        TreeColumn columns[] = parent.getColumns();
+        TreeColumn column = null;
+        int x = 0;
+        for (TreeColumn c : columns) {
+            int w = c.getWidth();
+            if (event.x >= x && event.x < (x+w)) {
+                column = c;
+                break;
+            }
+            x+=w;
+        }
+        event.data = column.getData();
         GENodeQueryManager manager = new GENodeQueryManager(explorerContext, null, null, TreeItemReference.create(treeItem.getParentItem()));
         nodeContext = (NodeContext) treeItem.getData();
         if (nodeContext != null)