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

来源:互联网 发布:java socket sleep 编辑:程序博客网 时间:2024/06/05 07:04

下面给出一个鱼眼(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实例.

     

<%@ 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}

]}"/>



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




 

Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1783756


原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 娃脖子有点烂了怎么办 7月省内流量套餐怎么办 qq手游授权失败怎么办 钉钉不够6人创建怎么办 钉钉 不够6个人怎么办 plsql删错了表怎么办 吊兰长出来的茎怎么办 防水台鞋跟太高怎么办 证件照头部比例过大怎么办 特岗照片传错了怎么办 打印报名表照片不显示怎么办 刚买的床有味道怎么办 雨刷器角度太小怎么办 四个月宝宝闹觉怎么办 怀孕六个月睡不好觉怎么办? 婴儿睡不好觉总是吵闹怎么办 婴儿鼻塞睡不好觉怎么办 玩英雄联盟鼠标变亮白怎么办 练芭蕾脚受伤了怎么办 高三了英语30分怎么办 要上高中了英语不好怎么办 高二了数学不好怎么办 高二函数不好怎么办啊 输乳怎么办腺病有什么妇症状 屁股上坐的发黑怎么办 车屁股撞了个洞怎么办 腰压迫的腿疼怎么办 肩胛提肌固定不住怎么办 胳膊粗后背肉多怎么办 2岁儿童 肋骨边缘外翻怎么办 5岁宝宝盆骨前倾怎么办 脖子弯了像驼背怎么办 都40周了还没生怎么办 股骨头坏死骨盆歪了怎么办 二胎侧切伤口疼怎么办 小月子盆骨酸痛怎么办 盆骨一边大一边小怎么办 快生了宫颈管长怎么办 想顺产 宫颈管长怎么办 腰和跨一样宽怎么办 脚后跟骨折手术后小腿变细怎么办