JsJava发布2.2版本
【来源:JsJava官方中文博客】2008年10月12日,JsJava发布了2.2版本,该版本为实际应用的开发提供了更为深入的支持,不仅加入了页面分隔条组件框架,而且对DOM和事件的操作提供了更多的扩展,例如设置快捷键、获得按键二进码以及对应键盘文字,对字符串的操作也做了一定的扩充,并且根据开发人员的反馈以及JsJava团队自己测试,修改了一些隐藏性很好的Bug,这些都使得2.2版本的实用性进一步增强,成为了界面端开发的利器。
1、JsJava2.2实现了一个页面分隔条组件的框架,之所为是框架而不是组件,那是因为通过该框架,可以衍生出一系列的分隔条组件,而不是提供一个特定的分隔条组件,这样的好处就是能够满足不同的产品或者项目开发的要求,当然我们也计划推出一系列已经定制好的分隔条组件,这些组件计划在3.0版本提供,希望大家持续关注。
下面我们看一下这个页面分隔条组件的一个简单应用样例。
效果:
" border="0" />
这是一个复合的分隔条实现,上面是一个向下分隔条,下面是一个组合分隔条,这些分隔条可以自由拖动,代码如下:
<script src=”jsjava-core.js”></script>
<script src=”jsjava-comp.js”></script>
<script>
function loadSplit(){
var pane2=new HTMLSplitPane(HTMLSplitPane.VERTICAL_SPLIT,”updiv2″,”downdiv2″,”splitdiv2″);
pane2.show();
var pane3=new HTMLSplitPane(HTMLSplitPane.HORIZONTAL_SPLIT,”updiv3″,”downdiv3″,”splitdiv3″);
pane3.show();
var pane4=new HTMLSplitPane(HTMLSplitPane.VERTICAL_SPLIT,”updiv4″,”downdiv4″,”splitdiv4″);
pane4.show();
}
EventUtils.addDomEvent(window,”load”,loadSplit,false);
document.onmouseup=f;
function f(){status=new Date()};
</script>
<body leftmargin=”0″ topmargin=”0″>
<table width=”50%” align=”center” border=”1″ cellpadding=”0″ cellspacing=”0″>
<tr>
<td id=”updiv2″ height=”100″>
</td>
</tr>
<tr>
<td id=”splitdiv2″>
<div style=”height:3;width:100%;background-color:red”></div>
</td>
</tr>
<tr>
<td id=”downdiv2″ height=”100″>
</td>
</tr>
</table>
<br>
<table width=”50%” align=”center” border=”1″ cellpadding=”0″ cellspacing=”0″>
<tr>
<td id=”updiv3″>
<table width=”100%” height=”200″ align=”center” border=”1″ cellpadding=”0″ cellspacing=”0″>
<tr>
<td>
<div id=”updiv4″ style=”height:100″>
</div>
<div id=”splitdiv4″>
<div style=”height:3;width:100%;background-color:red”></div>
</div>
<div id=”downdiv4″ style=”height:100″>
</div>
</td>
</tr>
</table>
</td>
<td width=”6″ id=”splitdiv3″>
<div style=”height:220;width:6;background-color:red;s”></div>
</td>
<td id=”downdiv3″>
</td>
</tr>
</table>
</body>
</html>
2、JsJava2.2对页面选择组件框架HTMLSelector进行了功能扩展,在原来的基础之上,增加了选择条目的上移和下移功能,并且提供了两个HTMLSelector之间的互操作,例如将一个Selector中选中的条目增加到另一个Selector之中,而且可以设定遇到相同的条目是否强制覆盖。
下面举一个简单的例子来加以说明。
效果:
" border="0" />
相信这个样例是许多开发人员都比较熟悉的场景,因为无论是产品研发或是项目开发,有许多地方都要处理这种两个selector之间的操作,例如将左边选中的加到右边,将右面的selector的条目进行顺序调整(例如政府中的职级等都是要严格调整顺序的)。下面我们看一下代码:
<script src=”jsjava-core.js”></script>
<script src=”jsjava-comp.js”></script>
<script>
var hs1;
var hs2;
window.onload=function(){
hs1=new HTMLSelector(document.myForm.s1);
hs2=new HTMLSelector(document.myForm.s2);
}
function f1(){
hs1.addSelectedOptionsTo(hs2,true);
}
function f2(){
hs2.removeSelectedOptions();
}
function f3(){
hs2.removeAll();
}
function f4(){
hs2.moveUp();
}
function f5(){
hs2.moveDown();
}
</script>
<form name=”myForm”>
<table border=”0″>
<tr>
<td>
<select name=”s1″ multiple size=”10″>
<option value=’1′>username</option>
<option value=’2′>age</option>
<option value=’3′>birthday</option>
<option value=’5′>address</option>
<option value=’6′>blood</option>
<option value=’7′>hobby</option>
</select>
</td>
<td>
<input type=”button” value=”add” onclick=”f1()”><br>
<input type=”button” value=”remove” onclick=”f2()”><br>
<input type=”button” value=”clear” onclick=”f3()”><br>
<input type=”button” value=”move up” onclick=”f4()”><br>
<input type=”button” value=”move down” onclick=”f5()”>
</td>
<td>
<select name=”s2″ multiple size=”10″>
</select>
</td>
</tr>
</table>
3、JsJava2.2实现了页面中快捷键的定义,可以定义与Ctrl、Shift、Alt的组合键事件定义,虽然说大家都知道或者通过搜索Google等查处如何定义快捷键,但是我们更进异步提供了标准的工具类,这样做是为了统一接口,而且JsJava一直都考虑了跨浏览器的支持。
例如我们定义Ctrl+L快捷键执行我们的一个JS函数myfunc,可以这样方便的实现。
<script src=”jsjava-core.js”></script>
<script>
function myfunc(){
alert(”execute!”);
}
EventUtils.setCtrlMnemonic(document,”L”,”myfunc”,false);
</script>
最后一个参数很重要,因为在IE和Firefox有许多快捷键是内置的,最后一个参数就是决定是否快捷键事件继续传播。如果只想执行自己的逻辑,那么false就可以。当然有些快捷键是程序所不能屏蔽的,就好比Windows系统中的Ctrl+Shift+Del键一样,系统不会让你的逻辑执行的一样。
另外JaJava2.2对字符串的操作也提供了更进一步的支持,而且修改了Validator的一些验证逻辑,因为当初并没有意识到一些JS特殊的内在逻辑,例如在JS中空字符串被认为和数字零以及false是对等的,自然false和数字零也就是对等的,这样的内在逻辑使得在原来的版本中的某些判断在特殊场景下就变得不是非常准确,JsJava2.2版本针对此项进行了相应的判断修改,该版本已经将此完善。
JsJava的类库是非常强大的,实践证明,它可以做为产品研发或者项目开发过程中,界面编程的基础类库或者框架,这不仅仅是因为JsJava自身的良好设计,更为重要的是它的许多类和逻辑都是来自于一线开发人员的亲身实践,进而总结、提升、标准化而来的,最后再说一句:“中国人一定要自强!”