首 页文章中心下载中心繁體中文
设为首页
加入收藏
联系我们
您当前的位置:开源盛世-源代码下载网 -> 文章中心 -> GIS 专区 -> 文章内容 退出登录 用户管理
栏目导航
· VC++专区 · V B 专区
· GIS 专区 · PDA 专区
· 其他编程 · 网站开发类
· 数据库类 · 软件应用
· 网络安全 · 论文专区
· 综合资讯
热门文章
· Tab Control控件使用...
· 学生档案管理系统
· [图文] 排列组合公式
· UTF-8与GB2312之间的...
· DirectShow下载安装...
· Virtual PC 在PAE模...
· Windows2000终端服务...
· MapInfo上的GIS系统...
· Mapbasic参考手册索...
· MapX应用开发中文讲...
相关文章
· ArcGIS在菜单中调用...
· [图文] Server Java开发--B...
· ArcGIS Server Java...
· ArcGIS Server Java...
· ArcGIS Server Java...
· [图文] ArcGIS Server Java...
· ArcGIS Server Java...
· ArcGIS Server Java...
· ArcGIS Server Java...
· ArcGIS Server JAVA...
ArcGIS Server Java讲座----Task框架扩展之Taskinfo
作者:不详  来源:vscodes.com整理  发布时间:2007-6-29 15:26:52  发布人:Polaris

减小字体 增大字体

有了上个Task的基础, 我们来看其它的Task就驾轻就熟了。事实上,整个Task就是一个类,Task的Caption就是这个类的类名。里面的每一个Public方法都是Task浮动条上的一个按钮。那么参数怎么办呢?我们来加一个参数,并且加上一个它的get方法和set方法:

String parameter;

public String getParameter() {

return parameter;

}

public void setParameter(String parameter) {

this.parameter = parameter;

}

看看我们的task工具条发生了什么变化,Task工具条如下图所示:
Snap1.jpg (15.99 KB)
2007-1-8 15:30


可以看到,多了一个Parameter的输入框,前面还有一个Label,很有意思吧。那个DoAnything是我加的另外一个方法。Task框架的扩展已经很明显了吧:把相同的功能集合在一个类里面,这个类可以接受参数。例如我们可以利用这个task进行buffer操作,这个输入框就可以用来输入buffer的距离。

看到这里,大家肯定想到了另外的几个问题,比如:怎么把这些参数,按钮的名字修改成中文,上次给人培训,有人说:用中文的变量名?也是一个办法,但是考虑的JDK对中文变量的处理,似乎有问题。还有其它的问题包括怎么跟地图进行交互?怎么样设置客户端的动作(画多边形还是画Polyline)。我们当然有另外的方法。

使用Taksinfo建立对Task的描述,所有的Taskinfo都需要继承自SimpleTaskInfo类。大家可以打开doc看看SimpleTaskInfo的子类有那些。事实上,那些子类都是已经存在的task的taskinfo,如果你需要做汉化,继承这些类并且改写其中的几个方法即可。

我们来看看我们自己的类需要改写SimpleTaskInfo的哪几个方法:
TaskActionDescriptorModel[]getActionDescriptors();

此方法用来修改command按钮的描述;command的意思是不需要和地图进行交互而是直接在服务器端执行一个命令。

TaskParamDescriptorModel[]getParamDescriptors()

此方法修改参数的描述;

TaskToolDescriptorModel[]getToolDescriptors();

此方法修改工具的描述,工具的意思是需要和地图进行交互;

那么我们来写一个类,直接说明如何使用这几个方法,修改task的表现:

public TaskDescriptor getTaskDescriptor() {

TaskDescriptor td=new TaskDescriptor(JSTasks.class);

td.setDisplayName("我的任务");

return td;

}

此方法修改了task的标题,将此类作为一个Managed-bean添加到faces-config.xml文件中,并且在.jsp页面中修改task的使用如下:

<a:task mapId="Map0"  value="#{jsTask}" rendered="true" taskInfo="#{jsTaskInfo}"/>

修改后的Task如下所示:

Snap2.jpg (18.71 KB)
2007-1-8 15:33


可以看到
task的标题已经改变。下面我们来看修改Action的标题,代码如下:



public TaskActionDescriptorModel[]

getActionDescriptors() {

TaskActionDescriptorModel[] td=new TaskActionDescriptorModel[1];

TaskActionDescriptorModel actionDesc=new TaskActionDescriptor(JSTasks.class,"doSomething","查询");

td[0]=actionDesc;

return td;

}

需要说明的是TaskActionDescriptor(JSTasks.class,"doSomething","查询")构造函数的三个参数,第一个是task类,第二个是方法名,第三个是修改后的方法名;构造后放到数组中返回即可,如果有多个方法,可以如法炮制,都放到数组中。修改后的task有如下表现:

Snap3.jpg (10.14 KB)
2007-1-8 15:39


你会发现另外一个action没有了,别着急,因为我们还没有把它放到数组中,而原来默认的显示方式已经被我们修改了。

我们来修改doAnything工具,doAnything工具需要和地图交互,注意它的参数是MapEvent而不是TaskEvent,它完整的代码如下所示:

public void doAnything(MapEvent te){

//通过和地图交互进行放大

WebContext ctx=te.getWebContext();

WebGeometry geom=te.getWebGeometry().toMapGeometry(ctx.getWebMap());

WebExtent ext = (WebExtent)geom;

ctx.getWebMap().setCurrentExtent(ext);

ctx.refresh();

}


如果跟地图交互,就要涉及到客户端执行的操作,我们这里没有任何地方指定客户端的操作,这是在taskinfo里面指定的,我们来看下面的代码:

public TaskToolDescriptorModel[]

getToolDescriptors() {

TaskToolDescriptor [] toolDesAry=new

TaskToolDescriptor[1];

TaskToolDescriptor toolDesc=new

TaskToolDescriptor(JSTasks.class, "doAnything", "交互放大",ClientActions.MAP_RECTANGLE);

toolDesAry[0]=toolDesc;

return toolDesAry;

}

注意TaskToolDescriptor构造函数的4个参数,第一个是task类,第二个是原方法名,第三个是替换后的方法名,第四个是客户端的动作。构造完成后放到数组中,如果有多个tools,如法炮制即可。修改后的task如下所示:
Snap4.jpg (12.38 KB)
2007-1-8 15:39


有了上面的解释,我们来看参数的taskinfo代码,就非常容易了:

public TaskParamDescriptorModel[] getParamDescriptors() {

// TODO Auto-generated method stub

TaskParamDescriptorModel[] td=new TaskParamDescriptorModel[1];

TaskParamDescriptorModel paraDesc=new TaskParamDescriptor(SearchTask.class,"searchText","查询文本");

td[0]=paraDesc;

return td;

}

修改后的task如下所示:
Snap5.jpg (16.32 KB)
2007-1-8 15:39


Task
框架的基本构成就是这样了,祝大家使用愉快。下节将介绍TaskResult的使用。

End of《ArcGIS Server Java讲座----Task框架扩展之Taskinfo》

[] [返回上一页] [打 印] [收 藏]
 
∷相关“ArcGIS Server Java讲座----Task框架扩展之Taskinfo”文章评论∷
(评论内容只代表网友观点,与本站立场无关!) [更多评论...]
关于本站 - 网站帮助 - 广告合作 - 下载声明 - 友情连接 - 网站地图 网站目录 鄂ICP备06007162
开源盛世 版权所有Copyright © 2003-2005 VSCodes.Com. All Rights Reserved.