AJAX框架 jMaki (二) – 鱼眼(FishEye)实例

news/2024/8/25 17:16:48

下面给出一个鱼眼(FishEye)的例子。FishEye的效果如同放大镜,当鼠标在图像上滑动的时候,图像会放大或者缩小。


(一netBeans中实现鱼眼(FishEye)的步骤:


1. NetBeans 菜单”文件”-”新建项目”.在出现的”新建项目”窗口中,”类别”选择”Web”, 项目选择”Web应用程序”.点击”下一步”

2. 在”新建项目窗口中”, “项目名称”中输入”jMakiFishEye”项目. 点击”下一步”


3. 在”框架”窗口中,选择”jMaki Ajax Framework” . 点击”完成”.



4. NetBeans 中出现 jMakiFishEye 项目的同时,也会出现在”组件面板”中出现jMakiWidgets, 包括Dojo, Flickr, Google, Yahoo等中的一些Widgets. 如果没有出现”组件面板”, 选择菜单”窗口”-> “组件面板”.


  1. netBeans, 用鼠标直接把”jMaki Dojo”下的Fish Eye List拖到 jMakiFishEye 项目中的index.jsp文件中. 这个例子中放在

    中.


6. 托拽的结果是在index.jsp中加入了一些代码, 一行是导入了jMakitaglib, 一个是创建了FishEye widget实例.

  1.  

<%@ taglib prefix="a" uri="http://java.sun.com/jmaki" %>

......


args="{items:[

{iconSrc:'https://ajax.dev.java.net/images/blog_murray.jpg',caption:'You are here!'},

{iconSrc:'https://ajax.dev.java.net/images/chinnici.jpg',caption:'test3'},

{iconSrc:'https://ajax.dev.java.net/images/JayashriVisvanathan.jpg',caption:'test4'}

]}"/>



7. 这个例子中缺省配置的几幅图像是参与开发jMaki的工程师头像,下面我要把这几幅图像替换为duke. jMakiFishEye项目的web目录下创建images 目录,拷贝几幅duke图像,修改index.jspFishEye的代码如下:

args="{items:[

{iconSrc:'images/Bike.jpg',caption:'Bike',index:1},

{iconSrc:'images/Snooze.jpg',caption:'Snooze',index:2},

{iconSrc:'images/Surfing.jpg',caption:'Surfing',index:3},

{iconSrc:'images/Thinking.jpg',caption:'Thinking',index:4},

{iconSrc:'images/Toolbelt.jpg',caption:'Toolbelt',index:5}

]}"/>







8. 运行结果如下:




9. 这个FishEye的效果是水平方向的,如果想改成垂直方向, 打开jMakiFishEye下的index.jsp, 鼠标右键点击FishEyeWidget代码段, 可以看到”jMaki”菜单, 是用来对jMakiWidget做外观配置的窗口. 出现的”dojo.fisheye Customizer”窗口中,修改”orientation”中的值为”Vertical”.




10. 再运行jMakiFishEye的结果如下:




JMakiFishEye的实现也包括两部分.客户端和服务器端.

客户端内容在 jMakiFishEye 项目的Web/Resource/dojo/fisheye, 包括四个文件

  • images/dojo-fisheye.jpg: 缺省图像背景

  • component.htm: 模板

  • component.js:这个JavaScritp 文件定义了Fisheye的操作

  • widget.json: 这个文件提供了访问Fisheye的接口


服务器端是两个jar文件, 主要是实现了前面介绍的jMaki Server RuntimeXmlHttpProxy

  • ajax-wrapper-comp.jar:

  • rss.jar:


下图列出了fisheye Widget有关的文件





(二)jMaki中的”发布/订阅机制”(publish/subscribe machnism)介绍


其它应用程序如果要使用jMaki中的 Widget, 需要遵循jMaki的”发布/订阅机制”(publich/subscribe machnism). 下面给出一个应用FishEye的实例, 来说明如何实现”发布/订阅机制”(publich/subscribe machnism)这个FishEye实例会在点击FishEye图标时 在页面的某个位置显示当前点击的图像已经图像的详细信息


第一步, Widget 需要发布(publish)一个主题(Topic)


按照需求, 应用程序需要知道FishEye中哪一个图标被选中, 因此需要修改component.js中和Click有关的代码.黑体部分代码是在图标的onClick函数中发布(publish)了这个topic, (“/dojo/fisheye”).参数this指当前的图标,包含所有的图标的相关信息,比如src, caption, index等等.

// programtically add FisheyeListItem children to the widget

var counter = 0;

while (true) {

var i = items[counter++];

if (i == null) break;

var icon = dojo.widget.createWidget("FisheyeListItem", i);



icon.onClick = function () {

//jmaki.publish(topic, {target:this, wargs:wargs});

jmaki.publish(topic, this);

}

fishEye.addChild(icon);

}



第二步, 应用程序订阅(subscribe)这个主题


Fisheye缺省的点击动作会弹出一个 JavaScript窗口,内容为"glue.js : fisheye event",现在我们不需要这个弹出窗口,可以在 glue.js中找到handleFisheye代码, 注释掉”alert”部分

