From ddd06971f113c666c775e03748a174f2a6be1949 Mon Sep 17 00:00:00 2001 From: John Knox Date: Thu, 28 Mar 2019 06:42:08 -0700 Subject: [PATCH] NativePlugins: Implement sidebar sections in java Summary: Changes sidebar from just a bucket of json, to be a list of SidebarSections. Currently implemented sections are Json, and Toolbar. Reviewed By: passy Differential Revision: D14620095 fbshipit-source-id: 6ba57f6f1ad954373c0bbb79570d779787e5d4db --- .../components/JsonSidebarSection.java | 22 +++++++++++++++++++ .../components/ToolbarSidebarSection.java | 22 +++++++++++++++++++ .../nativeplugins/table/TablePlugin.java | 1 + .../flipper/nativeplugins/table/TableRow.java | 15 ++++++++++++- 4 files changed, 59 insertions(+), 1 deletion(-) create mode 100644 android/src/main/java/com/facebook/flipper/nativeplugins/components/JsonSidebarSection.java create mode 100644 android/src/main/java/com/facebook/flipper/nativeplugins/components/ToolbarSidebarSection.java diff --git a/android/src/main/java/com/facebook/flipper/nativeplugins/components/JsonSidebarSection.java b/android/src/main/java/com/facebook/flipper/nativeplugins/components/JsonSidebarSection.java new file mode 100644 index 000000000..a6a6dcf3e --- /dev/null +++ b/android/src/main/java/com/facebook/flipper/nativeplugins/components/JsonSidebarSection.java @@ -0,0 +1,22 @@ +package com.facebook.flipper.nativeplugins.components; + +import com.facebook.flipper.core.FlipperObject; + +public class JsonSidebarSection implements SidebarSection { + private final String title; + private final FlipperObject content; + + public JsonSidebarSection(String title, FlipperObject content) { + this.title = title; + this.content = content; + } + + @Override + public FlipperObject serialize() { + return new FlipperObject.Builder() + .put("title", title) + .put("type", "json") + .put("content", content) + .build(); + } +} diff --git a/android/src/main/java/com/facebook/flipper/nativeplugins/components/ToolbarSidebarSection.java b/android/src/main/java/com/facebook/flipper/nativeplugins/components/ToolbarSidebarSection.java new file mode 100644 index 000000000..95bccedec --- /dev/null +++ b/android/src/main/java/com/facebook/flipper/nativeplugins/components/ToolbarSidebarSection.java @@ -0,0 +1,22 @@ +package com.facebook.flipper.nativeplugins.components; + +import com.facebook.flipper.core.FlipperArray; +import com.facebook.flipper.core.FlipperObject; + +public class ToolbarSidebarSection implements SidebarSection { + FlipperArray.Builder items = new FlipperArray.Builder(); + + public ToolbarSidebarSection addLink(String label, String destination) { + items.put( + new FlipperObject.Builder() + .put("type", "link") + .put("label", label) + .put("destination", destination)); + return this; + } + + @Override + public FlipperObject serialize() { + return new FlipperObject.Builder().put("type", "toolbar").put("items", items.build()).build(); + } +} diff --git a/android/src/main/java/com/facebook/flipper/nativeplugins/table/TablePlugin.java b/android/src/main/java/com/facebook/flipper/nativeplugins/table/TablePlugin.java index 99ccf44e6..df5ac334e 100644 --- a/android/src/main/java/com/facebook/flipper/nativeplugins/table/TablePlugin.java +++ b/android/src/main/java/com/facebook/flipper/nativeplugins/table/TablePlugin.java @@ -122,6 +122,7 @@ public abstract class TablePlugin extends NativePlugin { .build()); } }); + this.onConnected(); } protected abstract void onConnected(); diff --git a/android/src/main/java/com/facebook/flipper/nativeplugins/table/TableRow.java b/android/src/main/java/com/facebook/flipper/nativeplugins/table/TableRow.java index bea22630e..050f3fafc 100644 --- a/android/src/main/java/com/facebook/flipper/nativeplugins/table/TableRow.java +++ b/android/src/main/java/com/facebook/flipper/nativeplugins/table/TableRow.java @@ -35,6 +35,19 @@ public abstract class TableRow { } } + public static class BooleanValue implements Value { + private boolean val; + + public BooleanValue(boolean i) { + this.val = i; + } + + @Override + public FlipperObject serialize() { + return new FlipperObject.Builder().put("type", "boolean").put("value", val).build(); + } + } + public static class TimeValue implements Value { private long millis; @@ -71,7 +84,7 @@ public abstract class TableRow { this.sidebar = sidebar; } - FlipperObject serialize() { + final FlipperObject serialize() { FlipperObject.Builder columnsObject = new FlipperObject.Builder(); for (Map.Entry e : values.entrySet()) { columnsObject.put(e.getKey().id, e.getValue().serialize());