feat:add Popover for Android step2
This commit is contained in:
		| @@ -64,6 +64,9 @@ public class DoricContext { | ||||
|     } | ||||
|  | ||||
|     public ViewNode targetViewNode(String id) { | ||||
|         if (id.equals(mRootNode.getId())) { | ||||
|             return mRootNode; | ||||
|         } | ||||
|         return mHeadNodes.get(id); | ||||
|     } | ||||
|  | ||||
|   | ||||
| @@ -23,6 +23,7 @@ import pub.doric.loader.IDoricJSLoader; | ||||
| import pub.doric.plugin.NavBarPlugin; | ||||
| import pub.doric.plugin.NavigatorPlugin; | ||||
| import pub.doric.plugin.NetworkPlugin; | ||||
| import pub.doric.plugin.PopoverPlugin; | ||||
| import pub.doric.plugin.ShaderPlugin; | ||||
| import pub.doric.plugin.StoragePlugin; | ||||
| import pub.doric.refresh.RefreshableNode; | ||||
| @@ -87,6 +88,7 @@ public class DoricRegistry { | ||||
|         this.registerNativePlugin(StoragePlugin.class); | ||||
|         this.registerNativePlugin(NavigatorPlugin.class); | ||||
|         this.registerNativePlugin(NavBarPlugin.class); | ||||
|         this.registerNativePlugin(PopoverPlugin.class); | ||||
|  | ||||
|         this.registerViewNode(RootNode.class); | ||||
|         this.registerViewNode(TextNode.class); | ||||
|   | ||||
| @@ -2,12 +2,14 @@ package pub.doric.plugin; | ||||
|  | ||||
| import com.github.pengfeizhou.jscore.JSDecoder; | ||||
| import com.github.pengfeizhou.jscore.JSObject; | ||||
| import com.github.pengfeizhou.jscore.JSValue; | ||||
| import com.github.pengfeizhou.jscore.JavaValue; | ||||
|  | ||||
| import pub.doric.DoricContext; | ||||
| import pub.doric.extension.bridge.DoricMethod; | ||||
| import pub.doric.extension.bridge.DoricPlugin; | ||||
| import pub.doric.extension.bridge.DoricPromise; | ||||
| import pub.doric.shader.ViewNode; | ||||
|  | ||||
| /** | ||||
|  * @Description: pub.doric.plugin | ||||
| @@ -22,11 +24,34 @@ public class PopoverPlugin extends DoricJavaPlugin { | ||||
|     } | ||||
|  | ||||
|     @DoricMethod | ||||
|     public void show(JSObject jsObject, DoricPromise promise) { | ||||
|  | ||||
|     public void show(JSDecoder decoder, DoricPromise promise) { | ||||
|         try { | ||||
|             JSObject jsObject = decoder.decode().asObject(); | ||||
|         } catch (Exception e) { | ||||
|             e.printStackTrace(); | ||||
|             promise.reject(new JavaValue(e.getLocalizedMessage())); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     @DoricMethod | ||||
|     public void dismiss(JSObject jsObject, DoricPromise promise) { | ||||
|     public void dismiss(JSDecoder decoder, DoricPromise promise) { | ||||
|         try { | ||||
|             JSObject jsObject = decoder.decode().asObject(); | ||||
|             JSValue value = jsObject.getProperty("id"); | ||||
|             if (value.isString()) { | ||||
|                 String viewId = value.asString().value(); | ||||
|                 ViewNode node = getDoricContext().targetViewNode(viewId); | ||||
|                 dismissViewNode(node); | ||||
|             } else { | ||||
|  | ||||
|             } | ||||
|         } catch (Exception e) { | ||||
|             e.printStackTrace(); | ||||
|             promise.reject(new JavaValue(e.getLocalizedMessage())); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     private void dismissViewNode(ViewNode node) { | ||||
|  | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -15,6 +15,8 @@ | ||||
|  */ | ||||
| package pub.doric.plugin; | ||||
|  | ||||
| import android.text.TextUtils; | ||||
|  | ||||
| import pub.doric.DoricContext; | ||||
| import pub.doric.async.AsyncResult; | ||||
| import pub.doric.extension.bridge.DoricMethod; | ||||
| @@ -55,9 +57,17 @@ public class ShaderPlugin extends DoricJavaPlugin { | ||||
|             getDoricContext().getDriver().asyncCall(new Callable<Object>() { | ||||
|                 @Override | ||||
|                 public Object call() throws Exception { | ||||
|                     String viewId = jsObject.getProperty("id").asString().value(); | ||||
|                     RootNode rootNode = getDoricContext().getRootNode(); | ||||
|                     rootNode.setId(jsObject.getProperty("id").asString().value()); | ||||
|                     rootNode.render(jsObject.getProperty("props").asObject()); | ||||
|                     if (TextUtils.isEmpty(rootNode.getId())) { | ||||
|                         rootNode.setId(viewId); | ||||
|                         rootNode.blend(jsObject.getProperty("props").asObject()); | ||||
|                     } else { | ||||
|                         ViewNode viewNode = getDoricContext().targetViewNode(viewId); | ||||
|                         if (viewNode != null) { | ||||
|                             viewNode.blend(jsObject.getProperty("props").asObject()); | ||||
|                         } | ||||
|                     } | ||||
|                     return null; | ||||
|                 } | ||||
|             }, ThreadMode.UI).setCallback(new AsyncResult.Callback<Object>() { | ||||
| @@ -93,7 +103,7 @@ public class ShaderPlugin extends DoricJavaPlugin { | ||||
|             ViewNode viewNode = null; | ||||
|             for (JSValue value : viewIds) { | ||||
|                 if (viewNode == null) { | ||||
|                     viewNode = getDoricContext().getRootNode(); | ||||
|                     viewNode = getDoricContext().targetViewNode(value.asString().value()); | ||||
|                 } else { | ||||
|                     if (value.isString() && viewNode instanceof SuperNode) { | ||||
|                         String viewId = value.asString().value(); | ||||
|   | ||||
| @@ -53,8 +53,4 @@ public class RootNode extends StackNode { | ||||
|     public ViewGroup.LayoutParams getLayoutParams() { | ||||
|         return mView.getLayoutParams(); | ||||
|     } | ||||
|  | ||||
|     public void render(JSObject props) { | ||||
|         blend(props); | ||||
|     } | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user