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
This commit is contained in:
Paco Estevez Garcia
2020-09-06 12:57:02 -07:00
committed by Facebook GitHub Bot
parent 5b4403b400
commit c78bac3d90

View File

@@ -8,19 +8,21 @@
package com.facebook.flipper.plugins.inspector.descriptors.utils; 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.Enum;
import static com.facebook.flipper.plugins.inspector.InspectorValue.Type.Picker;
import androidx.collection.ArrayMap;
import androidx.collection.SimpleArrayMap; import androidx.collection.SimpleArrayMap;
import com.facebook.flipper.plugins.inspector.InspectorValue; import com.facebook.flipper.plugins.inspector.InspectorValue;
public class EnumMapping { public class EnumMapping {
private final SimpleArrayMap<String, Integer> mMapping = new SimpleArrayMap<>(); private final ArrayMap<String, Integer> mMapping = new ArrayMap<>();
private final String mDefaultKey; private final String mDefaultKey;
public EnumMapping(String defaultKey) { public EnumMapping(final String defaultKey) {
mDefaultKey = defaultKey; mDefaultKey = defaultKey;
} }
public void put(String s, int i) { public void put(final String s, final int i) {
mMapping.put(s, i); mMapping.put(s, i);
} }
@@ -28,23 +30,46 @@ public class EnumMapping {
return get(i, true); return get(i, true);
} }
public InspectorValue get(final int i, final boolean mutable) { public static String findKeyForValue(
for (int ii = 0, count = mMapping.size(); ii < count; ii++) { SimpleArrayMap<String, Integer> mapping, String mDefaultValue, int currentValue) {
if (mMapping.valueAt(ii) == i) { for (int i = 0, count = mapping.size(); i < count; i++) {
return mutable if (mapping.valueAt(i).equals(currentValue)) {
? InspectorValue.mutable(Enum, mMapping.keyAt(ii)) return mapping.keyAt(i);
: InspectorValue.immutable(Enum, mMapping.keyAt(ii));
} }
} }
return mutable return mDefaultValue;
? InspectorValue.mutable(Enum, mDefaultKey)
: InspectorValue.immutable(Enum, mDefaultKey);
} }
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)) { if (mMapping.containsKey(s)) {
return mMapping.get(s); return mMapping.get(s);
} }
return mMapping.get(mDefaultKey); 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);
}
} }