Flex Viewer 开发教程(3)Widget与WidgetTemplate

 

HelloWorldWidget中短短几行代码,却能实现如此cool的一个Widget,这要归功于WidgetTemplateWidgetTemplateIWidgetTemplate接口的默认实现,提供组成Widget的各个部分,包括标题栏、内容面板、控制按钮、工具按钮、Widget图标等等。WidgetWidgetTemplate作为UI容器,比如在HelloWorldWidget中,我们将显示信息的Label放在WidgetTemplate中。当然,也可以实现自定义WidgetTemplate,只要实现IWidgetTemplate接口即可。在Flex Viewer2.0以后,WidgetTemplate的外观通过皮肤(Skin)来定义,详见WidgetTemplateSkin代码。要想实现其它风格的WidgetTemplate,自定义一个WidgetTemplateSkin即可。下图是一个自定义WidgetTemplateSkin的效果。

 

WidgetTemplate定义了三个事件:打开(open)、最小化(minimized)、关闭(closed)。这三个事件分别在Widget打开、最小化和关闭的时候发生。这三个事件在某些特殊业务需求下能发挥很大的作用,比如某个Widget对应的一个GraphicsLayer(见ArcGIS API for Flex),当Widget打开时需要显示,当Widget最小化或者关闭时需要隐藏。此需求可以分别在三个事件的响应方法中实现。在HelloWidgetTemplateWidget中我们分别对三个事件进行响应,每个响应中显示一个弹出框来说明当前所发生的事件类型。窗口打开时的情形如下图所示:

 

 

HelloWidgetTemplateWidget代码如下:

<?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.*"

                 layout="absolute" width="400" height="300"

                 widgetConfigLoaded="init()">

    <fx:Script>

       <![CDATA[

           import mx.controls.Alert;

 

           [Bindable]

           private var helloContent:String;

 

           private function init():void{

              if (configXML){

                  helloContent=String(configXML.hellocontent);

              }

           }

 

           private function openHandler():void{

              Alert.show("HelloWidgetTemplateWidget open");

           }

 

           private function minimizedHandler():void{

              Alert.show("HelloWidgetTemplateWidget minimized");

           }

 

           private function closedHandler():void{

              Alert.show("HelloWidgetTemplateWidget closed");

           }

       ]]>

    </fx:Script>

    <viewer:WidgetTemplate open="openHandler()"

         minimized="minimizedHandler()" closed="closedHandler()"

         skinClass="widgets.FlexViewerInAction.HelloWidgetTemplate.

WidgetTemplateSkin">

       <s:HGroup width="100%" height="100%"

                horizontalAlign="center" verticalAlign="middle">

           <s:Label text="{helloContent}"/>

       </s:HGroup>

    </viewer:WidgetTemplate>

</viewer:BaseWidget>

    设置open事件的响应方法;

    设置minimized事件的响应方法;

    设置closed事件的响应方法;

    设置WidgetTemplate的皮肤;

    实现open事件的响应方法;

    实现minimized事件的响应方法;

    实现closed事件的响应方法。

 

 

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值