BaNg

Just Do It!

  BlogJava :: 首页 :: 联系 :: 聚合  :: 管理
  33 Posts :: -1 Stories :: 177 Comments :: 0 Trackbacks
Eclipse3.4用了一段时间了,发现了很多新特性,API变化也很大,昨天凑巧发现了JDT Template View,Window->Show View->Templates View效果如下:



看得出来它是在JDT UI里面定义的,综合了jdt text editor template 如 Java开头的category 和custom editor template如SWT开头的category。对于我来说,SWT/Draw2d/Plugin的大量重复性代码就可以通过这个来完成了。将模板的代码插入到编辑器有两种方法,一种是直接拖拽到编辑器中,另一种是输入简写入如"execute",按Contxt Assist快捷键(一般为Ctrl+Space)。

除此之外,Templates View还可以维护template比如add/remove。Template的值以XML字串存放在.metadata\.plugins\org.eclipse.core.runtime\.settings\org.eclipse.jdt.ui.prefs文件的org.eclipse.jdt.ui.text.custom_templates项
起初我以为Template View好像还没有提供什么NB功能,在Window->Preferences->Java->-Editor->Templates可以做同样的事情,但稍微看了一下代码,发现我错了:

Templates View是PageBookView,意味着它跟Properties View/Outline View一样,可以根据不同的Editor来显示不同的Page,比如上图JDT就是JavaTemplatesPage,如果编写一个DSL Editor需要用到Templates View,继承AbstractTemplatesPage,然后在Editor的getAapter()返回page,看Java Editor示例:

public class CompilationUnitEditor extends JavaEditor implements IJavaReconcilingListener {

    
public Object getAdapter(Class required) {
        
if (SmartBackspaceManager.class.equals(required)) {
            
if (getSourceViewer() instanceof JavaSourceViewer) {
                
return ((JavaSourceViewer) getSourceViewer()).getBackspaceManager();
            }

        }


        
if (ITemplatesPage.class.equals(required)) {
            
if (fTemplatesPage == null)
                fTemplatesPage
= createTemplatesPage();
            
return fTemplatesPage;
        }


        
return super.getAdapter(required);

    
protected JavaTemplatesPage createTemplatesPage() {
        
return new JavaTemplatesPage(this);
    }


}

当然,大部分人不需要写editor,我们可以在自己的插件里通过使用扩展点来org.eclipse.ui.editors.templates扩展JDT Template,比如我就在GEF项目里面加入了GEF Template,这样编写讨厌的EditPart/EditPolicy/Command就可以少些好多代码。



第一张图片看到的swt template就是在上图所示的default-swttemplates.xml里面定义好了的。

最后想告诉广大Eclipse爱好者的就是,Eclipse SDK写的代码真工整,果然是协作的结晶,整一个代码宝库,根本不用看代码大全了:)。
posted on 2008-08-29 23:20 Always BaNg. 阅读(1261) 评论(0)  编辑  收藏 所属分类: JavaEclipse源代码分析

标题  
姓名  
主页
验证码 *  
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2008-08-29 23:31 编辑过