Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--plugins/org.eclipse.emf.common.ui/src/org/eclipse/emf/common/ui/viewer/ColumnViewerInformationControlToolTipSupport.java48
1 files changed, 48 insertions, 0 deletions
diff --git a/plugins/org.eclipse.emf.common.ui/src/org/eclipse/emf/common/ui/viewer/ColumnViewerInformationControlToolTipSupport.java b/plugins/org.eclipse.emf.common.ui/src/org/eclipse/emf/common/ui/viewer/ColumnViewerInformationControlToolTipSupport.java
index 228b6d203..c235e171f 100644
--- a/plugins/org.eclipse.emf.common.ui/src/org/eclipse/emf/common/ui/viewer/ColumnViewerInformationControlToolTipSupport.java
+++ b/plugins/org.eclipse.emf.common.ui/src/org/eclipse/emf/common/ui/viewer/ColumnViewerInformationControlToolTipSupport.java
@@ -13,6 +13,7 @@ import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.util.Arrays;
+import java.util.List;
import org.eclipse.emf.common.ui.CommonUIPlugin;
import org.eclipse.emf.common.util.URI;
@@ -95,6 +96,53 @@ public final class ColumnViewerInformationControlToolTipSupport
this.viewer = viewer;
}
+ public URI getURI(Object object)
+ {
+ IContentProvider contentProvider = viewer.getContentProvider();
+ if (contentProvider instanceof IStructuredContentProvider)
+ {
+ IStructuredContentProvider structuredContentProvider = (IStructuredContentProvider)contentProvider;
+ List<Object> elements = Arrays.asList(structuredContentProvider.getElements(viewer.getInput()));
+ if (structuredContentProvider instanceof ITreeContentProvider)
+ {
+ return traverse(elements, (ITreeContentProvider)structuredContentProvider, object);
+ }
+ else
+ {
+ int index = elements.indexOf(object);
+ if (index != -1)
+ {
+ return URI.createURI("path:/" + index);
+ }
+ }
+ }
+ return null;
+ }
+
+ protected URI traverse(List<Object> elements, ITreeContentProvider treeContentProvider, Object object)
+ {
+ int index = elements.indexOf(object);
+ if (index != -1)
+ {
+ return URI.createURI("path:/" + index);
+ }
+ Object parent = treeContentProvider.getParent(object);
+ if (parent != null)
+ {
+ URI uri = traverse(elements, treeContentProvider, parent);
+ if (uri != null)
+ {
+ List<Object> children = Arrays.asList(treeContentProvider.getChildren(parent));
+ index = children.indexOf(object);
+ if (index != -1)
+ {
+ return uri.appendSegment(Integer.toString(index));
+ }
+ }
+ }
+ return null;
+ }
+
public void changing(LocationEvent event)
{
URI uri = URI.createURI(event.location);

Back to the top