wadise

BlogJava 首页 新随笔 联系 聚合 管理
  22 Posts :: 0 Stories :: 6 Comments :: 0 Trackbacks
这几天在做一个代码生成器,顺便开发个Eclipse插件。把自己的一些开发过程记录下来以供参考。由于自己初步接触Eclipse插件开发,所以记录的东西没有什么深度。下面我们就来开发一个Wizard向导。
1. new一个plugin project,由于我们想通过代码生成项目向导来新建一个项目,所以我们要用到Eclipse中的Wizard类。

2. 编辑plugin.xml,使之扩展org.eclipse.ui.newWizards,具体代码:
   <extension
         
point="org.eclipse.ui.newWizards">

      
<category
            
name="代码生成"

            id
="com.hymake.hyplat.hycodegen">
      
</category>
      
<wizard
            
name="生成一个空项目"

            icon
="icons/1.gif"
            category
="com.hymake.hyplat.hycodegen"
            class
="com.hymake.hyplat.hycodegen.wizard.NewCodeGenWizard"
            id
="com.hymake.hyplat.hycodegen.wizard.new.project"
            project
="true" >
         
<description>
            通过向导生成一个代码生成项目框架
         
</description>
         
<selection
               
class="org.eclipse.core.resources.IResource">

         
</selection>
      
</wizard>
   
</extension>

这里面的category就是在Eclipse的New->Project中的一个类别,例如Java或Plugin-Development类别。如图:
wizard1.JPG

通过点击Next,将调用NewCodeGenWizard类,进入新建项目窗体。如下图:

wizard2.JPG

至此,我们的向导完成,具体的代码是这样的:
NewCodeGenWizard:

 1    public void init(IWorkbench workbench, IStructuredSelection selection) {
 2        this._workbench = workbench;
 3        setNeedsProgressMonitor(true);
 4        setWindowTitle("新建一个空项目");
 5    }

 6
 7    /** 
 8     * @see org.eclipse.jface.wizard.Wizard#performFinish()
 9     */

10    public boolean performFinish() {
11        return false;
12    }

13
14    /** 
15     * @see org.eclipse.jface.wizard.Wizard#addPages()
16     */

17    public void addPages() {
18        super.addPages();
19        WizardNewProjectCreationPage page = new WizardNewProjectCreationPage("平台开发-代码生成");
20        page.setTitle("创建一个代码生成项目框架");
21        page.setDescription("创建一个代码生成项目框架");
22        addPage(page);
23    }

这里我只是简单用Eclipse UI中的WizardNewProjectCreationPage ,如果自己想自定义下一个页面的风格和内容的话,也可以再新建一个类继承WizardPage即可。代码如下:
 1    public NewCodeGenWizardPage() {
 2        super("代码生成-新建一个空项目");
 3        setTitle("代码生成-新建一个空项目");
 4        setDescription("代码生成-新建一个空项目");
 5        setPageComplete(false);
 6        workspaceRoot = ResourcesPlugin.getWorkspace().getRoot();
 7    }

 8
 9    /**
10     * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite)
11     */

12    public void createControl(Composite parent) {
13        initializeDialogUnits(parent);
14
15        final Composite composite = createClientArea(parent);
16
17        createLabel(composite);
18
19        setControl(composite);
20        Dialog.applyDialogFont(composite);
21    }

22
23    /**
24     * 创建一个用户区域
25     * @param composite
26     * @return
27     */

28    private Composite createClientArea(Composite composite) {
29        Composite composite1 = new Composite(composite, SWT.NONE);
30        GridLayout gridlayout = new GridLayout();
31        gridlayout.marginWidth = 0;
32        gridlayout.marginHeight = 0;
33        gridlayout.numColumns = 3;
34        composite1.setLayout(gridlayout);
35        return composite1;
36    }

37
38    /**
39     * 创建一个Label
40     * @param composite
41     */

42    private void createLabel(Composite composite) {
43        Label label = new Label(composite, 64);
44        label.setText("Label测试");
45        GridData griddata = new GridData();
46        griddata.widthHint = convertWidthInCharsToPixels(80);
47        griddata.horizontalSpan = 3;
48        label.setLayoutData(griddata);
49    }

其中的createControl是必须实现的方法。
至此,我们一个简单的向导就制作完成了。
友情小贴士:
   1.在制作向导的时候,一定要实现addPages方法,否则你点下一步的时候,因为没有指定的Page而无法显示出来。
posted on 2005-12-17 11:08 wadise 阅读(4206) 评论(0)  编辑  收藏 所属分类: Eclipse

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


网站导航: