-package org.simantics.annotation.ui.editor;\r
-\r
-import org.eclipse.ui.IEditorInput;\r
-import org.simantics.NameLabelUtil;\r
-import org.simantics.databoard.util.URIStringUtils;\r
-import org.simantics.db.ReadGraph;\r
-import org.simantics.db.Resource;\r
-import org.simantics.db.exception.DatabaseException;\r
-import org.simantics.db.layer0.request.PossibleModel;\r
-import org.simantics.layer0.Layer0;\r
-import org.simantics.modeling.ui.features.EditorNamingService2;\r
-import org.simantics.ui.workbench.IEditorNamingService2;\r
-import org.simantics.ui.workbench.IResourceEditorInput;\r
-\r
-/**\r
- * Tries to:\r
- * <ul>\r
- * <li>resolve annotation property relation name from the input</li>\r
- * <li>add (model-name) suffix to editor tooltip to tell apart editors with same\r
- * title. The goal tooltip format is: path/input-name (model-name)</li>\r
- * </ul>\r
- * \r
- * @author Tuukka Lehtonen\r
- */\r
-public class AnnotationTypeEditorNamingService extends EditorNamingService2 implements IEditorNamingService2 {\r
-\r
- @Override\r
- public String getName(ReadGraph graph, String editorId, IEditorInput in) throws DatabaseException {\r
- if (!(in instanceof IResourceEditorInput))\r
- return "";\r
-\r
- IResourceEditorInput input = (IResourceEditorInput) in;\r
- Resource r = input.getResource();\r
- Layer0 L0 = Layer0.getInstance(graph);\r
- Resource property = graph.getPossibleObject(r, L0.HasRange_Inverse);\r
- return limitedName(graph, NameLabelUtil.modalName(graph, property != null ? property : r), input);\r
- }\r
-\r
- @Override\r
- public String getToolTipText(ReadGraph graph, String editorId, IEditorInput input) throws DatabaseException {\r
- return getTooltip(graph, editorId, (IResourceEditorInput) input, new StringBuilder()).toString();\r
- }\r
-\r
- private StringBuilder getTooltip(ReadGraph graph, String editorId, IResourceEditorInput input, StringBuilder sb) throws DatabaseException {\r
- if (input.getResource() != null) {\r
- Resource r = input.getResource();\r
-\r
- Resource model = graph.syncRequest(new PossibleModel(r));\r
- if (model != null) {\r
- String uri = graph.getPossibleURI(input.getResource());\r
- if (uri != null) {\r
- String modelURI = graph.getPossibleURI(model);\r
- String path = uri.replace(modelURI + "/", "");\r
- // Remove last uri segment which is the type name (UUID)\r
- path = path.replaceFirst("/[^/]*$", "/");\r
- sb.append(URIStringUtils.unescape(path));\r
- }\r
- sb.append(getName(graph, editorId, input));\r
-\r
- // Append model label in parenthesis\r
- String modelLabel = NameLabelUtil.modalName(graph, model);\r
- sb.append(" (").append(modelLabel).append(")");\r
- }\r
- }\r
-\r
- return sb;\r
- }\r
-\r
+package org.simantics.annotation.ui.editor;
+
+import org.eclipse.ui.IEditorInput;
+import org.simantics.NameLabelUtil;
+import org.simantics.databoard.util.URIStringUtils;
+import org.simantics.db.ReadGraph;
+import org.simantics.db.Resource;
+import org.simantics.db.exception.DatabaseException;
+import org.simantics.db.layer0.request.PossibleModel;
+import org.simantics.layer0.Layer0;
+import org.simantics.modeling.ui.features.EditorNamingService2;
+import org.simantics.ui.workbench.IEditorNamingService2;
+import org.simantics.ui.workbench.IResourceEditorInput;
+
+/**
+ * Tries to:
+ * <ul>
+ * <li>resolve annotation property relation name from the input</li>
+ * <li>add (model-name) suffix to editor tooltip to tell apart editors with same
+ * title. The goal tooltip format is: path/input-name (model-name)</li>
+ * </ul>
+ *
+ * @author Tuukka Lehtonen
+ */
+public class AnnotationTypeEditorNamingService extends EditorNamingService2 implements IEditorNamingService2 {
+
+ @Override
+ public String getName(ReadGraph graph, String editorId, IEditorInput in) throws DatabaseException {
+ if (!(in instanceof IResourceEditorInput))
+ return "";
+
+ IResourceEditorInput input = (IResourceEditorInput) in;
+ Resource r = input.getResource();
+ Layer0 L0 = Layer0.getInstance(graph);
+ Resource property = graph.getPossibleObject(r, L0.HasRange_Inverse);
+ return limitedName(graph, NameLabelUtil.modalName(graph, property != null ? property : r), input);
+ }
+
+ @Override
+ public String getToolTipText(ReadGraph graph, String editorId, IEditorInput input) throws DatabaseException {
+ return getTooltip(graph, editorId, (IResourceEditorInput) input, new StringBuilder()).toString();
+ }
+
+ private StringBuilder getTooltip(ReadGraph graph, String editorId, IResourceEditorInput input, StringBuilder sb) throws DatabaseException {
+ if (input.getResource() != null) {
+ Resource r = input.getResource();
+
+ Resource model = graph.syncRequest(new PossibleModel(r));
+ if (model != null) {
+ String uri = graph.getPossibleURI(input.getResource());
+ if (uri != null) {
+ String modelURI = graph.getPossibleURI(model);
+ String path = uri.replace(modelURI + "/", "");
+ // Remove last uri segment which is the type name (UUID)
+ path = path.replaceFirst("/[^/]*$", "/");
+ sb.append(URIStringUtils.unescape(path));
+ }
+ sb.append(getName(graph, editorId, input));
+
+ // Append model label in parenthesis
+ String modelLabel = NameLabelUtil.modalName(graph, model);
+ sb.append(" (").append(modelLabel).append(")");
+ }
+ }
+
+ return sb;
+ }
+
}
\ No newline at end of file