三 Task的渲染
Task的功能类中还有一个属性,IDE默认生成的名字是taskInfo,它对应这个另外一个Java类(如上面QueryTaskTaskInfo类)的对象。这个类主要控制Task的渲染,我们可以回想一下,如果光在Task的功能类中定义了Command是一个void类型的query方法,Task面板怎么会生成一个标签为“查询”的按钮出来的呢?答案就在taskInfo中。
打开上面生成的“QueryTaskTaskInfo.java”文件,我们可以看到以下的内容:
public class QueryTaskTaskInfo extends SimpleTaskInfo
{
public TaskDescriptor getTaskDescriptor()
{
TaskDescriptor descriptor = new TaskDescriptor(QueryTask.class, "queryTask", "查询任务");
return descriptor;
}
public TaskParamDescriptorModel[] getParamDescriptors()
{
TaskParamDescriptor[] descriptors = new TaskParamDescriptor[1];
descriptors[0] = new TaskParamDescriptor(QueryTask.class, "keyWord", "关键词", "getKeyWord", "setKeyWord");
return descriptors;
}
public TaskActionDescriptorModel[] getActionDescriptors()
{
TaskActionDescriptor[] descriptors = new TaskActionDescriptor[1];
descriptors[0] = new TaskActionDescriptor(QueryTask.class, "query", "查询");
return descriptors;
}
public TaskToolDescriptorModel[] getToolDescriptors()
{
TaskToolDescriptor[] descriptors = new TaskToolDescriptor[1];
descriptors[0] = new TaskToolDescriptor(QueryTask.class, "select", "选择", "EsriMapPolygon");
return descriptors;
}
}
简单的说,TaskInfo类中包含4个主要的属性:TaskDescriptor对象、TaskParamDescriptor[]数组、TaskActionDescriptor[]数组、TaskToolDescriptor[]数组。很好理解,TaskDescriptor对应整个Task的外观,比如Task的标题等;TaskParamDescriptor[]描述所有Parameter的外观;TaskActionDescriptor[]描述所有Command的外观;TaskToolDescriptor[]描述所有Tool的外观。一个Task中肯定包含不定数目的Parameter、Command或Tool,因此他们的描述需要数组来存放。
让我们通过TaskToolDescriptor来更详细地看一下,上面的代码设置“select”这个TaskTool表现为一个“选择”按钮,并在点击时通知Map执行“EsriMapPolygon”操作。现在我想让它渲染成一个自定义的图片按钮,并随鼠标移上或点击切换不同的图片,用下面的代码可以实现这样的功能:
descriptors[0].setRendererType(TaskToolDescriptor.IMAGE_RENDERER_TYPE);
descriptors[0].setDefaultImage("images/tasks/maptools/polygon.gif");
descriptors[0].setHoverImage("images/tasks/maptools/polygonU.gif");
descriptors[0].setSelectedImage("images/tasks/maptools/polygonD.gif");
descriptors[0].setDisabledImage("images/tasks/maptools/polygonX.gif");
现在我还想调整一下这些按钮、文本框的布局,怎么办?TaskInfo还可以指定Task各个子元素的布局,让我们在刚刚的QueryTaskTaskInfo类中再添加以下的代码:
public TaskLayout[] getTaskLayout()
{
TabularLayout[] descriptors = new TabularLayout[1];
descriptors[0] = new TabularLayout();
descriptors[0].addComponent(getParamDescriptors()[0], new TabularPosition(0, 0, 0, 0));
descriptors[0].addComponent(getActionDescriptors()[0], new TabularPosition(1, 0, 0, 0));
descriptors[0].addComponent(getToolDescriptors()[0], new TabularPosition(2, 0, 0, 0));
return descriptors;
}
经过上面的两次修改,我们会发现Task面板的Tool变成了使用图片渲染,并且布局方式更加我们的定义进行了变化,效果如图 17所示。
图 17 更改Tool渲染方式和布局后的Task面板
顺便回头再看看页面中Task的定义,其中有taskInfo属性,它对应的就是这个Task的TaskInfo对象:
taskInfo="#{queryTask.taskInfo}"
最后稍微总结一下吧,Task的外观主要通过TaskInfo来定义,ADF会根据Task所对应的TaskInfo,通过XSL样式文件渲染成DHTML代码,并输出到浏览器。到现在为止,一个Task面板包含什么内容、对应后台什么对象、怎么控制它们的表现,你应该都清楚了吧?
分享到:
相关推荐
《ArcGIS Server Java ADF案例教程》是一本深入探讨地理信息系统(GIS)技术的专业书籍,主要聚焦于Esri公司的ArcGIS Server平台与Java Application Development Framework(ADF)的结合应用。ArcGIS Server是Esri的...
【ArcGIS Server Java ADF案例教程】是一份深入讲解如何使用ArcGIS Server与Java Application Development Framework(ADF)进行地理信息系统开发的教程。本教程旨在帮助IT专业人士,特别是那些在地理信息科学领域...
### ArcGIS Server Java ADF案例教程:深入解析与实践指南 #### 1. 引言:探索ArcGIS Server Java ADF的世界 ArcGIS Server Java ADF(Application Development Framework)为地理信息系统(GIS)开发者提供了一个...
### ArcGIS Server Java ADF 相关知识点 #### 一、概述 在2004年的第六届ArcGIS暨ERDAS中国用户大会上,林青(Cherry Lin)介绍了如何通过Java ADF(Application Development Framework)来开发和部署ArcGIS ...
### ArcGIS Server Java ADF 案例教程 #### 前言与背景介绍 《ArcGIS Server Java ADF 案例教程》是一本针对地理信息系统(GIS)开发人员的专业指南,旨在帮助读者深入了解如何使用Java应用程序开发框架(ADF)...
ArcGIS Server Java ADF案例教程提供了一个非常有价值的资源,对于那些希望深入学习和使用ArcGIS Server进行WebGIS开发的Java开发者来说,了解ADF选择JSF框架的原因以及JSF框架的特性是非常重要的。虽然参考资料有限...
接下来,《ArcGIS_Server_Java_ADF_案例教程》聚焦于使用Java Application Development Framework (ADF)开发GIS应用。ADF是Esri提供的一个基于Java的开发工具包,用于构建桌面和Web GIS应用。此教程可能包括: 1. ...
在Java环境下使用ArcGIS Server,我们可以利用ArcGIS Server for Java ADF(ArcObjects for Java Application Development Framework)进行开发,这是一种专门为构建GIS应用程序而设计的Java库。ADF提供了丰富的API...
《ArcGIS_Server_Java_ADF_案例教程》是针对地理信息系统开发的专业教程,主要关注如何使用ArcGIS Server的Java API(ADF,ArcGIS Data Framework)进行应用开发。ArcGIS Server是一款强大的地理信息处理平台,它...
ArcGIS Server 9.2相关的Web ADF Java Platform应用程序都是基于JavaServer Faces (JSF)框架构建的,用于创建互动式、地图驱动的Web应用程序。JSF是一个标准的Java EE组件模型,它允许开发者构建用户界面并与后端...
【ArcGIS Server Java 讲座】是一系列关于使用Java技术进行ArcGIS Server开发的文档,主要针对的是ArcGIS Server 9.2版本。这个讲座涵盖了多个主题,旨在帮助开发者理解和应用Java Server Faces (JSF) 技术以及...
这个“ArcGIS Server Java ADF 开发培训”教程将引导你逐步深入GISServer ADF Java的世界,通过理论学习和实践操作,提升你的GIS开发技能,使你能更好地利用Esri的平台构建高效、稳定的GIS应用程序。在学习过程中,...
ADF全称是Arcgis java Web Application Developer FrameWork,是为了开发web应用而生的一套开发框架,开发人员可以在ADF的基础上相对容易的开发出WEBGIS应用。
### ArcGIS Server 10 for Java 创建 Web ADF 实例详解 #### 一、概述 在当前电力行业的配网自动化项目中,为了更好地展现电网结构、进行停电模拟以及实时显示电网设备状态等功能,通常需要集成地理信息系统(GIS)...
在本文中,我们将探讨如何在MyEclipse中使用ArcGIS Server 10 for Java创建一个Web ADF实例。ArcGIS Server是一种强大的地理信息系统(GIS)平台,它允许开发者构建地图服务和应用程序,以便在Web环境下提供地理信息...
标题与描述均提到了“定制Java Arcgis server 9.2 Web Tasks WebADF”,这表明内容将围绕在ArcGIS Server 9.2环境下,利用Java技术进行WebADF(Web Application Development Framework)的自定义Web任务开发展开。...
### 构建基于ArcGIS Server Web ADF与Ajax的Java应用程序 #### 一、课程概述与目标 在本次由ESRI Developer Summit 2008提供的培训课程中,主题为“构建基于ArcGIS Server Web ADF与Ajax的Java应用程序”,旨在...
《ArcGis_Server10_for_java创建Web_Adf实例.doc》可能是关于如何使用ArcGIS Server 10与Java Web ADF创建实例的详细教程。这份文档可能涵盖了如下内容: 1. **环境配置**: 如Java SDK、ArcGIS Server SDK for Java...
本篇文章将基于提供的文件信息,深入解析如何使用Java进行ArcGIS Server 9.2 Web应用开发的关键知识点,包括工作坊资料获取、演示文稿大纲、Web ADF任务框架及其配置,以及定制任务的实现。 ### 获取工作坊资料 ...