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 閱讀(4221) 評論(0)  編輯  收藏 所屬分類: Eclipse
          主站蜘蛛池模板: 竹溪县| 莫力| 鄂尔多斯市| 灵川县| 新营市| 特克斯县| 富源县| 周宁县| 玛多县| 察隅县| 恭城| 皋兰县| 屯留县| 利辛县| 陇川县| 白朗县| 德庆县| 崇信县| 晴隆县| 南华县| 蒙自县| 东明县| 太仆寺旗| 荔波县| 汶上县| 抚远县| 香港 | 资阳市| 高尔夫| 八宿县| 方山县| 云和县| 安岳县| 科技| 汶上县| 弥勒县| 库尔勒市| 胶南市| 平顶山市| 栖霞市| 仙游县|