Use generated Java delegate for setting properties on ReactViewPagerManager

Summary:
This diff migrates ReactViewPagerManager to use the generated delegate for setting its properties.

Changelog: [Android] [Added] - Use generated Java delegate for setting properties on ReactViewPagerManager

Reviewed By: mdvacca

Differential Revision: D18298049

fbshipit-source-id: f989bedb16e3cabe6a9a8e4238a2b74515041d23
This commit is contained in:
Oleksandr Melnykov
2019-11-12 05:41:28 -08:00
committed by Facebook Github Bot
parent 8e750d75ee
commit bca8fa5a16
4 changed files with 117 additions and 3 deletions
@@ -0,0 +1,56 @@
/**
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @generated by codegen project: GeneratePropsJavaDelegate.js
*/
package com.facebook.react.viewmanagers;
import android.view.View;
import androidx.annotation.Nullable;
import com.facebook.react.bridge.ReadableArray;
import com.facebook.react.uimanager.BaseViewManagerDelegate;
import com.facebook.react.uimanager.BaseViewManagerInterface;
import com.facebook.react.uimanager.LayoutShadowNode;
public class AndroidViewPagerManagerDelegate<T extends View, U extends BaseViewManagerInterface<T> & AndroidViewPagerManagerInterface<T>> extends BaseViewManagerDelegate<T, U> {
public AndroidViewPagerManagerDelegate(U viewManager) {
super(viewManager);
}
@Override
public void setProperty(T view, String propName, @Nullable Object value) {
switch (propName) {
case "initialPage":
mViewManager.setInitialPage(view, value == null ? 0 : ((Double) value).intValue());
break;
case "pageMargin":
mViewManager.setPageMargin(view, value == null ? 0 : ((Double) value).intValue());
break;
case "peekEnabled":
mViewManager.setPeekEnabled(view, value == null ? false : (boolean) value);
break;
case "keyboardDismissMode":
mViewManager.setKeyboardDismissMode(view, (String) value);
break;
case "scrollEnabled":
mViewManager.setScrollEnabled(view, value == null ? true : (boolean) value);
break;
default:
super.setProperty(view, propName, value);
}
}
public void receiveCommand(AndroidViewPagerManagerInterface<T> viewManager, T view, String commandName, ReadableArray args) {
switch (commandName) {
case "setPage":
viewManager.setPage(view, args.getInt(0));
break;
case "setPageWithoutAnimation":
viewManager.setPageWithoutAnimation(view, args.getInt(0));
break;
}
}
}
@@ -0,0 +1,23 @@
/**
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @generated by codegen project: GeneratePropsJavaInterface.js
*/
package com.facebook.react.viewmanagers;
import android.view.View;
import androidx.annotation.Nullable;
public interface AndroidViewPagerManagerInterface<T extends View> {
void setInitialPage(T view, int value);
void setPageMargin(T view, int value);
void setPeekEnabled(T view, boolean value);
void setKeyboardDismissMode(T view, @Nullable String value);
void setScrollEnabled(T view, boolean value);
void setPage(T view, int page);
void setPageWithoutAnimation(T view, int page);
}
@@ -25,5 +25,6 @@ rn_android_library(
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/views/scroll:scroll"),
react_native_target("java/com/facebook/react/viewmanagers:viewmanagers"),
],
)
@@ -16,18 +16,28 @@ import com.facebook.react.module.annotations.ReactModule;
import com.facebook.react.uimanager.PixelUtil;
import com.facebook.react.uimanager.ThemedReactContext;
import com.facebook.react.uimanager.ViewGroupManager;
import com.facebook.react.uimanager.ViewManagerDelegate;
import com.facebook.react.uimanager.annotations.ReactProp;
import com.facebook.react.viewmanagers.AndroidViewPagerManagerDelegate;
import com.facebook.react.viewmanagers.AndroidViewPagerManagerInterface;
import java.util.Map;
/** Instance of {@link ViewManager} that provides native {@link ViewPager} view. */
@ReactModule(name = ReactViewPagerManager.REACT_CLASS)
public class ReactViewPagerManager extends ViewGroupManager<ReactViewPager> {
public class ReactViewPagerManager extends ViewGroupManager<ReactViewPager>
implements AndroidViewPagerManagerInterface<ReactViewPager> {
public static final String REACT_CLASS = "AndroidViewPager";
public static final int COMMAND_SET_PAGE = 1;
public static final int COMMAND_SET_PAGE_WITHOUT_ANIMATION = 2;
private final ViewManagerDelegate<ReactViewPager> mDelegate;
public ReactViewPagerManager() {
mDelegate = new AndroidViewPagerManagerDelegate<>(this);
}
@Override
public String getName() {
return REACT_CLASS;
@@ -38,6 +48,7 @@ public class ReactViewPagerManager extends ViewGroupManager<ReactViewPager> {
return new ReactViewPager(reactContext);
}
@Override
@ReactProp(name = "scrollEnabled", defaultBoolean = true)
public void setScrollEnabled(ReactViewPager viewPager, boolean value) {
viewPager.setScrollEnabled(value);
@@ -129,13 +140,36 @@ public class ReactViewPagerManager extends ViewGroupManager<ReactViewPager> {
parent.removeViewFromAdapter(index);
}
@ReactProp(name = "pageMargin", defaultFloat = 0)
public void setPageMargin(ReactViewPager pager, float margin) {
@Override
@ReactProp(name = "pageMargin", defaultInt = 0)
public void setPageMargin(ReactViewPager pager, int margin) {
pager.setPageMargin((int) PixelUtil.toPixelFromDIP(margin));
}
@Override
@ReactProp(name = "peekEnabled", defaultBoolean = false)
public void setPeekEnabled(ReactViewPager pager, boolean peekEnabled) {
pager.setClipToPadding(!peekEnabled);
}
@Override
public void setInitialPage(ReactViewPager view, int value) {}
@Override
public void setKeyboardDismissMode(ReactViewPager view, @Nullable String value) {}
@Override
public void setPage(ReactViewPager view, int page) {
// TODO(T52835863): Implement when view commands start using delegates generated by JS.
}
@Override
public void setPageWithoutAnimation(ReactViewPager view, int page) {
// TODO(T52835863): Implement when view commands start using delegates generated by JS.
}
@Override
public ViewManagerDelegate<ReactViewPager> getDelegate() {
return mDelegate;
}
}