Application.java 整個(gè)程序的入口點(diǎn),在程序運(yùn)行時(shí),會(huì)選執(zhí)行run方法,將創(chuàng)建用戶界面的工作交給ApplicationWorkbenchAdvisor類
ApplicationWorkbenchAdvisor.java 指定默認(rèn)的透視圖,把創(chuàng)建窗口的開作交給ApplicationWorkbenchWindowAdvisor類
ApplicationWorkbenchWindowAdvisor.java,可能重載它的preWindowCreate,postWindowCreate,preWindowOpen,postWindowOpen等方法,以便修改窗口的外觀
ApplicationActionBarAdvisor.java,可以創(chuàng)建菜單和工具條
添加菜單
添加菜單工具欄第一種方法
makeActions創(chuàng)建action,注冊action;regsiter(action)是用來把實(shí)例注冊到工作臺(tái)中,當(dāng)工作臺(tái)銷毀的時(shí)候,action也可以被銷毀
action需要實(shí)現(xiàn)IWorkbenchAction接口
fillMenuBar建菜單,工具條,設(shè)置相對應(yīng)的action;
添加菜單工具欄第二種方法
在plugin.xml中添加配置
<extension
id ="cn.blogjava.youxia.actionset"
name ="我的菜單擴(kuò)展"
point ="org.eclipse.ui.actionSets">
<actionSet
description ="第一個(gè)擴(kuò)展"
id ="RCP_Start.actionSet1"
label ="RCP_Start.actionSet1"
visible ="true" >
<action class ="cn.blogjava.youxia.actions.Action2"
icon ="icons/alt_window_16.gif"
id ="RCP_Start.action2"
label ="第二個(gè)菜單項(xiàng)"
menubarPath ="cn.blogjava.youxia.firstmenu/additions"
style ="push"
toolbarPath ="additions"
tooltip ="第二個(gè)菜單項(xiàng)的按鈕" />
</actionSet>
</extension>
Action2必須要實(shí)現(xiàn)實(shí)現(xiàn)org.eclipse.ui.IWorkbenchWindowActionDelegate接口,多定義了一個(gè)方法public void selectionChanged(IAction action, ISelection selection),這個(gè)方法是必須的,以便工作臺(tái)窗口在用戶選定哪一項(xiàng)資源的時(shí)候通知我們的Action類的實(shí)例。這個(gè)方法是必須的,以便工作臺(tái)窗口在用戶選定哪一項(xiàng)資源時(shí)通知我們的action類的實(shí)例
添加視圖
在File->New->Other->Designer->RCP->ViewPart->Next
Perspective類:這是RCP應(yīng)用的默認(rèn)視圖,實(shí)現(xiàn)了IPerspectiveFactory接口,并且通過org.eclipse.ui.perspectives擴(kuò)展ClassName屬性指定
在Perspective類中createInitialLayout方法中添加如下代碼
layout.addView( BrowserView.ID,
IPageLayout.TOP,
IPageLayout.RATIO_MAX,
IPageLayout.ID_EDITOR_AREA );
在plugin.xml中添加如下節(jié)點(diǎn)
<extension point="org.eclipse.ui.views">
<view
class="helloworld_rcp.BrowView"
id="BrowView"
name="New ViewPart">
</view>
</extension>
設(shè)置隱藏編輯面板
layout.setEditorAreaVisible(false);
Selection Service的整體架構(gòu)
注冊
this.getSite().setSelectionProvider(viewer);
viewer需要實(shí)現(xiàn)ISelectProvider接口
監(jiān)聽
this.getSite().getPage().addSelectionListener(this);
this.實(shí)現(xiàn)ISelectionListener接口