Add support for RCTText under FlatUIImplementation

Summary: @public Initial version of FlatUIImplementation lacks any primitives support (such as RCTText, RCTImageView or RCTView). This diff add the first part, RCTText (alongside with RCTVirtualText and RCTRawText).

Reviewed By: sriramramani

Differential Revision: D2693348
This commit is contained in:
Denis Koroskin
2015-12-06 16:00:36 -08:00
committed by Ahmed El-Helw
parent 44d2ee1c3f
commit 5c2f536e9a
21 changed files with 1466 additions and 20 deletions

View File

@@ -9,6 +9,7 @@
package com.facebook.react.flat;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.Nullable;
@@ -33,20 +34,37 @@ import com.facebook.react.uimanager.events.EventDispatcher;
*/
public class FlatUIImplementation extends UIImplementation {
public FlatUIImplementation(
private final StateBuilder mStateBuilder;
public static FlatUIImplementation createInstance(
ReactApplicationContext reactContext,
List<ViewManager> viewManagers) {
this(reactContext, new ViewManagerRegistry(viewManagers));
viewManagers = new ArrayList<ViewManager>(viewManagers);
viewManagers.add(new RCTViewManager());
viewManagers.add(new RCTTextManager());
viewManagers.add(new RCTRawTextManager());
viewManagers.add(new RCTVirtualTextManager());
ViewManagerRegistry viewManagerRegistry = new ViewManagerRegistry(viewManagers);
FlatNativeViewHierarchyManager nativeViewHierarchyManager = new FlatNativeViewHierarchyManager(
viewManagerRegistry);
FlatUIViewOperationQueue operationsQueue = new FlatUIViewOperationQueue(
reactContext,
nativeViewHierarchyManager);
return new FlatUIImplementation(viewManagerRegistry, operationsQueue);
}
private FlatUIImplementation(
ReactApplicationContext reactContext,
ViewManagerRegistry viewManagers) {
super(
viewManagers,
new UIViewOperationQueue(
reactContext,
new NativeViewHierarchyManager(viewManagers)));
ViewManagerRegistry viewManagers,
FlatUIViewOperationQueue operationsQueue) {
super(viewManagers, operationsQueue);
mStateBuilder = new StateBuilder(operationsQueue);
}
@Override
protected ReactShadowNode createRootShadowNode() {
return new FlatRootShadowNode();
}
@Override
@@ -122,16 +140,6 @@ public class FlatUIImplementation extends UIImplementation {
float absoluteX,
float absoluteY,
EventDispatcher eventDispatcher) {
markNodeLayoutSeen(cssNode);
}
private void markNodeLayoutSeen(CSSNode node) {
if (node.hasNewLayout()) {
node.markLayoutSeen();
}
for (int i = 0, childCount = node.getChildCount(); i != childCount; ++i) {
markNodeLayoutSeen(node.getChildAt(i));
}
mStateBuilder.applyUpdates((FlatRootShadowNode) cssNode);
}
}