]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.selectionview/src/org/simantics/selectionview/function/All.java
Support enumerated property types in UC interface (2nd try)
[simantics/platform.git] / bundles / org.simantics.selectionview / src / org / simantics / selectionview / function / All.java
index 79541b06134deb344a5f6f71c4dda854edcfc145..d26d86682874a15e61551de5cfcd66907ec975b4 100644 (file)
@@ -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;
@@ -62,6 +64,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 +201,9 @@ public class All {
                        Resource parameterResource = parameter.getRepresents(graph);
                        if(graph.sync(new IsEnumeratedValue(parameterResource))) {
                                Map<String, Resource> map = graph.sync(new InstanceEnumerationMap(parameterResource));
-                               return new ArrayList<String>(map.keySet());
+                               ArrayList<String> 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 +468,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 GetEnumerationValue.getEnumerationValueName(graph, possibleValue);
+                               }
+                       }
+
                        if(value == null) {
 
                                Variant variant = property.getVariantValue(graph);
@@ -518,8 +531,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);