diff --git a/android/src/main/java/com/facebook/flipper/plugins/inspector/descriptors/utils/EnumMapping.java b/android/src/main/java/com/facebook/flipper/plugins/inspector/descriptors/utils/EnumMapping.java index 95ed3de6b..051e7b055 100644 --- a/android/src/main/java/com/facebook/flipper/plugins/inspector/descriptors/utils/EnumMapping.java +++ b/android/src/main/java/com/facebook/flipper/plugins/inspector/descriptors/utils/EnumMapping.java @@ -8,19 +8,21 @@ package com.facebook.flipper.plugins.inspector.descriptors.utils; import static com.facebook.flipper.plugins.inspector.InspectorValue.Type.Enum; +import static com.facebook.flipper.plugins.inspector.InspectorValue.Type.Picker; +import androidx.collection.ArrayMap; import androidx.collection.SimpleArrayMap; import com.facebook.flipper.plugins.inspector.InspectorValue; public class EnumMapping { - private final SimpleArrayMap mMapping = new SimpleArrayMap<>(); + private final ArrayMap mMapping = new ArrayMap<>(); private final String mDefaultKey; - public EnumMapping(String defaultKey) { + public EnumMapping(final String defaultKey) { mDefaultKey = defaultKey; } - public void put(String s, int i) { + public void put(final String s, final int i) { mMapping.put(s, i); } @@ -28,23 +30,46 @@ public class EnumMapping { return get(i, true); } - public InspectorValue get(final int i, final boolean mutable) { - for (int ii = 0, count = mMapping.size(); ii < count; ii++) { - if (mMapping.valueAt(ii) == i) { - return mutable - ? InspectorValue.mutable(Enum, mMapping.keyAt(ii)) - : InspectorValue.immutable(Enum, mMapping.keyAt(ii)); + public static String findKeyForValue( + SimpleArrayMap mapping, String mDefaultValue, int currentValue) { + for (int i = 0, count = mapping.size(); i < count; i++) { + if (mapping.valueAt(i).equals(currentValue)) { + return mapping.keyAt(i); } } - return mutable - ? InspectorValue.mutable(Enum, mDefaultKey) - : InspectorValue.immutable(Enum, mDefaultKey); + return mDefaultValue; } - public int get(String s) { + public InspectorValue get(final int i, final boolean mutable) { + String value = findKeyForValue(mMapping, mDefaultKey, i); + return mutable ? InspectorValue.mutable(Enum, value) : InspectorValue.immutable(Enum, value); + } + + public int get(final String s) { if (mMapping.containsKey(s)) { return mMapping.get(s); } return mMapping.get(mDefaultKey); } + + public InspectorValue toPicker() { + return toPicker(true); + } + + public InspectorValue toPicker(final boolean mutable) { + return mutable + ? InspectorValue.mutable(Picker, new InspectorValue.Picker(mMapping.keySet(), mDefaultKey)) + : InspectorValue.immutable(Enum, mDefaultKey); + } + + public InspectorValue toPicker(final int currentValue) { + return toPicker(currentValue, true); + } + + public InspectorValue toPicker(final int currentValue, final boolean mutable) { + String value = findKeyForValue(mMapping, mDefaultKey, currentValue); + return mutable + ? InspectorValue.mutable(Picker, new InspectorValue.Picker(mMapping.keySet(), value)) + : InspectorValue.immutable(Enum, value); + } }