eclipse_RCP添加视图

来源:互联网 发布:西安数据恢复公司 编辑:程序博客网 时间:2024/06/07 12:59

源文件:http://blog.csdn.net/lyq19870515/article/details/9346921

想要在RCP里添加视图 那就必须先建立视图:

[java] view plaincopyprint?在CODE上查看代码片派生到我的代码片
  1. package com.view;  
  2.   
  3. import org.eclipse.jface.action.IMenuManager;  
  4. import org.eclipse.jface.action.IToolBarManager;  
  5. import org.eclipse.swt.SWT;  
  6. import org.eclipse.swt.layout.FillLayout;  
  7. import org.eclipse.swt.widgets.Composite;  
  8. import org.eclipse.swt.widgets.Tree;  
  9. import org.eclipse.swt.widgets.TreeItem;  
  10. import org.eclipse.ui.part.ViewPart;  
  11.   
  12. public class TreeView extends ViewPart {  
  13.   
  14.     public static final String ID = "view.TreeView"//$NON-NLS-1$  
  15.   
  16.     public TreeView() {  
  17.     }  
  18.   
  19.     /** 
  20.      * Create contents of the view part. 
  21.      * @param parent 
  22.      */  
  23.     @Override  
  24.     public void createPartControl(Composite parent) {  
  25.         Composite container = new Composite(parent, SWT.NONE);  
  26.         container.setLayout(new FillLayout(SWT.HORIZONTAL));  
  27.         {  
  28.             Tree tree = new Tree(container, SWT.BORDER);  
  29.             TreeItem item = new TreeItem(tree, SWT.NONE);  
  30.             item.setText("测试");  
  31.         }  
  32.           
  33.           
  34.         createActions();  
  35.         initializeToolBar();  
  36.         initializeMenu();  
  37.     }  
  38.   
  39.     /** 
  40.      * Create the actions. 
  41.      */  
  42.     private void createActions() {  
  43.         // Create the actions  
  44.     }  
  45.   
  46.     /** 
  47.      * Initialize the toolbar. 
  48.      */  
  49.     private void initializeToolBar() {  
  50.         IToolBarManager toolbarManager = getViewSite().getActionBars().getToolBarManager();  
  51.     }  
  52.   
  53.     /** 
  54.      * Initialize the menu. 
  55.      */  
  56.     private void initializeMenu() {  
  57.         IMenuManager menuManager = getViewSite().getActionBars().getMenuManager();  
  58.     }  
  59.   
  60.     @Override  
  61.     public void setFocus() {  
  62.         // Set the focus  
  63.     }  
  64.   
  65. }  
以上是建立视图的代码, 是用软件生成的.

之后在plugin.xml里面添加:

[html] view plaincopyprint?在CODE上查看代码片派生到我的代码片
  1. <extension  
  2.       point="org.eclipse.ui.views">  
  3.    <view  
  4.          class="com.view.TreeView"  
  5.          id="view.TreeView"  
  6.          name="New ViewPart">  
  7.    </view>  
  8. </extension>  

最后在Perspective.java文件里添加:

[java] view plaincopyprint?在CODE上查看代码片派生到我的代码片
  1. import org.eclipse.ui.IPageLayout;  
  2. import org.eclipse.ui.IPerspectiveFactory;  
  3. import com.userdatamanager.view.TreeView;  
  4.   
  5. public class Perspective implements IPerspectiveFactory {  
  6.   
  7.     public void createInitialLayout(IPageLayout layout) {  
  8.         String editorArea = layout.getEditorArea();  
  9.         //添加树视图  
  10.         layout.addView(TreeView.ID, IPageLayout.LEFT, 0.2f, editorArea);  
  11.     }  
  12. }  

添加成功的多个视图:




如果在其他地方获取View并打开View:

[java] view plaincopyprint?在CODE上查看代码片派生到我的代码片
  1. //获取视图.此处传入的是视图ID.并不是包路径  
  2. IViewPart part = (IViewPart)PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().findView("com.test.views.TestView");  
  3. MyView view = (MyView)part;  
  4. view.printHello();  
  5.   
  6. //打开视图.  
  7. try {  
  8.     PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().showView("com.test.views.TestView");  
  9. catch (PartInitException e) {  
  10.     e.printStackTrace();  
  11. }  
0 0
原创粉丝点击