RCP Perspective中View的布局
Perspective用于把一组任务相关的视图组合在一起提供给用户,其中有个区域叫做EditorArea,这个区域用于放置编辑器。
如果你的perspective无需编辑器,则可以通过pageLayout.setEditorAreaVisible(false);把编辑区域隐藏起来。这样,你的workspace就不会有一块灰色的区域了。
如果想让两个view占据一个位置(如IPageLayout.RIGHT),在Perspective类中的createInitialLayout用如下方法:
IFolderLayout folder = layout.createFolder("messages", IPageLayout.RIGHT,
0.75f, IPageLayout.ID_EDITOR_AREA);
folder.addPlaceholder(View1.ID + ":*");
folder.addView(View1.ID);
folder.addPlaceholder(View2.ID + ":*");
folder.addView(View2.ID);
要使得一开始view不可见,只当用户点击触发showView的时候才显示,可以如下:folder.addPlaceholder(View1.ID + ":*");
不要加上folder.addView(View1.ID)就可以了。
如果要使得Editor消失不可见,可以在Perspective类中的createInitialLayout加上一句,如下:
layout.setEditorAreaVisible(false);
如果要使得某个view不能关闭,可以在Perspective类中的createInitialLayout加上一句,如下:
layout.getViewLayout(View.ID).setCloseable(false);
TableListViewer的可编辑cell
按照一般的套路:设置tableviewer的columnProperties;设置CellEditors;设置CellModitifier;
其中实现ICellModitifier接口比较繁琐点。
最后值得注意的是:需要把ListTableView设置为SWT.FULL_SELECTION。否则,就必须单击两次,第一次表示选中,第二次表示编辑。
2009年8月6日星期四
类功能的分配
开始写了个TclExecutor类。这个类可以执行tcl语句、tcl 文件。因为tcl interpreter是在这个类中创建的,interpreter是用一个线程在后台驱动的,所以我把TclExecutor当作资源类。是资源的东西,当然是要被管理的,否则就有资源泄漏的危险。所以,我就加入了结束tcl executor生命的方法disposeI(), disposeAll()。
因为要管理这些资源,又让TclExecutor的构造函数接受一个字符串当作executor的名字。以后就可以用名字来定位需要的executor。
为了定位,就需要一个管理类来管理这些executors。可以把这些管理executor的方法通通写到TclExecutor 中,也可以单独写一个manager类。
当代码紧凑不是优点而是缺点时,就已经没有理由不把这些功能分别安排到不同的类中了。
因为要管理这些资源,又让TclExecutor的构造函数接受一个字符串当作executor的名字。以后就可以用名字来定位需要的executor。
为了定位,就需要一个管理类来管理这些executors。可以把这些管理executor的方法通通写到TclExecutor 中,也可以单独写一个manager类。
当代码紧凑不是优点而是缺点时,就已经没有理由不把这些功能分别安排到不同的类中了。
2009年8月1日星期六
setup svnserver for windows
1)从http://subversion.tigris.org/ 下载svnserver.
2)创建一个reaml svnadmin create E:\svn_repository\dahui
3)在新的reaml下的conf目录中,配置密码及其它。
passwd文件:
[users]
admin = mypassword
svnserver.conf文件:
[general]
anon-access = read
auth-access = write
password-db = passwd
realm = goreader
2)创建一个reaml svnadmin create E:\svn_repository\dahui
3)在新的reaml下的conf目录中,配置密码及其它。
passwd文件:
[users]
admin = mypassword
svnserver.conf文件:
[general]
anon-access = read
auth-access = write
password-db = passwd
realm = goreader
2009年7月21日星期二
clone 和copy/paste
今天需要写一个copy/paste的功能。copy的动作执行以后得到都是data的reference。需要一个clone的动作。而以前的数据对象根本没有定义clone()。
可以总结一条了:当一个数据对象需要被copy/paste时,请准备好clone()方法。
对于糟糕的遗留系统的补丁,我真的觉得是浪费生命。平时觉得稀松平常的原理,在这种系统面前凸显价值,但是,这种价值此时也只能成为教训了。
今天还给诺西的同事show了一下如何用itcl写spirent testcenter的tcl。 如果当初他们写tcl之前好好建模,好好学习itcl,现在对新需求的应付应该是很轻松,很轻松了。
一个项目的成功也许是因为技术的失败而失败。但是,归根结底是因为管理的失败而失败,决策的失败而失败,用人的失败而失败。
技术上的保障只是项目成功保障链条上的最后一环,前面的环节更具决定性。
面向对象的方法是一种思考问题、解决问题的方法,不单纯的是一种语言。
可以总结一条了:当一个数据对象需要被copy/paste时,请准备好clone()方法。
对于糟糕的遗留系统的补丁,我真的觉得是浪费生命。平时觉得稀松平常的原理,在这种系统面前凸显价值,但是,这种价值此时也只能成为教训了。
今天还给诺西的同事show了一下如何用itcl写spirent testcenter的tcl。 如果当初他们写tcl之前好好建模,好好学习itcl,现在对新需求的应付应该是很轻松,很轻松了。
一个项目的成功也许是因为技术的失败而失败。但是,归根结底是因为管理的失败而失败,决策的失败而失败,用人的失败而失败。
技术上的保障只是项目成功保障链条上的最后一环,前面的环节更具决定性。
面向对象的方法是一种思考问题、解决问题的方法,不单纯的是一种语言。
2009年7月16日星期四
技术平台
断断续续地琢磨CLTF也好久了。今天再看Jelly,却发现有些需要的特性是Spring提供的,而在Jelly中不能获得。再一想,Jelly提供的最基本的功能,其实自己也可以比较容易的模拟出来。看来需要考虑使用一下Spring了。
Groovy其实也应该是很好的。毕竟是解释型的,改动一起来应该很容易。
最基本的技术选择,看上去简单,确实最具影响力的。
Groovy其实也应该是很好的。毕竟是解释型的,改动一起来应该很容易。
最基本的技术选择,看上去简单,确实最具影响力的。
2009年7月15日星期三
Object System for TCL
下面这篇文章很好地讲述了用TCL语法模拟一个简单的Object system。http://users.telenet.be/koen.vandamme1/papers/tcl_objects/tcl_objects.html
对文章中的“Object orientation is really just a way of thinking; it has more to do with design than with implementation.” 深有体会。
http://www.tcl.tk/about/oo.html
这是一篇关于object tcl情况的简单介绍。到tcl 8.6,TCL将内置一个object system了。
目前存在的用于tcl的object system有:incr tcl, Snit, XoTcl ...
incr TCL的HomePage: http://incrtcl.sourceforge.net/itcl/
对文章中的“Object orientation is really just a way of thinking; it has more to do with design than with implementation.” 深有体会。
http://www.tcl.tk/about/oo.html
这是一篇关于object tcl情况的简单介绍。到tcl 8.6,TCL将内置一个object system了。
目前存在的用于tcl的object system有:incr tcl, Snit, XoTcl ...
incr TCL的HomePage: http://incrtcl.sourceforge.net/itcl/
订阅:
博文 (Atom)