X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.selectionview%2Fsrc%2Forg%2Fsimantics%2Fselectionview%2Ffunction%2FAll.java;h=fa3f0f8d11b065881e428f46ab4ee989d746e374;hb=HEAD;hp=79541b06134deb344a5f6f71c4dda854edcfc145;hpb=8d9659a857fb83a9fdb5c9c8663302765fddd3e8;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.selectionview/src/org/simantics/selectionview/function/All.java b/bundles/org.simantics.selectionview/src/org/simantics/selectionview/function/All.java index 79541b061..fa3f0f8d1 100644 --- a/bundles/org.simantics.selectionview/src/org/simantics/selectionview/function/All.java +++ b/bundles/org.simantics.selectionview/src/org/simantics/selectionview/function/All.java @@ -2,6 +2,7 @@ package org.simantics.selectionview.function; import java.io.IOException; import java.util.ArrayList; +import java.util.Collections; import java.util.Map; import java.util.function.Consumer; @@ -13,6 +14,7 @@ import org.eclipse.swt.widgets.FontDialog; import org.simantics.Simantics; import org.simantics.browsing.ui.NodeContext; import org.simantics.browsing.ui.content.Labeler.DialogModifier; +import org.simantics.browsing.ui.graph.impl.GetEnumerationValue; import org.simantics.common.format.Formatter; import org.simantics.databoard.Bindings; import org.simantics.databoard.Datatypes; @@ -41,6 +43,7 @@ import org.simantics.db.common.request.InstanceEnumerationMap; import org.simantics.db.common.request.IsEnumeratedValue; import org.simantics.db.common.request.UniqueRead; import org.simantics.db.common.request.WriteRequest; +import org.simantics.db.common.utils.CommonDBUtils; import org.simantics.db.common.utils.NameUtils; import org.simantics.db.exception.DatabaseException; import org.simantics.db.layer0.util.Layer0Utils; @@ -62,6 +65,7 @@ import org.simantics.ui.fonts.Fonts; import org.simantics.ui.selection.WorkbenchSelectionElement; import org.simantics.ui.selection.WorkbenchSelectionUtils; import org.simantics.utils.datastructures.collections.CollectionUtils; +import org.simantics.utils.strings.AlphanumComparator; import org.simantics.utils.ui.AdaptionUtils; import org.simantics.utils.ui.ErrorLogger; import org.simantics.utils.ui.ISelectionUtils; @@ -198,7 +202,9 @@ public class All { Resource parameterResource = parameter.getRepresents(graph); if(graph.sync(new IsEnumeratedValue(parameterResource))) { Map map = graph.sync(new InstanceEnumerationMap(parameterResource)); - return new ArrayList(map.keySet()); + ArrayList values = new ArrayList<>(map.keySet()); + Collections.sort(values, AlphanumComparator.COMPARATOR); + return values; } else if(graph.isInstanceOf(parameterResource, L0.Boolean)) { return CollectionUtils.toList("true", "false"); } @@ -463,6 +469,14 @@ public class All { value = formatterFunction.apply(property.getValue(graph)); } } + + Resource possibleValue = context.getParent(graph).getPossibleRepresents(graph); + if(possibleValue != null) { + if(graph.syncRequest(new IsEnumeratedValue(possibleValue))) { + return CommonDBUtils.getEnumerationValueName(graph, possibleValue); + } + } + if(value == null) { Variant variant = property.getVariantValue(graph); @@ -518,8 +532,14 @@ public class All { String parsedLabel = (String)_value; Object value = parsedLabel; + boolean isEnumeration = false; + Resource possibleValue = context.getParent(graph).getPossibleRepresents(graph); + if(possibleValue != null) { + isEnumeration = graph.syncRequest(new IsEnumeratedValue(possibleValue)); + } + Datatype type = context.getParent(graph).getPossibleDatatype(graph); - if (type != null) { + if (type != null && !isEnumeration) { Binding binding = Bindings.getBinding(type);