From c78bac3d907a3cd97bc4281c41564e48be3eeb85 Mon Sep 17 00:00:00 2001 From: Paco Estevez Garcia Date: Sun, 6 Sep 2020 12:57:02 -0700 Subject: [PATCH] Add picker support for EnumMapping Summary: This diff makes EnumMapping compatible with the new Layout widget "picker" Reviewed By: muraziz Differential Revision: D23538548 fbshipit-source-id: 7bdb01648c1ad5e2d0d7594c98df5ed89d893702 --- .../descriptors/utils/EnumMapping.java | 51 ++++++++++++++----- 1 file changed, 38 insertions(+), 13 deletions(-) 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); + } }