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