X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.modeling.ui%2Fsrc%2Forg%2Fsimantics%2Fmodeling%2Fui%2FcomponentTypeEditor%2FProceduralComponentTypeEditorNamingService.java;h=1366354b81e3f8df951f2b084907c3d1691d13d3;hb=efefe85bb75819bff218921d9f75a1592cff575f;hp=828610514f07ecf7b508b6768274c15fcf35e22f;hpb=969bd23cab98a79ca9101af33334000879fb60c5;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/componentTypeEditor/ProceduralComponentTypeEditorNamingService.java b/bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/componentTypeEditor/ProceduralComponentTypeEditorNamingService.java index 828610514..1366354b8 100644 --- a/bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/componentTypeEditor/ProceduralComponentTypeEditorNamingService.java +++ b/bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/componentTypeEditor/ProceduralComponentTypeEditorNamingService.java @@ -1,106 +1,107 @@ -package org.simantics.modeling.ui.componentTypeEditor; - -import java.util.ArrayList; -import java.util.List; - -import org.eclipse.ui.IEditorInput; -import org.simantics.NameLabelMode; -import org.simantics.NameLabelUtil; -import org.simantics.db.ReadGraph; -import org.simantics.db.Resource; -import org.simantics.db.common.ResourceArray; -import org.simantics.db.common.request.PossibleIndexRoot; -import org.simantics.db.exception.DatabaseException; -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: - * - * - * The goal tooltip format is: path/input-name (model-name) - * - * @author Tuukka Lehtonen - */ -public class ProceduralComponentTypeEditorNamingService extends EditorNamingService2 implements IEditorNamingService2 { - - @Override - public String getName(ReadGraph graph, String editorId, IEditorInput input) throws DatabaseException { - if (input instanceof IResourceEditorInput) { - Resource code = ((IResourceEditorInput) input).getResource(); - if (code != null) { - return truncated(getPropertyOwnerName(graph, code) + " (Code)", 256); - } - } - return "Unsupported input: " + input; - } - - @Override - public String getToolTipText(ReadGraph graph, String editorId, IEditorInput input) throws DatabaseException { - if (input instanceof IResourceEditorInput) { - Resource code = ((IResourceEditorInput) input).getResource(); - if (code != null) { - StringBuilder sb = new StringBuilder(); - getTooltip(graph, editorId, (IResourceEditorInput) input, sb); - return sb.toString(); - } - } - return "Unsupported input: " + input; - } - - private StringBuilder getTooltip(ReadGraph graph, String editorId, IResourceEditorInput input, StringBuilder sb) throws DatabaseException { - Resource r = ((IResourceEditorInput) input).getResource(); - NameLabelMode mode = NameLabelUtil.getNameLabelMode(graph); - - String name = getName(graph, editorId, input); - Layer0 L0 = Layer0.getInstance(graph); - Resource owner = graph.getPossibleObject(r, L0.PropertyOf); - if (owner != null) { - Resource root = graph.syncRequest(new PossibleIndexRoot(owner)); - if (root != null) { - ResourceArray path = getPathInIndexRoot(graph, owner); - for (int i = path.size() - 2; i > 0; --i) { - String segment = NameLabelUtil.modalName(graph, path.get(i), mode); - if (segment.contains("/")) - segment = "\"" + segment + "\""; - - sb.append(segment).append("/"); - } - sb.append(name); - String rootLabel = NameLabelUtil.modalName(graph, root, mode); - sb.append(" (" + rootLabel + ")"); - return sb; - } - } - sb.append(name); - return sb; - } - - private String getPropertyOwnerName(ReadGraph graph, Resource property) throws DatabaseException { - Layer0 L0 = Layer0.getInstance(graph); - Resource owner = graph.getPossibleObject(property, L0.PropertyOf); - if (owner == null) - return "No owner (Code)"; - return graph.getPossibleRelatedValue(owner, L0.HasName); - } - - private static ResourceArray getPathInIndexRoot(ReadGraph graph, Resource r) throws DatabaseException { - Layer0 L0 = Layer0.getInstance(graph); - List path = new ArrayList(); - while (true) { - path.add(r); - if (graph.isInstanceOf(r, L0.IndexRoot)) - return new ResourceArray(path); - Resource partOf = graph.getPossibleObject(r, L0.PartOf); - if (partOf == null) - return ResourceArray.EMPTY; - r = partOf; - } - } - +package org.simantics.modeling.ui.componentTypeEditor; + +import java.util.ArrayList; +import java.util.List; + +import org.eclipse.osgi.util.NLS; +import org.eclipse.ui.IEditorInput; +import org.simantics.NameLabelMode; +import org.simantics.NameLabelUtil; +import org.simantics.db.ReadGraph; +import org.simantics.db.Resource; +import org.simantics.db.common.ResourceArray; +import org.simantics.db.common.request.PossibleIndexRoot; +import org.simantics.db.exception.DatabaseException; +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: + * + * + * The goal tooltip format is: path/input-name (model-name) + * + * @author Tuukka Lehtonen + */ +public class ProceduralComponentTypeEditorNamingService extends EditorNamingService2 implements IEditorNamingService2 { + + @Override + public String getName(ReadGraph graph, String editorId, IEditorInput input) throws DatabaseException { + if (input instanceof IResourceEditorInput) { + Resource code = ((IResourceEditorInput) input).getResource(); + if (code != null) { + return truncated(getPropertyOwnerName(graph, code) + " (Code)", 256); //$NON-NLS-1$ + } + } + return NLS.bind(Messages.ProceduralComponentTypeEditorNamingService_UnsupportedInput, input); + } + + @Override + public String getToolTipText(ReadGraph graph, String editorId, IEditorInput input) throws DatabaseException { + if (input instanceof IResourceEditorInput) { + Resource code = ((IResourceEditorInput) input).getResource(); + if (code != null) { + StringBuilder sb = new StringBuilder(); + getTooltip(graph, editorId, (IResourceEditorInput) input, sb); + return sb.toString(); + } + } + return NLS.bind(Messages.ProceduralComponentTypeEditorNamingService_UnsupportedInput, input); + } + + private StringBuilder getTooltip(ReadGraph graph, String editorId, IResourceEditorInput input, StringBuilder sb) throws DatabaseException { + Resource r = ((IResourceEditorInput) input).getResource(); + NameLabelMode mode = NameLabelUtil.getNameLabelMode(graph); + + String name = getName(graph, editorId, input); + Layer0 L0 = Layer0.getInstance(graph); + Resource owner = graph.getPossibleObject(r, L0.PropertyOf); + if (owner != null) { + Resource root = graph.syncRequest(new PossibleIndexRoot(owner)); + if (root != null) { + ResourceArray path = getPathInIndexRoot(graph, owner); + for (int i = path.size() - 2; i > 0; --i) { + String segment = NameLabelUtil.modalName(graph, path.get(i), mode); + if (segment.contains("/")) //$NON-NLS-1$ + segment = "\"" + segment + "\""; //$NON-NLS-1$ //$NON-NLS-2$ + + sb.append(segment).append("/"); //$NON-NLS-1$ + } + sb.append(name); + String rootLabel = NameLabelUtil.modalName(graph, root, mode); + sb.append(" (" + rootLabel + ")"); //$NON-NLS-1$ //$NON-NLS-2$ + return sb; + } + } + sb.append(name); + return sb; + } + + private String getPropertyOwnerName(ReadGraph graph, Resource property) throws DatabaseException { + Layer0 L0 = Layer0.getInstance(graph); + Resource owner = graph.getPossibleObject(property, L0.PropertyOf); + if (owner == null) + return "No owner (Code)"; //$NON-NLS-1$ + return graph.getPossibleRelatedValue(owner, L0.HasName); + } + + private static ResourceArray getPathInIndexRoot(ReadGraph graph, Resource r) throws DatabaseException { + Layer0 L0 = Layer0.getInstance(graph); + List path = new ArrayList(); + while (true) { + path.add(r); + if (graph.isInstanceOf(r, L0.IndexRoot)) + return new ResourceArray(path); + Resource partOf = graph.getPossibleObject(r, L0.PartOf); + if (partOf == null) + return ResourceArray.EMPTY; + r = partOf; + } + } + } \ No newline at end of file