1. following the website(http://www.eclipse.org/swt/tools.php) instructions:1)Extract the zip into the eclipse/plugins/ folder2)Extract the .options file from the eclipse/plugins/org.eclipse.ui_.jar/ archive to the eclipse/ folder.2. following the instructions from Eclipse newsgroup:Open your launch ...
目前是一个IM系统,需要在网络连接断开的时候,关掉主程序,回到登陆对话框,并且在网络连接恢复的时候,可以自动登陆,类似于MSN和Skype的功能。
我们底层用的是SMACk,在3.0的版本中,已经实现了自动登陆的功能,但现在的问题出现在网络故障的那一步,我们所作的是调用 PlatformUI.getWorkbench().restart()方法,实现重启,并且使用IPreferenceStore来保存一些基本类型的数据信息。可是这样一来,内存中的所有对象就会被清理掉,新创建的ConnectionListener就无法监听到XMPPConnection的变化,于是UI就无法收到消息,从而不能自 ...
我们知道,在SWT中,有两条关于Dispose的法则:
1。如果你创建了它,那么就dispose它。你应当释放那些使用构造器创建了的SWT对象。
2。dispose一个父组件会dispose掉所有的子组件。
由 此可以得知,由于Color,Cursor,Font,GC,Image,Printer,Region都是在DeviceData之上创建,所以如果使 用构造器的话,就必须要手工把这些资源dispose掉,而如果使用Font font = control.getFont ()这样的方式的话,就不可以调用font.dispose()方法,因为它不是被我们创建的。
还可以 ...
通常我们打包Product的时候,一般都是通过Product的export操作来进行的,但这样的做法,则限制了Continous Integration的自动化执行,那么,应该如何编写自动化构建脚本呢?
一、首先,让我们看一下Eclipse官方的解决方案:
http://help.eclipse.org/help32/index.jsp?topic=/org.eclipse.pde.doc.user/guide/tasks/pde_product_build.htm
从 文中我们可以看出,PDE已经为从product文件构建RCP应用做好了一切准备,我们所需要做的,就是搭建目 ...
在RCP产品中实现国际化,一般是两种方式。
方式一:
public class Messages {
private static final String BUNDLE_NAME = "test.messages";
private static final ResourceB ...
为了给大家提供方便,我在这篇帖子里对常用的RCP参考资料作了一下简单的总结,有不当之处,还望多多批评指正。
1。入门
对于入门的RCP开发人员来讲,首先应当要对RCP有一个全局性的认识,reload_cn有一篇开源文档《RCP程序设计》,下载地址为:http://www.eclipseworld.org/bbs/read.php?tid=4457,这篇文档涵盖了RCP开发相关的许多知识点,是引导新手入门的好材料。
此外,对于RCP开发应用而言,最经典的书籍还当数《Eclipse Rich Client Platform: Designing, Coding, and Pack ...
在RCP中要在非UI线程中执行UI线程的操作,最简单的方式就是display.syncExec或者display.asyncExec,如果UI线程所需的时间较长的话,则应该使用display.asyncExec
在执行异步线程的时候,我们一般应当继承Job或者UIJob类:UIJob是在UI线程中运行的,可以直接访问窗体组件。Job是在非UI线程中运行,如果在里面想访问窗体组件,需要通过Display.asynExec()或者synExec方式来执行。UIJob要尽量的短,不要过多的占用UI线程的时间。
在我现在的系统中,每当UI需要和Server交互的时候,都需要检测Server ...
ViewerFilter主要用于根据条件来显示或隐藏Tree或Table中的数据,它的实现就不赘述了,在程序中用了一个下拉框来做触发条件:
filterCombo.addSelectionListener(new SelectionAdapter() {
@Override
& ...
我们知道,Title是在ApplicationWorkbenchWindowAdvisor里面通过
public void preWindowOpen() {
IWorkbenchWindowConfigurer configurer = getWindowConfigurer();
configurer.set ...
默认情况下,SWT的Table只会给整个Table设置Tooltip,要对每一个TableItem设置Tooltip的话,就要监听鼠标事件了:
table.addMouseTrackListener(new MouseTrackAdapter() {
public void mouseHover(MouseEvent event) {
&n ...
目的1:打开一个新的对话框时,如何设定它和父对话框的相对位置?比如在登录对话框有一个“创建新帐号”的按钮,用户点击以后,就出现新的对话框用于注册,请问如何能让新的对话框和旧对话框排列的整齐一些?应该是能设定二者的相对位置吧?
最开始,以为要用Shell.setLocation来设置,但是对于一个Dialog而言,它的Shell在什么时候才能初始化呢?
我 在构造函数里面,configureShell(Shell newShell)方法里面,Control createDialogArea(Composite parent)方法里面都调用过了this.getS ...
首先是一个效果图:
为了不违反保密协议,偶在这里把logo和相关的东西都涂掉了,希望不会让人觉得难看....
ok,下面就开始讲述偶的coding过程:
首先捏,Dialog是分为三部分的,Window Title Bar,Content Area和Button Bar
这里的Window Title Bar素很难改动滴,偶也米改....而接下来的ContentArea和ButtonBar因为素分成两截滴,所以就要把一张背景图片拆成两截,分别设置成ContentArea和ButtonBar的背景图片鸟~~~
protec ...
在IWorkbenchPreferenceConstants中有很多常量,用来配置preference settings,诸如:
OPEN_NEW_PERSPECTIVE——打开新视图的方式
DOCK_PERSPECTIVE_BAR——锁定PerspectiveBar的位置
INITIAL_FAST_VIEW_BAR_LOCATION——表示fast view bar在一个fresh workspace中锁定的位置,This preference is meaningless after a workspace ...
需要以下的对象:
LoginDialog,用于展示状态,
LoginListener,用于监听登录状态,并根据不同的情况改变LoginDialog的显示
LoginAction,用于执行登录的业务逻辑,并且根据不同的结果来fire不同的动作。
状态一共有以下几种:
1。登录中
2。登录成功
3。登录失败
3.1 连接失败
3.2 用户名密码错误
3.3 .....
4。用户取消登录
下面是代码片段:
Application:
public class  ...
如果使用了Eclipse3.2提供的自绘制功能来在table或者tree里面绘制图像或文字的时候,就必须在LabelProvider中,将对应column的返回值置空,同时需要记住的是,即使所有的column都使用自绘制功能的时候,也必须要给viewer提供一个LabelProvider,否则每一行的第一列上都会显示出对应Object的toString()方法的结果。
ModalessDialog:
public class ModalessDialog extends Dialog {
public ModalessDialog(Shell arg0) {
super(arg0);
setShellStyle(SWT.SHELL_TRIM | SWT.MODELESS | SWT.RESIZE | SWT.MAX);
}
}
程序中需要双击摄像头,然后弹出的对话框中显示摄像头所捕捉的画面,原来是这样写的:
deviceTab.getViewer().addDoubl ...
Design decisions:
Most platforms require that widgets be created within the context of a specific parent, so SWT requires that a parent widget be supplied as one of its constructor arguments. Another requirement of many platforms is that certain style settings must be supplied at creation time ( ...
为了批量发布设备,需要在一个窗口中为设备命名,设定其类型等,要用到Combo,所以就用了CellEditor
用CellEditor还是很方便的,有CheckboxCellEditor,ComboBoxCellEditor,LabelCellEditor,TextCellEditor等等。
首先把TableColumn的名称做成String数组,调用viewer.setColumnProperties()方法
然后做一个CellEditor数组,数组中的每一个CellEditor都对应着每一个Column
然后实现ICellModifier接口,做一个自己的CellMo ...
EventHandler要抽象出一个接口来,然后根据不同的需要实现不同的handler,不然就无法在服务器reply以后通知UI更新,但至于是否要在UI中再生成异步线程来做这件事情,还要通过编码测试一下。
不过目前我的感觉是不需要再生成异步线程了,因为底层Peercore的操作本身就是异步的,不需要等待它的方法操作完毕以后再返回,应该只需要把UI中要更新的控件作为参数传到EventHandler里面去,这样handler就可以通知UI更新了——打住!RCP非UI的线程是无法操作UI线程的!!只能通过UIJob或者是Display.asnyexec()方法来更新U ...
- 浏览: 155877 次
- 性别:

- 来自: 北京

- 详细资料
搜索本博客
我的相册
sina
共 3 张
共 3 张
最近加入圈子
链接
最新评论
-
Starting Struts2中文版已 ...
呵呵,希望大家可以喜欢
-- by dearwolf -
Starting Struts2中文版已 ...
正在看这本书!! 哈哈
-- by kanokano -
CSDN英雄大会上,跟苏某翻 ...
我只想到。。。这么年轻就有仔了,好可怜阿。。。。
-- by akane -
CSDN英雄大会上,跟苏某翻 ...
BJOP上见过你
-- by Ivan Li -
CSDN英雄大会上,跟苏某翻 ...
书的长相看的不太清楚,倒你的长相看的一清二楚啊!
-- by 惊鸿逝水






评论排行榜