Use generated Java delegate for setting properties on ReactSliderManager

Summary: This diff migrates `ReactSliderManager` to use the generated `SliderManagerDelegate` for setting its properties.

Reviewed By: mdvacca

Differential Revision: D17203078

fbshipit-source-id: 726736ef275074ecb799b334342ac64976153e2b
This commit is contained in:
Oleksandr Melnykov
2019-09-23 07:18:07 -07:00
committed by Facebook Github Bot
parent 85575dd8e5
commit 5925b3d408
5 changed files with 62 additions and 17 deletions
@@ -27,7 +27,7 @@ public class SliderManagerDelegate<T extends View, U extends BaseViewManagerInte
mViewManager.setDisabled(view, value == null ? false : (boolean) value);
break;
case "enabled":
mViewManager.setEnabled(view, value == null ? false : (boolean) value);
mViewManager.setEnabled(view, value == null ? true : (boolean) value);
break;
case "maximumTrackImage":
mViewManager.setMaximumTrackImage(view, (ReadableMap) value);
@@ -36,7 +36,7 @@ public class SliderManagerDelegate<T extends View, U extends BaseViewManagerInte
mViewManager.setMaximumTrackTintColor(view, value == null ? null : ((Double) value).intValue());
break;
case "maximumValue":
mViewManager.setMaximumValue(view, value == null ? 1f : ((Double) value).floatValue());
mViewManager.setMaximumValue(view, value == null ? 1f : ((Double) value).doubleValue());
break;
case "minimumTrackImage":
mViewManager.setMinimumTrackImage(view, (ReadableMap) value);
@@ -45,10 +45,10 @@ public class SliderManagerDelegate<T extends View, U extends BaseViewManagerInte
mViewManager.setMinimumTrackTintColor(view, value == null ? null : ((Double) value).intValue());
break;
case "minimumValue":
mViewManager.setMinimumValue(view, value == null ? 0f : ((Double) value).floatValue());
mViewManager.setMinimumValue(view, value == null ? 0f : ((Double) value).doubleValue());
break;
case "step":
mViewManager.setStep(view, value == null ? 0f : ((Double) value).floatValue());
mViewManager.setStep(view, value == null ? 0f : ((Double) value).doubleValue());
break;
case "testID":
mViewManager.setTestID(view, value == null ? "" : (String) value);
@@ -63,7 +63,7 @@ public class SliderManagerDelegate<T extends View, U extends BaseViewManagerInte
mViewManager.setTrackImage(view, (ReadableMap) value);
break;
case "value":
mViewManager.setValue(view, value == null ? 0f : ((Double) value).floatValue());
mViewManager.setValue(view, value == null ? 0f : ((Double) value).doubleValue());
break;
default:
super.setProperty(view, propName, value);
@@ -18,14 +18,14 @@ public interface SliderManagerInterface<T extends View> {
void setEnabled(T view, boolean value);
void setMaximumTrackImage(T view, @Nullable ReadableMap value);
void setMaximumTrackTintColor(T view, @Nullable Integer value);
void setMaximumValue(T view, float value);
void setMaximumValue(T view, double value);
void setMinimumTrackImage(T view, @Nullable ReadableMap value);
void setMinimumTrackTintColor(T view, @Nullable Integer value);
void setMinimumValue(T view, float value);
void setStep(T view, float value);
void setMinimumValue(T view, double value);
void setStep(T view, double value);
void setTestID(T view, @Nullable String value);
void setThumbImage(T view, @Nullable ReadableMap value);
void setThumbTintColor(T view, @Nullable Integer value);
void setTrackImage(T view, @Nullable ReadableMap value);
void setValue(T view, float value);
void setValue(T view, double value);
}
@@ -20,5 +20,6 @@ rn_android_library(
react_native_target("java/com/facebook/react/common:common"),
react_native_target("java/com/facebook/react/uimanager:uimanager"),
react_native_target("java/com/facebook/react/uimanager/annotations:annotations"),
react_native_target("java/com/facebook/react/viewmanagers:viewmanagers"),
],
)
@@ -13,6 +13,7 @@ import android.graphics.drawable.LayerDrawable;
import android.view.View;
import android.view.ViewGroup;
import android.widget.SeekBar;
import androidx.annotation.Nullable;
import com.facebook.react.bridge.ReactContext;
import com.facebook.react.bridge.ReadableMap;
import com.facebook.react.common.MapBuilder;
@@ -20,8 +21,11 @@ import com.facebook.react.uimanager.LayoutShadowNode;
import com.facebook.react.uimanager.SimpleViewManager;
import com.facebook.react.uimanager.ThemedReactContext;
import com.facebook.react.uimanager.UIManagerModule;
import com.facebook.react.uimanager.ViewManagerDelegate;
import com.facebook.react.uimanager.ViewProps;
import com.facebook.react.uimanager.annotations.ReactProp;
import com.facebook.react.viewmanagers.SliderManagerDelegate;
import com.facebook.react.viewmanagers.SliderManagerInterface;
import com.facebook.yoga.YogaMeasureFunction;
import com.facebook.yoga.YogaMeasureMode;
import com.facebook.yoga.YogaMeasureOutput;
@@ -33,7 +37,8 @@ import java.util.Map;
*
* <p>Note that the slider is _not_ a controlled component.
*/
public class ReactSliderManager extends SimpleViewManager<ReactSlider> {
public class ReactSliderManager extends SimpleViewManager<ReactSlider>
implements SliderManagerInterface<ReactSlider> {
private static final int STYLE = android.R.attr.seekBarStyle;
@@ -104,6 +109,12 @@ public class ReactSliderManager extends SimpleViewManager<ReactSlider> {
}
};
private final ViewManagerDelegate<ReactSlider> mDelegate;
public ReactSliderManager() {
mDelegate = new SliderManagerDelegate<>(this);
}
@Override
public String getName() {
return REACT_CLASS;
@@ -124,11 +135,13 @@ public class ReactSliderManager extends SimpleViewManager<ReactSlider> {
return new ReactSlider(context, null, STYLE);
}
@Override
@ReactProp(name = ViewProps.ENABLED, defaultBoolean = true)
public void setEnabled(ReactSlider view, boolean enabled) {
view.setEnabled(enabled);
}
@Override
@ReactProp(name = "value", defaultDouble = 0d)
public void setValue(ReactSlider view, double value) {
view.setOnSeekBarChangeListener(null);
@@ -136,21 +149,25 @@ public class ReactSliderManager extends SimpleViewManager<ReactSlider> {
view.setOnSeekBarChangeListener(ON_CHANGE_LISTENER);
}
@Override
@ReactProp(name = "minimumValue", defaultDouble = 0d)
public void setMinimumValue(ReactSlider view, double value) {
view.setMinValue(value);
}
@Override
@ReactProp(name = "maximumValue", defaultDouble = 1d)
public void setMaximumValue(ReactSlider view, double value) {
view.setMaxValue(value);
}
@Override
@ReactProp(name = "step", defaultDouble = 0d)
public void setStep(ReactSlider view, double value) {
view.setStep(value);
}
@Override
@ReactProp(name = "thumbTintColor", customType = "Color")
public void setThumbTintColor(ReactSlider view, Integer color) {
if (color == null) {
@@ -160,6 +177,7 @@ public class ReactSliderManager extends SimpleViewManager<ReactSlider> {
}
}
@Override
@ReactProp(name = "minimumTrackTintColor", customType = "Color")
public void setMinimumTrackTintColor(ReactSlider view, Integer color) {
LayerDrawable drawable = (LayerDrawable) view.getProgressDrawable().getCurrent();
@@ -171,6 +189,7 @@ public class ReactSliderManager extends SimpleViewManager<ReactSlider> {
}
}
@Override
@ReactProp(name = "maximumTrackTintColor", customType = "Color")
public void setMaximumTrackTintColor(ReactSlider view, Integer color) {
LayerDrawable drawable = (LayerDrawable) view.getProgressDrawable().getCurrent();
@@ -182,6 +201,26 @@ public class ReactSliderManager extends SimpleViewManager<ReactSlider> {
}
}
@Override
public void setDisabled(ReactSlider view, boolean value) {}
@Override
public void setMaximumTrackImage(ReactSlider view, @Nullable ReadableMap value) {}
@Override
public void setMinimumTrackImage(ReactSlider view, @Nullable ReadableMap value) {}
@Override
public void setTestID(ReactSlider view, @Nullable String value) {
super.setTestId(view, value);
}
@Override
public void setThumbImage(ReactSlider view, @Nullable ReadableMap value) {}
@Override
public void setTrackImage(ReactSlider view, @Nullable ReadableMap value) {}
@Override
protected void addEventEmitters(final ThemedReactContext reactContext, final ReactSlider view) {
view.setOnSeekBarChangeListener(ON_CHANGE_LISTENER);
@@ -212,4 +251,9 @@ public class ReactSliderManager extends SimpleViewManager<ReactSlider> {
return YogaMeasureOutput.make(reactSlider.getMeasuredWidth(), reactSlider.getMeasuredHeight());
}
@Override
protected ViewManagerDelegate<ReactSlider> getDelegate() {
return mDelegate;
}
}