wadise

BlogJava 首页 新随笔 联系 聚合 管理
  22 Posts :: 0 Stories :: 6 Comments :: 0 Trackbacks
在前面我们已经可以自动生成一个文件并自动进入编辑状态,但是不是图形界面。而我们的代码生成器使用的是可视化图形界面。还记得我们上一篇生成的那个文件后缀名吗?对,是.cg,那么要使得打开后缀名为cg文件时进入我们自定义的编辑环境中,只需在plugin.xml中加入:
   <extension
         
point="org.eclipse.ui.editors">

      
<editor
            
default="true"

            class
="com.hymake.hyplat.hycodegen.editor.CgEditor"
            contributorClass
="com.hymake.hyplat.hycodegen.editor.CgEditorContributor"
            extensions
="cg"-----------------这里是要编辑的文件后缀名
            icon
="icons/logo1.png"
            id
="com.hymake.hyplat.hycodegen.editor.CgEditor"
            name
="代码生成编辑器"/>
   
</extension>

而CgEditor则要继承GraphicalEditorWithPalette,代码如下:
 1public class CgEditor extends GraphicalEditorWithPalette {
 2    private boolean
 dirty;
 3

 4    
/**
 5     * 构造函数
 6     */

 7    public CgEditor() {
 8        dirty = false
;
 9        setEditDomain(new DefaultEditDomain(this
));
10    }

11
12    
/**
13     * @see org.eclipse.gef.ui.parts.GraphicalEditorWithPalette#getPaletteRoot()
14     */

15    protected PaletteRoot getPaletteRoot() {
16        PaletteRoot root = new
 PaletteRoot();
17        PaletteGroup toolGroup = new PaletteGroup("代码生成器"
);
18        org.eclipse.gef.palette.ToolEntry tool = new
 SelectionToolEntry();
19
        toolGroup.add(tool);
20
        root.setDefaultEntry(tool);
21        tool = new
 MarqueeToolEntry();
22
        toolGroup.add(tool);
23        PaletteDrawer drawer = new PaletteDrawer(""
);
24        org.eclipse.jface.resource.ImageDescriptor descriptor =
 ImageFactory
25                .getImageDescriptor("table.gif"
);
26        CreationToolEntry creationEntry = new CreationToolEntry("新建一个表"
,
27                "新建一个表"new SimpleFactory(Table.class
), descriptor, descriptor);
28
        drawer.add(creationEntry);
29        descriptor = ImageFactory.getImageDescriptor("column.gif"
);
30        creationEntry = new CreationToolEntry("新建一个行""新建一个行"
,
31                new SimpleFactory(Column.class
), descriptor, descriptor);
32
        drawer.add(creationEntry);
33        descriptor = ImageFactory.getImageDescriptor("connection.gif"
);
34        ConnectionCreationToolEntry connxCreationEntry = new
 ConnectionCreationToolEntry(
35                "新建一个连接""新建一个连接"new SimpleFactory(Reference.class
),
36
                descriptor, descriptor);
37
        drawer.add(connxCreationEntry);
38
        root.add(toolGroup);
39
        root.add(drawer);
40        return
 root;
41    }

42
43

44

45    
/**
46     * @see org.eclipse.gef.ui.parts.GraphicalEditor#initializeGraphicalViewer()
47     */

48    protected void initializeGraphicalViewer() {
49    }

50
51    
/**
52     * @see org.eclipse.ui.part.EditorPart#doSave(org.eclipse.core.runtime.IProgressMonitor)
53     */

54    public void doSave(IProgressMonitor monitor) {
55    }

56
57    
/**
58     * @see org.eclipse.ui.part.EditorPart#doSaveAs()
59     */

60    public void doSaveAs() {
61    }

62
63    
/**
64     * @see org.eclipse.ui.part.EditorPart#isSaveAsAllowed()
65     */

66    public boolean isSaveAsAllowed() {
67        return false
;
68    }

69
70}
这样出来的图如下:
editor1.JPG
接下来我们就要对这些Action进行相应的代码编写完成指定的工作。
友情小贴士:
   1.在构造函数中一定要指定
        setEditDomain(new DefaultEditDomain(this));才能调用getPaletteRoot并把视图显示出来。
posted on 2005-12-19 13:20 wadise 阅读(1673) 评论(0)  编辑  收藏 所属分类: Eclipse

只有注册用户登录后才能发表评论。


网站导航: