花开有时

花开有时,花落有时,来有时,去有时。不撕扯,只关切;不纪念,只牵挂;不感动,只明白;不寻找,只记得。
随笔 - 24, 文章 - 0, 评论 - 54, 引用 - 0
数据加载中……

2008年12月2日

在导出RCP时把插件打包成文件夹的形式而不是jar包

     摘要: 在使用RCP做项目时,最后的发布一般是用.product文件的Export wizard导出Product,但是导出的插件默认情况下都是以jar包的形式导出,而有的时候会有在项目中使用的第三方包不允许我们在导出的产品中进行发布,但可以允许用户自己下载后进行添加,因为jar包的形式是把所有依赖的jar包也一起打包成jar,因此jar的形式就不能达到我们发布的要求。在试过了很多方法后,我们觉得如果导出的形式改成文件夹的形式是可行的。因为一般来说,发布的插件都会有一个lib文件夹存放依赖的jar,如果我们在build.properties文件中设置不把依赖的lib下jar包发布,并且以文件夹的形式发布插件,让用户自己下载添加到lib文件夹里,这样就ok了。  阅读全文

posted @ 2008-12-02 11:18 花开有时 阅读(2982) | 评论 (3)编辑 收藏

2008年4月29日

JME研究群(42691979)建立!

    对JME感兴趣的同志请加入JME研究群(群号:42691979),大家一起研究,共同进步!

posted @ 2008-04-29 14:13 花开有时 阅读(1528) | 评论 (2)编辑 收藏

2008年2月5日

定义Eclipse Editor应该要注意的问题

1.Editor必须要设置icon,否则会出异常。
2.必须要重写EditorPart#init(IEditorSite site, IEditorInput input)方法,内容一般为
this.setSite(site);
this.setInput(input);
this.setPartName(input.getName());
否则会出异常。 3.自定义的EditorInput的以下方法的返回值不能为null:getName()、getToolTipText(),否则会出异常。

posted @ 2008-02-05 13:41 花开有时 阅读(446) | 评论 (0)编辑 收藏

2008年2月3日

如何自定义SWT Table的每一个Cell的height and width

demonstration code:
Display display = new Display();
Shell shell = new Shell(display);
shell.setBounds(10,10,200,250);
final Table table = new Table(shell, SWT.NONE);
table.setBounds(10,10,150,200);
table.setLinesVisible(true);
for (int i = 0; i < 5; i++) {
new TableItem(table, SWT.NONE).setText("item " + i);
}
table.addListener(SWT.MeasureItem, new Listener() { 
public void handleEvent(Event event) { 
int clientWidth = table.getClientArea().width;
event.height = event.gc.getFontMetrics().getHeight() * 2; 
event.width = clientWidth * 2; 
 } 
});  
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) display.sleep();
}
display.dispose();

说明:黑体部分是关键,主要是要为table添加一个监听器并要用到SWT.MeasureItem属性,如果是在TableView下则需要调用TableView#getTable()方法获得Table再添加监听器。
还需要注意的是:
1)这个特性可能只在Eclipse3.2以上的版本中才有。
2)不能对单行(Item)进行height的设置。
3)如果设置了width,则column的width以它为准。
参考文章:[[1]]http://www.eclipse.org/articles/Article-CustomDrawingTableAndTreeItems/customDraw.htm#_tb10D

posted @ 2008-02-03 16:26 花开有时 阅读(2384) | 评论 (1)编辑 收藏

RCP开发--对PropertyView定义自己的排序器

