当前位置: 首页 > news >正文

ArcGIS Server Java ADF 案例教程 14

Command、Tool和Button

这一章我们将讨论的主要对象是Toolbar的孩子们和亲戚,涉及到两个孩子:Command和Tool,还有一个亲戚:Button。它们是基于ADF对WebGIS功能进行扩展的第一步,它可以让你在地图工具条中加入若干自定义的按钮来执行特定的功能。

在第三章中我们把Toolbar列为ADF常用组件之一,但是它和Map、TOC、Overview等其它组件是有区别的,我们打开“context-attributes.xml”配置文件可以发现,Map、TOC、Overview等组件都有相应的JavaBean定义,但是Toolbar没有——因为它不需要在服务器端绑定一个“WebToolbar”对象来记录Toolbar的状态信息。

下面让我们分别来看看这些组件的用法吧。

一 Command
Command在Toolbar中表现为一个按钮,当用户点击这个按钮以后,ADF将会立即执行一些操作。点击Command相当于直接给ADF一个命令,它并不改变当前地图的状态,比如当前地图正在进行漫游,点击Command以后再对地图进行操作时它还是漫游状态。

最典型的Command比如“地图全图”功能,当用户点击以后,当前地图会缩放到全图显示。下面的代码定义了这样一个Command。

从这段代码我们可以看到,Command的最关键的用法在于定义其子元素“f:actionListener”,它的“type”属性指向一个实现了某些功能的监听器类(注意,并不是对象)。这里的“ZoomFullExtentListener”是ADF自带的监听器;当然,这个类也可以是任何实现了ActionListener 接口的类,我们在后面的案例会实现我们自己的监听器类。

下面我们再来看两个稍微有点不同的Command定义。这两个Command的功能是提供两个按钮“后退”、“前进”,当点击“后退”时地图会返回到上一视图范围;当点击“前进”时地图会前进到后一视图范围。下面的代码定义了这样两个Command。

这里并没有使用监听器,而是使用了Command的action属性。这个属性将绑定一个服务器端对象的方法,当点击这个Command的时候,ADF会去调用这个服务器端方法。“后退”、“前进”的功能主要使用了ADF中的ExtentHistory 对象,它可以维护地图的视图范围历史记录。下面它是在“context-attributes.xml”中的定义:

当我们点击“后退”按钮的时候,ADF会调用这个服务器端“history”对象的doPrevious方法,因此地图会切换到上一视图;点击“前进”也是类似。另外,这两个Command的disabled属性分别绑定到“history”对象的canUndo和canRedo属性,这也很好理解,当地图已经是最新的视图的时候,用户当然应该不可以点击“前进”这个按钮,此时“history”的canRedo属性值为TRUE,因此“前进”这个按钮会呈现不可用的状态。

稍微总结一下,上面主要介绍了Command的两种定义用法,一种定义监听器类作为Command的子元素;另外一种绑定服务器端方法到Command的action属性。对于自定义Command来说,一般使用监听器会比较容易一些。

相关文章:

  • 扩展MongoDB C# Driver的QueryBuilder
  • ArcGIS Server Java ADF 案例教程 15
  • Floyd-Warshall 算法-- 最短路径(适合节点密集的图)
  • 英雄会创业论坛梁宁主持手记-初创业2人,天才少年2人,成功2人
  • Windows Azure系列-- 配置Azure Power Shell
  • 北京英雄会片段
  • Windows Azure 系列-- Azure Redis Cache的配置和使用
  • 2009 CSDN英雄会记事 - 珍惜时间、规划生活
  • LeetCode -- 删除链表中值为k的元素
  • ArcGIS Server Java ADF 案例教程 16
  • LeetCode --- Count And Say
  • 一个超火的网站“Omegle”
  • LeetCode 格雷码序列的生成
  • LeetCode -- 反转英文单词
  • XACT QA
  • (ckeditor+ckfinder用法)Jquery,js获取ckeditor值
  • 【React系列】如何构建React应用程序
  • 07.Android之多媒体问题
  • 2017年终总结、随想
  • Android系统模拟器绘制实现概述
  • Apache Spark Streaming 使用实例
  • axios 和 cookie 的那些事
  • httpie使用详解
  • Java IO学习笔记一
  • JavaScript实现分页效果
  • k8s 面向应用开发者的基础命令
  • Logstash 参考指南(目录)
  • mysql innodb 索引使用指南
  • October CMS - 快速入门 9 Images And Galleries
  • PaddlePaddle-GitHub的正确打开姿势
  • Python_网络编程
  • Python中eval与exec的使用及区别
  • React16时代,该用什么姿势写 React ?
  • React-redux的原理以及使用
  • Swoft 源码剖析 - 代码自动更新机制
  • 看图轻松理解数据结构与算法系列(基于数组的栈)
  • 马上搞懂 GeoJSON
  • 前端面试题总结
  • 想写好前端,先练好内功
  • 写给高年级小学生看的《Bash 指南》
  • 一加3T解锁OEM、刷入TWRP、第三方ROM以及ROOT
  • 阿里云IoT边缘计算助力企业零改造实现远程运维 ...
  • ​secrets --- 生成管理密码的安全随机数​
  • ​软考-高级-信息系统项目管理师教程 第四版【第19章-配置与变更管理-思维导图】​
  • #NOIP 2014#Day.2 T3 解方程
  • $.each()与$(selector).each()
  • (1)Android开发优化---------UI优化
  • (C++)八皇后问题
  • (pt可视化)利用torch的make_grid进行张量可视化
  • (zhuan) 一些RL的文献(及笔记)
  • (二)JAVA使用POI操作excel
  • (二)linux使用docker容器运行mysql
  • (二)构建dubbo分布式平台-平台功能导图
  • (附源码)计算机毕业设计SSM基于健身房管理系统
  • (九)c52学习之旅-定时器