以下内容是学习"The Definitive Guide to SWT and JFace"(SWT/JFace权威指南)做的笔记
对于Window编程来说, 我们一般不会涉及到布局这个概念,因为基本上我们都是直接设置控件的大小, 位置等布局信息, 但是对于java来说就不一样了, 它涉及到跨平台的问题, 控件的位置和大小不是由它本身来控制的,因此我们不会看到控件有x, y, width, height等属性,而必须通过外面LayoutData和Layout来控制控件的位置和大小,这个是使用Java进行客户端编程必须转变的一个观念,当然这个也不是绝对,后面我们也会看到不使用布局的做法,但是我 ...
默认情况下, bstekIDE使用tomcat作为服务器, 下面我们讲解如何创建支持其他服务器的Dorado工程
支持多服务器前提条件
该功能是我们最近新推出的bstekIDE1.2(2007.12.17之后推出的插件)才支持的,而该插件的使用条件为Eclipse3.3+WTP2.0+JDK1.5,因此要使用该功能必须安装最新的bstekIDE1.2
该功能是基于WTP的Dynamic Web Project基础之上的, 因此下面的功能更多的地方是对WTP对多服务器的介绍,如果对这方面比较熟悉,可以略过
首先我们做的事情就是将已经安装的其他服务器与插件关联起来,其做法是在首选项中的Ser ...
把生活想象成一个在空中抛接五只球的游戏,这五只球分别被称为:工作、家庭、健康、朋友与精神。你要努力不让它们从空中掉下来,这可不是一件容易事。你很快就会发现,工作是一只皮球,如果它掉到地上,还会自己弹回来;但其它四只球——家庭、健康、朋友和精神是玻璃的,如果你让任何一个掉到地上,便会无可挽回地留下疤痕、裂痕、缺口甚至摔得粉碎。它们也将永远无法恢复其原状,你必须懂得这一点,并在生活中努力保持这种不断“抛接”与完美“旋转”的“平衡”艺术。
filter元素是用来指定当前的contribution是否可用, 它的用法跟visibility中的objectState类似, 比如只有选择的对象为只写才可用, 那么可以这样写:
xml 代码
<objectContribution ...>
<filter name="readOnly" value="false"/>
... ...
Object Action
这种Action是跟弹出的上下文菜单相关的, 因此它主要用在org.eclipse.ui.popupMenus扩展点下的objectContribution 节点中, 这里有几个属性需要做一下说明:
adaptable:true表示能将选中对象适配为objectClass中指定的类型
nameFilter:这个是用来指定哪种文件类型为当前contribution可用, 比如设置为*.java表示当前action只针对java文件
objectClass:指定contribution只用于那种对象类型
contribution的其他属性跟前面介绍的大同小异
...
以前做插件用到的ActionSet都只是依葫芦画瓢,没有真正理解它,现在开始好好学习学习,主要是看"Building Commercial-Quality Plug-ins"写的
Action的组成包括几个部分,一个是在plugin.xml中的声明,一个是在Eclipse UI中会用到的IAction实例化对象, 另一个是封装在IActionDelegate中的action执行代码. action的实例化是基于plugin.xml配置文件和IActionDelegate定义的,Eclipse可以先在界面上将action显示出来,直到用户点击了菜单或者工具条按钮才会去真正的加载插件,这也就是所 ...
错误标识(Error Marking)
Error Marking用来对编辑的文档根据一定的规则进行验证,比如对于XML文档来说,可能是XML DTD或者XML Schema.其实现跟内容大纲比较类似,首先在解析文档的时候对error加以标识.这里我们使用了SAX ErrorHandler来收集和定位所有的error, 接着在生成内容大纲的同时进行验证和error marking,这个工作在文档被加载和文档保存的时候都会进行.
在XMLEditor的validateAndMark()方法中完成对error marking的初始化:
java 代码
...
内容大纲
之所以要给编辑器提供内容大纲主要基于两点:一是让用户更好的总览文档全局,二个是能更方便的定位到指定的文档位置
如下图所示
内容大纲能做的三件事:
1.对结构性文档内容的解析,在XML编辑器中,我们需要显示节点的名称,属性名与值,但是不显示节点文档内容
2.能通过内容大纲进行更新,在内容大纲中直接对编辑器内容进行修改,这里我们不做实现
3.导航功能的支持,当在内容大纲中选中了一个节点,那么在编辑器中对应的部分应该立即高亮显示
首先我们要做的工作就是把内容大纲与编辑器关联起来,Eclipse提供了一个接口IContentOutlinePage, 但是我们最简 ...
最后一步就是实现各种功能
语法高亮
首先我们要实现的是语法高亮.如下图所示:
从本质上来说,语法高亮就是给分割后的Token指定相应的显示属性,在语法高亮的处理机制里面也需要用到Token, Scanner和Rule这些东西.通过复写SourceViewerConfiguration的getPresentationReconciler()方法来给指定的内容类型添加语法高亮的特性:
java 代码
public IPresentationReconciler getPresentationReconcile ...
JFace Text Editor是JFace里面一个功能强大,结构复杂而且非常重要的组件,要掌握它还需要花不少的功夫,下面我们将通过"Building an Eclipse Text Editor with JFace Text"的翻译来掌握它的用法
提到Text Editor,就不得不提到与之密切相关的SourceViewerConfiguration类,Text Editor的许多功能都是通过该类配置上去的,还有一个是IDocumentProvider接口,Text Editor所要编辑的文件对象就是通过该接口提供的.
Editor编辑的内容封装在IDocumen ...
List控件没有提供addDblClickListener方法,如果要处理双击事件,则需要这样处理:
java 代码
list.addListener(SWT.MouseDoubleClick, new Listener() {
public void handleEvent(Event event) {
System. ...
在eclipse3.3中,JavaFileEditorInput这个internal类已经被干掉了,所以导致在插件中使用了JavaFileEditorInput之后导致编译不通过,为了做到与eclipse3.3以前版本兼容(至少是3.2),需要进行一下变通
通过google,我们发现,虽然eclipse3.3干掉了JavaFileEditorInput类,但是添加了FileStoreEditorInput来处理打开位于workspace之外的文件.
所以解决办法出来了,首先要判断一下当前的eclipse版本:
java 代码
private sta ...
如果你想得到别人得不到的东西,你就得付出别人付不出的东西。如果别人休息你也休息,别人干活你也干活,别人怎么生活你也怎么生活,那么就只能别人得到什么,你也得到什么。
修饰工作
给facet在选择列表中添加图标
格式如下:
xml 代码
<extension point="org.eclipse.wst.common.project.facet.ui.images">
<image facet="{string}" path="{string}"/> (0 or more)
&nb ...
这个文章基本是"Building Project Facets"的中文版
在WTP中创建Dynamic Web Project工程的时候提供了Project Facets的功能,它让用户在创建web项目的时候,可以像搭积木一下给我们创建的project添加各种功能模块,下面我们通过一个例子来讲解一下WTP中的Project Facets的用法
通常我们给创建的工程可能添加以下元素:资源文件, Builder, Nature标识等, 我们知道Eclipse本身提供了一个Nature的功能,但是Facets跟Nature是有区别的, 给工程添加Nature是用来给Eclip ...
恰逢降温与降雨,将好好的一场欢乐节搞得不happy,虽然老赵也花了不少心思,结果由于地点太远,出行太不方便,呆了半天,拍了些pp,中午吃完饭立马跟回城的车先闪了
全体合影
mm合影
早到的骑友
发新衣服了
四轮的
冲刺点
赞助商GIANT
准备出发
小宇宙即将爆发
Waiting...
冲了
图片:
加油!加油!
&nb ...
听力可以说是我们中国学生英语学习的最大障碍.我问过很多顺利通过六级考试的本科生,听力部分能真正听懂的实在是寥寥无几.很多人都是根据听懂的只言片语,再利用推理,排除一些的考试策略选择答案的.(国内有些听力教材还提出了只看答案就能选出正确答案的系统 "理论".)这样做考试是有可能通过的,但实际掌握,运用英语的能力就只有自己知道了. 在很长一段时间内,我所选的听力资料将会是VOA的Special级别的慢速英语.这主要是出于两个目的:一是打好基本功;二是从慢速英语入手是科学的方法,是实现标准英语听 ...
周末去塔川,天气不错,红叶也漂亮,皖南的风景真的是没的说,有山有水,交通便利,是一个可以经常去玩的好地方,唯一让人非常崩溃的就是山非常多,要爬很多的大坡
天亮出发
沿河骑行
这里的黎明静悄悄
一起上路
一路好水
休息中
分享
来到桃花潭
遭遇修路,师傅很热心,帮扛车通过
过轮渡
黟县与众车友会师F ...
在前面我介绍了在首选项中来对bstekIDE进行扩展(dorado studio插件定制扩展应用两则 ),这个扩展只能应付一些简单的基于已有的,静态的定制(比如修改前缀,修改已有组件的属性来得到一个新的组件等等),如果要实现更复杂的定制(比如通过自定义dataset,在加载数据的地方加入一些其他的业务信息),则可以通过我们提供的扩展点(com.bstek.ide.core.viewRules)以插件的方式来进行定制扩展.
在dorado studio Swing版本中, ...
众所周知,Eclipse开发平台本身就是基于插件体系的,为了实现某个功能,我们可以在Eclipse的基础上以插件的方式添加我们需要的功能,bstekIDE就是这样实现的,同时我们还可以通过给插件增加扩展点,来给插件添加插件从而达到对已有插件进行扩展以及定制来适应我们的需要
为了提高bstekIDE的灵活性,我们给其增加了三个扩展点:com.bstek.ide.common.editor.generateNodeWizards, com.bstek ...
在Eclipse中一个Wizard=WizardDialog+Wizard+WizardPage,在这三者中,可以把前者看成后者的容器(container),看看这些类里面的代码就知道,Eclipse自己也是这么认为的,而我们最终看到的东西是WizardPage,在一个Wizard中虽然我们看到的是每一个WizardPage都是在点击next的时候一个一个显示的,但是他们的创建却是在Wizard初始化的时候一起被实例化的,因此这个给我们制造联动效果的WizardPage(也就是后一个WizardP ...
废话少说,上图先
金秋十月,今天是个好日子
今天是驴友"熊猫"和"石头"大喜的日子
婚礼前的彩排
婚礼前的小静
布置会场
大家齐动手,插花中
现场教学,插花高手出师
布置会场
调试设备
测试中
布置会场
&nbs ...
事前计划
开立器材清单:让你在出发前能详细的检查所有的器材是否都备齐了。以免遗漏重要的东西。
交通问题:请主办人帮你安排车辆,最好不要自己开车,以免因为停车问题而误事,像是跟随男方到女方家迎娶时,你可能要先新郎一步下车,一方面先看好环境,一方面还可以捕捉到新郎莅临的镜头。开车的人一定要熟悉路况路线,可不要因为脱队而迷路了。
了解程序:在婚事的前几天先和你的朋友沟通,了解整个婚事进行的程序,尤其是一些习俗或是宗教仪式,对于很多人来说是很重要的,可不要遗漏了,将这些记下来,或是在心中有个印象会比较好。 有些人是上午就去迎娶,中午在家休息,晚上请客,那么在下午前往饭店前,可以到附近的公园或 ...
- 浏览: 264760 次
- 性别:

- 来自: 杭州

- 详细资料
搜索本博客
我的相册
t61 thinkpad
共 143 张
共 143 张
最近加入圈子
链接
最新评论
-
使用Dorado框架开发必备参 ...
哈哈,顶,收藏了啊
-- by liufeikl2008 -
使用Dorado框架开发必备参 ...
谢谢了,收藏啦!!期望更新中
-- by liufeikl2008 -
在云南做项目的日子――20 ...
波xx,咪xx全家..
-- by Diablofrog -
在云南做项目的日子――20 ...
太漂亮了..无法用言语形容了.....
-- by xiaozmn -
jBPM中Timer的使用
引用楼主使用没有发现什么问题吗?为什么我在用的时候,线程启动成功后,倒是执行了, ...
-- by macrochen






评论排行榜