源文件:http://blog.csdn.net/lyq19870515/article/details/9346921
想要在RCP里添加视图 那就必须先建立视图:
- package com.view;
- import org.eclipse.jface.action.IMenuManager;
- import org.eclipse.jface.action.IToolBarManager;
- import org.eclipse.swt.SWT;
- import org.eclipse.swt.layout.FillLayout;
- import org.eclipse.swt.widgets.Composite;
- import org.eclipse.swt.widgets.Tree;
- import org.eclipse.swt.widgets.TreeItem;
- import org.eclipse.ui.part.ViewPart;
- public class TreeView extends ViewPart {
- public static final String ID = "view.TreeView"; //$NON-NLS-1$
- public TreeView() {
- }
- /**
- * Create contents of the view part.
- * @param parent
- */
- @Override
- public void createPartControl(Composite parent) {
- Composite container = new Composite(parent, SWT.NONE);
- container.setLayout(new FillLayout(SWT.HORIZONTAL));
- {
- Tree tree = new Tree(container, SWT.BORDER);
- TreeItem item = new TreeItem(tree, SWT.NONE);
- item.setText("测试");
- }
- createActions();
- initializeToolBar();
- initializeMenu();
- }
- /**
- * Create the actions.
- */
- private void createActions() {
- // Create the actions
- }
- /**
- * Initialize the toolbar.
- */
- private void initializeToolBar() {
- IToolBarManager toolbarManager = getViewSite().getActionBars().getToolBarManager();
- }
- /**
- * Initialize the menu.
- */
- private void initializeMenu() {
- IMenuManager menuManager = getViewSite().getActionBars().getMenuManager();
- }
- @Override
- public void setFocus() {
- // Set the focus
- }
- }
之后在plugin.xml里面添加:
- <extension
- point="org.eclipse.ui.views">
- <view
- class="com.view.TreeView"
- id="view.TreeView"
- name="New ViewPart">
- </view>
- </extension>
最后在Perspective.java文件里添加:
- import org.eclipse.ui.IPageLayout;
- import org.eclipse.ui.IPerspectiveFactory;
- import com.userdatamanager.view.TreeView;
- public class Perspective implements IPerspectiveFactory {
- public void createInitialLayout(IPageLayout layout) {
- String editorArea = layout.getEditorArea();
- //添加树视图
- layout.addView(TreeView.ID, IPageLayout.LEFT, 0.2f, editorArea);
- }
- }
添加成功的多个视图:
如果在其他地方获取View并打开View:
- //获取视图.此处传入的是视图ID.并不是包路径
- IViewPart part = (IViewPart)PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().findView("com.test.views.TestView");
- MyView view = (MyView)part;
- view.printHello();
- //打开视图.
- try {
- PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().showView("com.test.views.TestView");
- } catch (PartInitException e) {
- e.printStackTrace();
- }