hhh

常用链接

统计

最新评论

2006年10月27日 #

SWT如何获得本地文件系统的图标等表示信息

 在swing中
  
  FileSystemView.getFileSystemView().getSystemDisplayName(file);
  
  
  FileSystemView.getFileSystemView().getSystemIcon(file);
  
  可以采用上面的方法得到。

  那SWT中如何做到呢?

posted @ 2006-10-30 16:20 hhh 阅读(1094) | 评论 (2)编辑 收藏

swing灵活和重用的艺术 renderer/editor

说到GUI类库的重用有一个很著名的模式:Composite模式。对,一个现代面向对象GUI类库基本上都有这个模式的实现,当然也包括swing.不 过早一点如MFC就没有完整的实现,现在来看如果一个GUI类库连基本的Composite模式都没有实现基本上感觉是出土的文物啦!
   但是我们来看即便有了Composite模式,但Composite模式通常是构建静态组合,如果要动态的替换一个复合组件内部的子元素如何办呢?如此一来这个组件就只能定义自己的布局形式,而不能定死在这个布局形式内的元素。
   其实从用户角度来说一个GUI元素通常就是两种情况要么就是表现,要么就是处于和用户交互状态,这是它们的形态通常不一样。所以组件不仅仅要只定义自己的布局形式,还要给于外部机会来配置当自己的子元素处于这两种状态时相应的UI组件是什么!
  
  swing通过renderer/editor达到了这种灵活性。如swing中JTable,JList,JTree等组件都只是定义了自 己的布局形式。并且都可以配置renderer/editor,这样你的renderer/editor实现就接管了组件里面元素的表现形式和交互形态。 理论上你可以用任何JComponent作为组件里面元素的表现形式和交互形态。其灵活性和重用性达到了一个巅峰!
  
  以前还聊过一个JTable的例子!
  http://www.douban.com/group/topic/1112689/

posted @ 2006-10-28 16:44 hhh 阅读(1139) | 评论 (0)编辑 收藏

初探eclipse RCP 有些问题?

public class Perspective implements IPerspectiveFactory {
  
  public void createInitialLayout(IPageLayout layout) {
  
   String er = layout.getEditorArea();
   layout.setEditorAreaVisible(false);
  
   layout.addView(FileTransfersView.DownloadID,IPageLayout.TOP , 0.25f, er);
   layout.addView(FileTransfersView.UploadID,IPageLayout.BOTTOM , 0.25f, er);
  
  }
  }
  
  比如有以上代码,那么我如何获得被加到layout的viewer实例呢?我发现本更无法获得viewer实例的引用了。
  
  plugin.xml文件的片断
  <extension
   point="org.eclipse.ui.views">
   <view
   class="com.mt.ui.FileTransfersView"
   id="com.mt.ui.FileTransfersView.Upload"
   name="test1"/>
   <view
   class="com.mt.ui.FileTransfersView"
   id="com.mt.ui.FileTransfersView.Download"
   name="test2"/>
   </extension>
  
很明显两个view的class是一个,因为我要重用这个view,它们只是有些属性和背后的数据不一样!我需要在初始化时将这些不一样设定。

如果我的机会只有在这里
public void createPartControl(Composite parent) {
    
}
    
那么难道不同的View就要都通过继承,然后重写上面这个方法来做,这样的话是不是过于呆板了!
    
还请熟悉eclipse RCP的指点。

posted @ 2006-10-27 17:16 hhh 阅读(820) | 评论 (2)编辑 收藏