handleFisheye : function(args) {

//alert("glue.js : fisheye event");

},


应用程序订阅(subscribe)主题需要做两件事:

  • 调用jmaki.subscribe方法,参数为topic名称和listener方法

  • 完成listener方法,用以响应onClick事件(publish这个topic的事件)


修改index.jsp, 加入两段代码.一段是在左侧栏中加入"

",用来显示点击 FishEye中图标的结果(黑体字是新加入部分)



......


一段是JavaScript 代码,调用subscribe方法和完成listener方法. 这段Script代码要放在Fisheye Widget代码之后.

Main Content Area

args="{items:[

{iconSrc:'images/Bike.jpg',caption:'Bike',index:1},

{iconSrc:'images/Snooze.jpg',caption:'Snooze',index:2},

{iconSrc:'images/Surfing.jpg',caption:'Surfing',index:3},

{iconSrc:'images/Thinking.jpg',caption:'Thinking',index:4},

{iconSrc:'images/Toolbelt.jpg',caption:'Toolbelt',index:5}

]}"/>

<script type="text/javascript">

function fisheyeListener(item) {

var targetDiv = document.getElementById("image_detail");

var responseText = "
"

+ "Caption: "+ item.caption + "
"

+ "Image index: " + item.index + "";

targetDiv.innerHTML = responseText;

}

jmaki.subscribe("/dojo/fisheye", fisheyeListener);

</script>



运行结果如下, 点击FishEye中的某个图标后,在左侧栏中显示对应图像以及图像的详细信息:




 



http://www.niftyadmin.cn/n/3654476.html

相关文章

人力资源社会保障部、中国人民银行关于社会保障卡加载金融功能的通知

各省、自治区、直辖市人力资源社会保障厅&#xff08;局&#xff09;&#xff0c;福建省公务员局&#xff0c;新疆生产建设兵团人事局、劳动保障局&#xff1b;中国人民银行 上海总部&#xff0c;各 分行、营业管理部&#xff0c;各省会&#xff08;首府&#xff09;城市中心支…

AJAX框架 jMaki (三) – 用日历(Calendar)和表格(Table)实现的Blog首页

下面使用jMaki中的Yahoo Calendar和Yahoo DataTable 来建立一个迷你Blog首页。这个小程序可以在选择日历的某个日期后&#xff0c;Data Table中只列出这个日期所发表的文章。jMaki中的Yahoo Calendar和Yahoo DataTable 都是Yahoo UI Library 中的控间, jMaki的作用只是在现有的…

深圳首推金融IC卡 实现小额“闪付”

近日获悉&#xff0c;深圳作为最早推行“金融IC卡”的城市&#xff0c;金融IC卡的受理市场的建设也全面提速。在人行深圳市中心支行牵头启动的市场建设下&#xff0c;目前深圳已有超过1.3万家商户、2.1万台POS机支持金融IC的非接触式的“银联闪付”功能&#xff0c;市民在超市买…

人社部:社保卡号将与身份证号统一 可随时充值随地交纳

人民网北京8月23日电&#xff08;记者曾高飞&#xff09;曾经困扰全国人民多年的跨地区转移就业社保接续障碍有望得到解决。记者今日从人力资源和社会保障部&#xff08;下称人社部&#xff09;办公厅获悉&#xff0c;人社部正在紧锣密鼓地推行全国社保卡统一工作&#xff0c;居…

金融IC卡全“芯”起航

中国人民银行于3月15日发布了《中国人民银行关于推进金融IC卡应用工作的意见》&#xff0c;决定在全国范围内正式启动银行卡芯片迁移工作&#xff0c;“十二五”期间将全面推进金融IC卡应用&#xff0c;以促进中国银行卡的产业升级和可持续发展。随着《意见》的发布&#xff0c…

浙江湖州市公交IC卡已实现九城联用

8月22日&#xff0c;从湖州市公路运输管理处获悉&#xff0c;该市公交IC卡近期实现九城市互通联用。也就是说&#xff0c;湖州市民手上的开通城际通功能的公交IC卡&#xff0c;在湖州、宁波、绍兴、台州、嘉兴、铁岭、临沂、淄博、宜兴九城市的公交车上都可刷卡消费。为让百姓乘…

山西省将率先实现全覆盖社保“一卡通”

23日从山西省人力资源和社会保障厅获悉&#xff0c;根据近日人力资源和社会保障部与山西省签署的《共同推进山西省国家资源型经济转型综合配套改革试验区人力资源和社会保障事业发展与改革备忘录》&#xff0c;山西省将率先实现社会保险制度全覆盖和社会保障“一卡通”。主要内…

最新数据显示所有银联POS机均可刷IC卡

中国银联8月19日公布最新数据显示&#xff0c;截至6月底&#xff0c;金融IC卡累计发行接近1700万张&#xff0c;可在银联全部直联POS机&#xff08;商户刷卡终端&#xff09;上使用&#xff0c;方便老百姓日常生活支付。金融IC卡以芯片为介质&#xff0c;因其安全性更高、功能应…