mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
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:
committed by
Facebook Github Bot
parent
8e750d75ee
commit
bca8fa5a16
+56
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
+23
@@ -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"),
|
||||
],
|
||||
)
|
||||
|
||||
+37
-3
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user