1 package org.simantics.annotation.ui.editor;
\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
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
23 * @author Tuukka Lehtonen
\r
25 public class AnnotationTypeEditorNamingService extends EditorNamingService2 implements IEditorNamingService2 {
\r
28 public String getName(ReadGraph graph, String editorId, IEditorInput in) throws DatabaseException {
\r
29 if (!(in instanceof IResourceEditorInput))
\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
40 public String getToolTipText(ReadGraph graph, String editorId, IEditorInput input) throws DatabaseException {
\r
41 return getTooltip(graph, editorId, (IResourceEditorInput) input, new StringBuilder()).toString();
\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
48 Resource model = graph.syncRequest(new PossibleModel(r));
\r
49 if (model != null) {
\r
50 String uri = graph.getPossibleURI(input.getResource());
\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
58 sb.append(getName(graph, editorId, input));
\r
60 // Append model label in parenthesis
\r
61 String modelLabel = NameLabelUtil.modalName(graph, model);
\r
62 sb.append(" (").append(modelLabel).append(")");
\r