1. 程式人生 > >Eclipse外掛開發之新建嚮導

Eclipse外掛開發之新建嚮導

Eclipse外掛開發之新建嚮導

                                                                                                                                                                              

  1. 新增嚮導入口

圖1.1嚮導入口效果圖

需要用到的擴充套件點:

org.eclipse.ui.newWizards

org.eclipse.ui.navigator.navigatorContent"

1.1即為新增的一些嚮導入口,如果需要實現一個嚮導入口,需要擴充套件以上擴充套件點,這些擴充套件點都在plugin.xml中編寫,以下以第一個嚮導入口Cpu管理為例:

1.1"org.eclipse.ui.newWizards"

此擴充套件點用來註冊資源建立嚮導擴充套件,建立嚮導作為新建對話方塊中的選項出現。

class:實現org.eclipse.ui.INewWizard

java類例項 

project 指示嚮導將建立 IProject 資源的可選屬性。還導致嚮導作為“新建專案對話方塊”中的選項出現。 

finalPerspective 標識在 IProject 資源建立完成時要啟用的透檢視的可選屬性。 

preferredPerspectives 指定用逗號分隔的透檢視標識列表的可選屬性。如果當前透檢視在此列表

icon - 指定了嚮導入口的圖示

name - 指定了嚮導入口的名稱

<extension

         point=

"org.eclipse.ui.newWizards">

      <category

            name="C/C++"

            id="com.djyos.dide.ui.newDWizards">

      </category>

     

        <wizard

            canFinishEarly="false"

            category="com.djyos.dide.ui.newDWizards"

            class="com.djyos.dide.ui.wizards.cpu.CpuWizard"

            finalPerspective="org.eclipse.cdt.ui.CPerspective"

            hasPages="true"

            icon="icons/ovr16/cpu_img.gif"

            id="com.djyos.dide.ui.wizards.NewDWizard1"

            name="%Cpu.title"

            project="true">

        <description>

            %Cpu.desc

        </description>

       </wizard>

</extension>

1.2"org.eclipse.ui.navigator.navigatorContent"

此擴充套件中, variable指定了該向匯入口在什麼檢視中可見。

<extension

       point="org.eclipse.ui.navigator.navigatorContent">      

        <commonWizard

           associatedExtensionId="com.djyos.dide.ui.navigator.content"

           menuGroupId="org.eclipse.cdt.ui.newProject"

           type="new"

           wizardId="com.djyos.dide.ui.wizards.NewDWizard1">

            <enablement>

                <or>

<with variable="activeWorkbenchWindow.activePerspective">

                    <equals

                          value="org.eclipse.cdt.ui.CPerspective">

                    </equals>

                </with>

<instanceof value="org.eclipse.cdt.core.model.ICElement" />   <and>

               <instanceof value="org.eclipse.core.resources.IProject"/>

               <test property="org.eclipse.core.resources.projectNature"

                             value="org.eclipse.cdt.core.cnature"/>

               </and>

           </or>

         </enablement>

         </commonWizard>

</extension>

  1. 新增新嚮導  

2.1、設定嚮導的基本配置

需要繼承的類:BasicNewResourceWizard

此類由org.eclipse.ui.ide提供,只需依賴該外掛就可以匯入此類。通過繼承該類,可以獲取嚮導的基本框架,再選擇性實現以下方法:

     @Override

     public IWizardPage getPreviousPage(IWizardPage page) {

           // TODO Auto-generated method stub

           //獲取前一頁

           return super.getPreviousPage(page);

     }

 

     @Override

     public IWizardPage getNextPage(IWizardPage page) {

           // TODO Auto-generated method stub

           //獲取後一頁

           return super.getNextPage(page);

     }

 

     @Override

     public boolean performCancel() {

           // TODO Auto-generated method stub

           //點選Cancel的處理事件

           return super.performCancel();

     }

 

     @Override

     public void addPages() {

           // TODO Auto-generated method stub

           //新增頁面

fMainPage = new  XXXPage(CUIPlugin.getResourceString(PREFIX));

           fMainPage.setTitle(wz_title);

           fMainPage.setDescription(wz_desc);

           addPage(fMainPage);

           super.addPages();

     }

 

     @Override

     public boolean performFinish() {

           // TODO Auto-generated method stub

           //點選finish的處理事件

           return false;

}

2.2、新增嚮導頁面

需要繼承的類:WizardPage

此類由org.eclipse.jface提供,指定了一個嚮導頁面,每個嚮導頁面通過addPage方法加入嚮導,此嚮導才會根據頁面加入的順序來顯示這些頁面,需要繼承以下方法:

@Override

     public void createControl(Composite parent) {

           // TODO Auto-generated method stub

           // 本嚮導頁面的總體架構

     }

 

     @Override

     public IWizardPage getNextPage() {

           // TODO Auto-generated method stub

           // 獲取下一下頁面

           return super.getNextPage();

     }

 

     @Override

     public boolean canFlipToNextPage() {

           // TODO Auto-generated method stub

           // 設定是否可以通過點選Next跳轉到下一個頁面

           return super.canFlipToNextPage();

     }