wadise

          BlogJava 首頁 新隨筆 聯(lián)系 聚合 管理
            22 Posts :: 0 Stories :: 6 Comments :: 0 Trackbacks
          這幾天在做一個(gè)代碼生成器,順便開發(fā)個(gè)Eclipse插件。把自己的一些開發(fā)過程記錄下來以供參考。由于自己初步接觸Eclipse插件開發(fā),所以記錄的東西沒有什么深度。下面我們就來開發(fā)一個(gè)Wizard向?qū)А?BR>1. new一個(gè)plugin project,由于我們想通過代碼生成項(xiàng)目向?qū)硇陆ㄒ粋€(gè)項(xiàng)目,所以我們要用到Eclipse中的Wizard類。

          2. 編輯plugin.xml,使之?dāng)U展org.eclipse.ui.newWizards,具體代碼:
             <extension
                   
          point="org.eclipse.ui.newWizards">

                
          <category
                      
          name="代碼生成"

                      id
          ="com.hymake.hyplat.hycodegen">
                
          </category>
                
          <wizard
                      
          name="生成一個(gè)空項(xiàng)目"

                      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>
                      通過向?qū)梢粋€(gè)代碼生成項(xiàng)目框架
                   
          </description>
                   
          <selection
                         
          class="org.eclipse.core.resources.IResource">

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

          這里面的category就是在Eclipse的New->Project中的一個(gè)類別,例如Java或Plugin-Development類別。如圖:
          wizard1.JPG

          通過點(diǎn)擊Next,將調(diào)用NewCodeGenWizard類,進(jìn)入新建項(xiàng)目窗體。如下圖:

          wizard2.JPG

          至此,我們的向?qū)瓿桑唧w的代碼是這樣的:
          NewCodeGenWizard:

           1    public void init(IWorkbench workbench, IStructuredSelection selection) {
           2        this._workbench = workbench;
           3        setNeedsProgressMonitor(true);
           4        setWindowTitle("新建一個(gè)空項(xiàng)目");
           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("平臺開發(fā)-代碼生成");
          20        page.setTitle("創(chuàng)建一個(gè)代碼生成項(xiàng)目框架");
          21        page.setDescription("創(chuàng)建一個(gè)代碼生成項(xiàng)目框架");
          22        addPage(page);
          23    }

          這里我只是簡單用Eclipse UI中的WizardNewProjectCreationPage ,如果自己想自定義下一個(gè)頁面的風(fēng)格和內(nèi)容的話,也可以再新建一個(gè)類繼承WizardPage即可。代碼如下:
           1    public NewCodeGenWizardPage() {
           2        super("代碼生成-新建一個(gè)空項(xiàng)目");
           3        setTitle("代碼生成-新建一個(gè)空項(xiàng)目");
           4        setDescription("代碼生成-新建一個(gè)空項(xiàng)目");
           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     * 創(chuàng)建一個(gè)用戶區(qū)域
          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     * 創(chuàng)建一個(gè)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是必須實(shí)現(xiàn)的方法。
          至此,我們一個(gè)簡單的向?qū)Ь椭谱魍瓿闪恕?BR>友情小貼士:
             1.在制作向?qū)У臅r(shí)候,一定要實(shí)現(xiàn)addPages方法,否則你點(diǎn)下一步的時(shí)候,因?yàn)闆]有指定的Page而無法顯示出來。
          posted on 2005-12-17 11:08 wadise 閱讀(4220) 評論(0)  編輯  收藏 所屬分類: Eclipse
          主站蜘蛛池模板: 夹江县| 景德镇市| 达拉特旗| 宜阳县| 丽水市| 高雄市| 西宁市| 汶川县| 阿拉尔市| 虎林市| 鄂州市| 湟中县| 彭阳县| 苍山县| 修武县| 中山市| 广宁县| 东安县| 小金县| 威海市| 鹤峰县| 临泉县| 马尔康县| 龙川县| 平潭县| 七台河市| 林甸县| 榆林市| 扶沟县| 开原市| 西城区| 普宁市| 湾仔区| 崇义县| 墨脱县| 兰西县| 巢湖市| 黄梅县| 陕西省| 大理市| 吉木乃县|