定制Eclipse IDE之功能篇(一)


 
這一篇文章將記錄一些Eclipse插件拓展(extension),簡單講述常用拓展的用法,但可能不會那么詳細。
我的主要插件的拓展如下:
 
一、org.eclipse.ui.startup
這一個拓展可以說很關鍵,他可以讓我們在eclipse啟動時候做一些事件(之后很多小功能東西依靠它做的)。
XML配置:
<extension
     point="org.eclipse.ui.startup">
  <startup
          class="com.bingo.start.BTStart">
  </startup>
</extension> 
對應實現類:
public class BTStart implements IStartup
{
     public BTStart()   {  }

     public void earlyStartup() {

          //無關UI的代碼可寫這里
         
         
          Job job = new UIJob("") {

               public IStatus runInUIThread(IProgressMonitor monitor) {
                    try {
                   
                         //涉及到UI的代碼寫這里,不然將操作不了
                    } catch (ExecutionException e) {
                         e.printStackTrace();
                         return Status.CANCEL_STATUS;
                    }
                    return Status.OK_STATUS;
               }

          };
          job.schedule(300L); //300ms后執行
         
     }
}

 

二、org.eclipse.ui.newWizards
這個是向導拓展。就類似新建項目,然后下一步下一步的操作。
在這里我用來做新建應用模板的工程,在向導拓展里面實現應用模板生成。
XML配置:
<extension
     point="org.eclipse.ui.newWizards">
     <category
        id="bt_project"
        name="%category.name">
     </category>
     <wizard
          category="bt_project"
          class="com.bingo.perspective.ui.wizards.BTProjectWizard"
          finalPerspective="com.bingo.ide.perspective"
          icon="icons/eclipse16.png"
          id="com.bingo.perspective.wizards.BTProjectWizard"
          name="%projcet.name"
          project="true">
     </wizard>
</extension>

對應實現類:

public class BTProjectWizard extends Wizard implements INewWizard{
} 
具體代碼就不顯示,BTProjectWizard 只是一個容器,他還需要添加WizardPage進去。
 
另外可以將向導拓展添加到右鍵菜單上。
XML配置如下:
<extension
     point="org.eclipse.ui.navigator.navigatorContent">
  <commonWizard
          associatedExtensionId="org.eclipse.ui.navigator.resourceContent"
          type="new"
          wizardId="com.bingo.perspective.wizards.BTProjectWizard">
     <enablement>
     </enablement>
  </commonWizard>
</extension>

 

三、org.eclipse.ui.menus
單獨在菜單欄添加項。
例如:我添加一個同步菜單
XML配置:
<extension
     point="org.eclipse.ui.menus">
  <menuContribution
          allPopups="false"
          locationURI="menu:help?before=org.eclipse.equinox.p2.ui.sdk.install">
       <command
             commandId="com.bingo.perspective.ui.SyncHandler"
             label="同步BingoTouch模板"
             style="push">
     </command>
  </menuContribution>
</extension>
<extension
     point="org.eclipse.ui.commands">
   <command
          defaultHandler="com.bingo.perspective.ui.handler.SyncHandler"
          id="com.bingo.perspective.ui.SyncHandler"
          name="同步BingoTouch模板">
  </command>
</extension> 
實現類:
public class SyncHandler extends AbstractHandler
{

     public SyncHandler()
     {
     }

     public Object execute(ExecutionEvent event)
          throws ExecutionException
     {
          //檢查模板版本
          SyncResource.start();
          return null;
     }
}

 

四、org.eclipse.ui.perspectives
定義透視圖
XML配置:
<extension
     point="org.eclipse.ui.perspectives">
  <perspective
          class="com.bingo.perspective.BingoTouchPerspective"
          fixed="true"
          icon="icons/eclipse16.png"
          id="com.bingo.ide.perspective"
          name="%perspective.name">
  </perspective>
</extension>
實現類:實現類內容就是對視圖的布局,在第一篇文章里面有寫。
 
五、org.eclipse.ui.actionSets
定義操作動作,可以放置到菜單欄或工具欄上。

XML配置:
<extension
     point="org.eclipse.ui.actionSets">
    <actionSet
          label="BingoTouch Action Set"
          visible="true"
          id="com.bingo.functions.actionSet">
          <menu
             label="%document.name"
             id="btDoc">
          <separator
                 name="btDocGroup">
          </separator>
          </menu>
          <action
               class="com.bingo.perspective.ui.actions.OnlineDocumentAction"
               icon="icons/icon/faq.png"
               id="btFAQ"
               label="%faqdoc.name"
               menubarPath="btDoc/btDocGroup"
               toolbarPath="btDocGroup"
               tooltip="%faqdoc.name">
          </action>
          <action
               class="com.bingo.perspective.ui.actions.OnlineDocumentAction"
               icon="icons/icon/uidoc.png"
               id="btUIDoc"
               label="%uidoc.name"
               menubarPath="btDoc/btDocGroup"
               toolbarPath="btDocGroup"
               tooltip="%uidoc.name">
          </action>
          <action
               class="com.bingo.perspective.ui.actions.OnlineDocumentAction"
               icon="icons/icon/apidoc.png"
               id="btApiDoc"
               label="%apidoc.name"
               menubarPath="btDoc/btDocGroup"
               toolbarPath="btDocGroup"
               tooltip="%apidoc.name">
          </action>
    </actionSet>
</extension>

里面menubarPath、toolbarPath操作按鈕放或不放,放哪。

 
常用的拓展就先介紹到這里,目的是希望大家知道有這東西,而不是具體怎么實現。
 
本文為原創文章,轉載請保留原出處,方便溯源,如有錯誤地方,謝謝指正。
本文地址 : http://www.cnblogs.com/lovesong/p/4693666.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM