(轉)Eclipse RCP 外掛開發中經常呼叫的幾個方法
- 在外掛中訪問StatusLine
WorkbenchWindow window = PlatfromUI.getWorkbench().getActiveWorkbenchWindow(); IStatusLineManager status = window.getStatusLineManager();
- 退出RCP程式
PlatformUI.getWorkbench().restart();
- 重啟RCP應用
PlatformUI.getWorkbench().restart();
在外掛資源庫中查詢Perspective(其它extend point資源的獲得類似)
IPerspectiveDescriptor ipd = PlatformUI.getWorkbench().getPerspectiveRegistry().findPerspectiveWithId(FavoritePerspective.ID);
- 獲得當前RCP應用的shell
Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
- 顯示幫助資訊
PlatformUI.getWorkbench().getHelpSystem().displayHelp();
- 顯示記憶體
PlatformUI.getPreferenceStore().setValue( IWorkbenchPreferenceConstants.SHOW_MEMORY_MONITOR, true);
- eclipse平臺圖片資源共享的獲取方法
PlatformUI.getWorkbench().getSharedImages().getImageDescriptor(ISharedImages.IMG_OBJS_INFO_TASK));
- rcp(外掛開發) 獲取外掛版本資訊
/**
* 獲取外掛版本
* @return
*/
public String getVersion(){
return ((BundleHost)getBundle()).getVersion().toString();
}
* 在其他view中獲取某個view的引用
PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().findView(“viewId”);
- 如何使用程式碼重啟RCP程式?
PlatformUI.getWorkbench().restart();
- 獲得父Shell的幾種方法
IViewPart 或者IEditorPart :
IShellProvider shellProvider = viewOrEditor.getSite();
PlatformUI:
Shell parentShell =
PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
Display :
Shell parentShell = Display.getDefault().getActiveShell();
在實現了IWorkbenchWindowActionDelegate介面的類中:
private IWorkbenchWindow window;
public void init(IWorkbenchWindow window) {
this.window = window;
}
public void run(IAction action) {
Shell parentShell = window.getShell();
MyDialog dialog = new MyDialog(parentShell, );
etc
}
- 獲取程式啟動引數
String[] args = Platform.getCommandLineArgs();
- 關閉一個當前的perspective開啟一個新的perspective
IWorkbench w=PlatformUI.getWorkbench();
ActionFactory.IWorkbenchAction closePerspectiveAction
= ActionFactory.CLOSE_PERSPECTIVE.create(w.getActiveWorkbenchWindow());
closePerspectiveAction.run();
try …{
PlatformUI.getWorkbench().showPerspective(“com.ibm.demo.saic.ui.views.NextPerspective”,
w.getActiveWorkbenchWindow());
} catch (WorkbenchException e) …{
e.printStackTrace();
}
- 定製Console View的ToolBar: 去掉RCP Console View 中的Open Console和Select
Console按鈕。
WorkbenchPage page = PlatformUI.getWorkbench().getWorkbenchWindows()[0].getPages()[0];
IViewPart viewpart = page.findView(IConsoleConstants.ID_CONSOLE_VIEW);
IActionBars actionBar = viewpart.getViewSite().getActionBars();
IToolBarManager toolbarMgr = actionBar.getToolBarManager();
IContributionItem[] items = toolbarMgr.getItems();
for (IContributionItem item : items) {
if (item instanceof ActionContributionItem) {
IAction action = ((ActionContributionItem) item).getAction();
String text = action.getText();
if (text.equals(“Open Console”) || text.equals(“Select Console”)) {
toolbarMgr.remove(item);
}
}
}
actionBar.updateActionBars();
- 如果不需要toobar中的任何東西,可以直接
toolbarMgr.removeAll();
- 可以看到現在的rcp上有很多menubar,這些是我們所不需要的,可以通過在程式碼中新增下列程式碼來簡化
menubar
IWorkbenchPage page = PlatformUI.getWorkbench().getWorkbenchWindows()[0]
.getPages()[0];
IViewPart viewpart = page.findView(IConsoleConstants.ID_CONSOLE_VIEW);
// IActionBars actionBar = viewpart.getViewSite().getActionBars();
IToolBarManager toolbarMgr = viewpart.getViewSite().getActionBars()
.getToolBarManager();
// IToolBarManager toolbarMgr = actionBar.getToolBarManager();
IContributionItem[] items = toolbarMgr.getItems();
for (IContributionItem item : items) {
if (item instanceof ActionContributionItem) {
IAction action = ((ActionContributionItem) item).getAction();
String text = action.getText();
if (text.equals(“Open Console”)
|| text.equals(“Select Console”)) {
toolbarMgr.remove(item);
}
}
}
viewpart.getViewSite().getActionBars().updateActionBars();