ARCGIS viewer入门(2)两个不同的widget交互
来源:互联网 发布:linux chgrp命令 编辑:程序博客网 时间:2024/05/21 20:24
实现不同widget之间的互相调用,特别注意,widgetB是运行先得,而widgetA也必须是该APP种的一个widget
如上图种,print插件就被植入了widgetA的代码,从而被my first widget控制:
import com.esri.viewer.AppEvent;
import com.esri.viewer.ViewerContainer;
import com.esri.viewer.WidgetStates;
(1)my first widget
--------------------------------------
<?xml version="1.0" encoding="utf-8"?>
<viewer:BaseWidget xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
xmlns:viewer="com.esri.viewer.*">
<fx:Script>
<![CDATA[
import com.esri.viewer.AppEvent;
import com.esri.viewer.ViewerContainer;
private function controlWidgetA(action:String):void{
ViewerContainer.dispatchEvent(new AppEvent(AppEvent.SEND_MESSAGE_TO_ANOTHER_WIDGET, action));
}
]]>
</fx:Script>
<viewer:WidgetTemplate width="500" height="200">
<s:HGroup width="100%">
<s:Button label="Open HelloWidgetA"
click="controlWidgetA('open')"/>
<s:Button label="Minimize HelloWidgetA"
click="controlWidgetA('minimize')"/>
<s:Button label="Close HelloWidgetA"
click="controlWidgetA('close')"/>
</s:HGroup>
</viewer:WidgetTemplate>
</viewer:BaseWidget>
(2)widgetA代码。该代码需要植入print中
<?xml version="1.0" encoding="utf-8"?>
<viewer:BaseWidget xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
xmlns:viewer="com.esri.viewer.*"
width="400" height="300"
creationComplete="init()">
<fx:Script>
<![CDATA[
import com.esri.viewer.AppEvent;
import com.esri.viewer.ViewerContainer;
import com.esri.viewer.WidgetStates;
private function init():void{
ViewerContainer.addEventListener(
AppEvent.SEND_MESSAGE_TO_ANOTHER_WIDGET, handler);
}
private function handler(event:AppEvent):void{
var action:String=String(event.data);
switch (action){
case "open":
//this.setState(WidgetStates.WIDGET_OPENED);
ViewerContainer.dispatchEvent(new AppEvent(AppEvent.WIDGET_RUN, this.widgetId));
break;
case "minimize":
this.setState(WidgetStates.WIDGET_MINIMIZED);
break;
case "close":
this.setState(WidgetStates.WIDGET_CLOSED);
break;
}
}
]]>
</fx:Script>
<viewer:WidgetTemplate id="wTemplate"/>
</viewer:BaseWidget>
(3)特别注意,需要
实现按钮的单击事件响应,派发SEND_MESSAGE_TO_ANOTHER_WIDGET事件。
AppEvent中新添加的事件如下所示:
// add
/**
* event used to test communication between widgets
*/
public static const SEND_MESSAGE_TO_ANOTHER_WIDGET:String = "sendMessageToAnotherWidget";
// end
(4)需要注意的是,HelloWidgetWidgetA只有在已经打开(通过菜单中的图标)的情况下,才能响应HelloWidgetWidgetB派发的事件,与HelloWidgetWidgetB进行交互。因为Flex Viewer中的Widget采用的是Lazy-Load方式,即只有在第一次打开时才加载。那么,在Widget第一次打开的时候,如何知道在这之前发生的事情呢?找DataManager帮忙!下一节我们看一下Flex Viewer中的数据共享机制。
- ARCGIS viewer入门(2)两个不同的widget交互
- ARCGIS viewer入门(3) Widget共享数据
- ARCGIS viewer入门(1)
- Flex Viewer 开发教程(5)Widget与Widget交互
- Flex Viewer 开发教程(5)Widget与Widget交互
- Flex Viewer 开发教程(5)Widget与Widget交互
- ArcGIS Viewer for Flex(Widget的容器标签) .(转帖)
- ArcGIS Viewer for Flex(Widget的容器标签)
- ArcGIS Viewer for Flex(Widget部件标签) .(转帖)
- ArcGIS Viewer for Flex(Widget部件标签)
- ArcGIS Viewer for Flex(Widget部件标签) .
- ARCGIS viewer入门(8)flex viewer定制
- ARCGIS viewer入门(9)flex viewer定制弹出窗口
- Flex Viewer 开发教程(4)Widget与Map交互
- Flex Viewer 开发教程(7)Widget与服务器交互
- Flex Viewer 开发教程(4)Widget与Map交互
- Flex Viewer 开发教程(4)Widget与Map交互
- Flex Viewer 开发教程(7)Widget与服务器交互
- 今天2012-12-3开始写博客,人生的轨迹
- 中兴MTK mmi面试题(其中的部分)
- x264list操作代码研究
- Java笔记
- 11月份月总
- ARCGIS viewer入门(2)两个不同的widget交互
- 获取设备平台 platform
- Permission Denial: starting Intent 解决办法
- 对面试题“输入n,求一个nXn矩阵,规定矩阵沿45度递增,形成一个zigzag数组(JPEG编码里取像素数据的排列顺序),请问如何用C++实现?”的理解
- TCP/IP 详解翻译中的疑问 .
- Android应用开发揭秘的第22,23个程序5_17_frame,5_18_framexml修改版和高仿版的源码注释
- [C++]数据结构:有序链表SortedChain的基本实现与操作
- Linux下C语言实现字符串子串替换
- C和指针