- 浏览: 153086 次
- 性别:
- 来自: 北京
-
最新评论
-
EclipseEye:
fair_jm 写道不错 蛮详细的 谢谢分享
SWT/JFace专题 --- SWT中Display和多线程 -
fair_jm:
不错 蛮详细的 谢谢分享
SWT/JFace专题 --- SWT中Display和多线程
文章列表
常用设计模式----策略模式
- 博客分类:
- OOP与设计模式
package org.design.patterns;
import java.io.File;
import java.io.FilenameFilter;
/**
*策略模式:定义了算法族,分别封装起来,让它们之间可以相互替换,
* 此模式让算法的变化独立于使用算法的客户。
*
*策略模式使用多个类来区分不同的行为,使用策略模式避免暴露复杂的、与算法相关的
*内部数据结构。
*当一个类中的操作以多个条件分支语句的形式出现的时候,可以使用策略模式
*将相关的条件分支移入各自的具体策略类中以代替这些条件语句,从而减少系统的复杂度。 ...
1.在RCP中ApplicationWorkbenchWindowAdvisor的preWindowOpen()中添加:
configurer.setShowPerspectiveBar(true);//表示显示透视图栏
2.在RCP配置product文件后,在plugin_customization.ini中添加:
------
org.eclipse.ui/SHOW_TRADITIONAL_STYLE_TABS=false
org.eclipse.ui/DOCK_PERSPECTIVE_BAR=TOP_RIGHT
------
其中第一句:表示RCP中的Tab的显示不是规则的普通类型,而 ...
==================
1.得到Eclipse安装目录(eclipse.exe所在的目录)绝对路径:
Platform.getInstallLocation().getURL().getPath().substring(1);
2.得到项目中资源路径(常用的比如图片等)
e.g.:getPluginResourcePath(“org.xxxx.xxx.xx.pluginId”,"icons/xxx.jpg") ...
用CVS获得源码
- 博客分类:
- Eclipse插件开发
1. 直接进入Eclipse官网(http://wiki.eclipse.org/CVS_Howto)
2.获取建立cvs链接的地址(location)、通行证(Authentication)及连接方式(connection)
如下:
【表--2】
URL
Project Name
:pserver:anonymous@dev.eclipse.org:/cvsroot/eclipse
The Eclipse
platform project
:pserver:anonymous@dev.eclipse.org:/cvsroot/tools
Tools project
:pser ...
异步作业调度
- 博客分类:
- Eclipse插件开发
IProgressMonitor:通过这个接口控制进度条的现实
ProgressMonitorDialog:进度对话框
IRunnableWithProgress和java的标准接口Runnable实现多线程的任务运行非常相似,只有把任务放到run方法中就可以了,最重要的是可以调用monitor来对当前进度显示进行控制。下面就是一个完整的进度条演示例子:
ProgressMonitorDialog dialog=new ProgressMonitorDialog(shell);
dialog.run(true,true,new IRunnableWithProgress(){
...
ClassNotFoundExceptoion :就是没找到对应的类的异常,这在我们的平实的开发中是经常遇到的,很常见的异常。
在插件开发中,有些类(jar包)明明是在buildPath里面配置过的,在main方法里面能调用该类及其方法;可是当项目以插件的形式运行时,缺曝出了ClassNotFoundExceptoion ,提示相关的类(jar包)找不到:
原因: 运行main方法用到的jvm和运行eclipse插件开发换环境所用的到jvm不同,不是一个,所以,我们平实配置的buildpath是为main启动时用到的那个jvm配置的,而运行插件的开发环境却没有配置,故,出了错 ...
说明:<!DOCTYPE xxx SYSTEM "test.dtd">
解析xml是在同级目录下放置了test.dtd文件,可是还是不能找到这个dtd文件,于是就用了下面的方法:
=================================
XMLReader reader = XMLReaderFactory.createXMLReader();
//reader.setErrorHandler(errorHandler);
//reader.setContentHandler(contentHandler);
reader.setEn ...
考虑到软件协议(AGPL,GPL)问题,避免可能产生的纠纷,建议itext的相关jar包(如:com.lowagie.text等)用2.1.7及以前的。
----------------------
首先导入需要的jar包(如:com.lowagie.text_2.1.7.v201004222200.jar,iTextAsian.jar,jxl.jar(Excel相关)) ...
{
Composite topComp = null;
// ...
// CTabFolder
CTabFolder tabFolder = new CTabFolder(topComp, SWT.TOP | SWT.BORDER);
GridData gd = new GridData(GridData.FILL_HORIZONTAL | GridData.FILL_VERTICAL);
gd.horizontalSpan = 20;
tabFolder.setLayoutData(gd);
tabFolder.setTabHeight(3 ...
//隐藏掉系统中的默认的菜单和工具项
public static void hideSystemMenu() {
IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
page.hideActionSet("org.eclipse.ui.WorkingSetActionSet");
page.hideActionSet("org.eclipse.ui.edit.text.actionSet.annotationNa ...
SWT/JFace 对话框
- 博客分类:
- Eclipse插件开发
String enter = System.getProperty("line.separator")//系统中的回车
String seperator=File.separator//系统中"\"or"/"
//1.
DirectoryDialog dirDialog = new DirectoryDialog(composite.getShell());
dirDialog.setFilterPath("D:\a"+seperator);
String url = dirDialog ...
FileDialogsaveFileDlg = new FileDialog(Display.getDefault().getActiveShell(), SWT.SAVE);
saveFileDlg.setText("Save Chip File");
saveFileDlg.setFilterExtensions(new String[] { "*.xml" });
saveFileDlg.setFilterPath(userDirPath);
saveFileDlg.setOverwrite(t ...
比如要实现Ctrl+S的Save快捷键时,会出现插件本身的快捷键和自定义的两个快捷键,这样显然不是我们想要的效果。
方案(1)
//屏蔽快捷键
((IBindingService)PlatformUI.getWorkbench().getAdapter(IBindingService.class)).setKeyFilterEnabled(false);
PS.:这个能屏蔽所有的Binding 包括自定义的,这显然不合适。
方案(2)
采用默认的ContextID:org.eclipse.ui.contexts.window
在plugin.xml中实现:
...
首先说明的是:
为了用滚动面板最好用3个层次的Composite:
befComposite---滚动面板的直接父类; scrolledComposite---滚动面板自己;inComposite--滚动面板的直接子类,用于存放各种子控件。
Composite befComposite= new Composite(shell, SWT.NONE);
gridData = new GridData(GridData.FILL_BOTH);
befComposite.setLayoutData(gridData);
befComposite.setLayout(new ...
在 [url]SWT中org.eclipse.swt.SWTError: No more handles[/url] 一文中有介绍,但最近又遇到这个问题。
其实,在那篇文章中提到的用Map 模拟注册表 缓存的方法是很凑效的,之所以又出现这个异常是因为一时疏漏 在一个方法中new Image后没有及时dispose该image(由于该image在Graphics中调用属于临时image 没必要放到map中,正确的方法是用完后dispose),而该方法又被频繁调用,这就又导致了该异常。
虽然最后的解决方案很简单,就添加一行image.dispose就ok了,不过由于项目比较大,想快速定位到错误的 ...