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;
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<String, Integer> mMapping = new SimpleArrayMap<>();
private final ArrayMap<String, Integer> 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<String, Integer> 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);
}
}