]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.annotation.ui/src/org/simantics/annotation/ui/editor/AnnotationTypeEditorNamingService.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.annotation.ui / src / org / simantics / annotation / ui / editor / AnnotationTypeEditorNamingService.java
1 package org.simantics.annotation.ui.editor;\r
2 \r
3 import org.eclipse.ui.IEditorInput;\r
4 import org.simantics.NameLabelUtil;\r
5 import org.simantics.databoard.util.URIStringUtils;\r
6 import org.simantics.db.ReadGraph;\r
7 import org.simantics.db.Resource;\r
8 import org.simantics.db.exception.DatabaseException;\r
9 import org.simantics.db.layer0.request.PossibleModel;\r
10 import org.simantics.layer0.Layer0;\r
11 import org.simantics.modeling.ui.features.EditorNamingService2;\r
12 import org.simantics.ui.workbench.IEditorNamingService2;\r
13 import org.simantics.ui.workbench.IResourceEditorInput;\r
14 \r
15 /**\r
16  * Tries to:\r
17  * <ul>\r
18  * <li>resolve annotation property relation name from the input</li>\r
19  * <li>add (model-name) suffix to editor tooltip to tell apart editors with same\r
20  * title. The goal tooltip format is: path/input-name (model-name)</li>\r
21  * </ul>\r
22  * \r
23  * @author Tuukka Lehtonen\r
24  */\r
25 public class AnnotationTypeEditorNamingService extends EditorNamingService2 implements IEditorNamingService2 {\r
26 \r
27     @Override\r
28     public String getName(ReadGraph graph, String editorId, IEditorInput in) throws DatabaseException {\r
29         if (!(in instanceof IResourceEditorInput))\r
30             return "";\r
31 \r
32         IResourceEditorInput input = (IResourceEditorInput) in;\r
33         Resource r = input.getResource();\r
34         Layer0 L0 = Layer0.getInstance(graph);\r
35         Resource property = graph.getPossibleObject(r, L0.HasRange_Inverse);\r
36         return limitedName(graph, NameLabelUtil.modalName(graph, property != null ? property : r), input);\r
37     }\r
38 \r
39     @Override\r
40     public String getToolTipText(ReadGraph graph, String editorId, IEditorInput input) throws DatabaseException {\r
41         return getTooltip(graph, editorId, (IResourceEditorInput) input, new StringBuilder()).toString();\r
42     }\r
43 \r
44     private StringBuilder getTooltip(ReadGraph graph, String editorId, IResourceEditorInput input, StringBuilder sb) throws DatabaseException {\r
45         if (input.getResource() != null) {\r
46             Resource r = input.getResource();\r
47 \r
48             Resource model = graph.syncRequest(new PossibleModel(r));\r
49             if (model != null) {\r
50                 String uri = graph.getPossibleURI(input.getResource());\r
51                 if (uri != null) {\r
52                     String modelURI = graph.getPossibleURI(model);\r
53                     String path = uri.replace(modelURI + "/", "");\r
54                     // Remove last uri segment which is the type name (UUID)\r
55                     path = path.replaceFirst("/[^/]*$", "/");\r
56                     sb.append(URIStringUtils.unescape(path));\r
57                 }\r
58                 sb.append(getName(graph, editorId, input));\r
59 \r
60                 // Append model label in parenthesis\r
61                 String modelLabel = NameLabelUtil.modalName(graph, model);\r
62                 sb.append(" (").append(modelLabel).append(")");\r
63             }\r
64         }\r
65 \r
66         return sb;\r
67     }\r
68 \r
69 }