ArcGIS Server Java ADF 案例教程 23

三 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面板包含什么内容、对应后台什么对象、怎么控制它们的表现,你应该都清楚了吧?

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值