在RCP开发中难免要使用要PropertyView对自己的一些Object进行属性描述,但是有时候需要对PropertyView (org.eclipse.ui.views.properties.PropertySheetPage)
进行自己的排序(PropertySheetPage有定义好的排序器),经研究发现PropertySheetPage并没有提供方法可以设置排序器,怎么办呢?
方法是实现一个自己的PropertySheetPage,因为在PropertySheetPage中实际上是提供了一个设置排序器的方法的,但是这个方法是受保护的(protected),
并不是公开的(public),所以我们需要实现自己的PropertySheetPage,而且还需要实现自己的排序器PropertySheetSorter。
1.实现自己的PropertySheetSorter:需要继承PropertySheetSorter类并实现sort(IPropertySheetEntry[] entries)方法,具体可以看父类的实现。
2.实现自己的PropertySheetPage:需要继承PropertySheetPage类并重写createControl(Composite parent)方法,
在方法中首先调用setSorter(自己定义的PropertySheetSorter类的对象),然后调用super.createControl(parent)方法。

posted @ 2008-02-03 15:52 花开有时 阅读(660) | 评论 (0)编辑 收藏

定义自己的CellEditor

     摘要: 定义自己的CellEditor其实不难,完整的实例可以看Eclipse的TextCellEditor与ComboBoxCellEditor(原理都差不多,但推荐看CmboboxCellEditor,它的实现简单些)  阅读全文

posted @ 2008-02-03 14:51 花开有时 阅读(3707) | 评论 (1)编辑 收藏

2007年12月26日

工作随想

  工作差不多有一个月了,突然发现周围的同事都不是名牌大学顺利毕业拥有学位的高材生就是在读的名牌大学实习生。今天发现我旁边的一位是保送到清华的南大学生,呵呵,想想自己没学位,和别人比起来还真是回事啊。真不知道,将来我有成就了,学校会不会给“荣誉学士学位”呢?呵呵,比较好玩。

posted @ 2007-12-26 20:19 花开有时 阅读(285) | 评论 (0)编辑 收藏

2007年12月23日

java Method类试用

     摘要: 背景:在项目中有一堆javabean,要用在界面上画一堆tableview,要对这一堆tableview进行排序,因此要写一堆sorter类(假如为每个tableview都写一个的话),工作量比较大。
思考:其实这些sorter类都是差不多的,只是调用的javabean不同,方法名称不同,实现的原理,没有什么不同,那么该如何使用一个sorter类就可对所有的tableview进行排序呢?
思考结果:也许可以用Class类与Method类,也就是什么reflect机制。
  阅读全文

posted @ 2007-12-23 14:07 花开有时 阅读(5861) | 评论 (4)编辑 收藏

2007年12月11日

自定义具有“上图片”下“文字”效果的Button

       SWTButton控件时可以加图片与文字的,但是不能控制图片与文字的位置。比如我要定义一个Button具有这样的效果 ,就靠Button得一些属性和方法做不出来(但是Action可以)。那么如果我就是需要这样的Button,该怎么办呢?我采用的方法是用先加图片,再用GC画一个文字(同时也可以控制文字的大小、样式和位置)

具体代码如下:

//定义一个Button

Button button = new Buttonshell,SWT.NONE;

//加图片

Button.setImage(new Image(Display.getCurrent(),”….图片的路径”);

//加上绘制事件

button.addPaintListener(new PaintListener(){

   public void paintControl(PaintEvent e){

         //设置字体样式等等

         Font font = new Font(Display.getCurrent(),””,8,SWT.BOLD);

         e.gc.setFont(font);

         e.gc.drawText(“haha”,0,0);

}

});                        

ok,基本上就是这样了,不知道有没有更好的方法。

posted @ 2007-12-11 12:57 花开有时 阅读(922) | 评论 (0)编辑 收藏

2007年12月10日

IFolderLayout#addView()、IPageLayout#addView()与IPageLayout#addStandaloneView()的区别。

 

IFolderLayout#addView():views放在一个IFolderLayout(类似一个文件夹)里,可以叠加view

IPageLayout#addView():view按照方法的参数设置放置,程序运行后可以叠加view

IPageLayout#addStandaloneView():view按照方法的参数设置放置view,程序运行后不能叠加view

posted @ 2007-12-10 12:59 花开有时 阅读(1784) | 评论 (0)编辑 收藏