为RCP程序添加导航Navigator视图(转鹏)

为RCP程序添加导航Navigator视图
为了在RCP中使用eclipse自带的导航视图,又是折腾了半天,总算把它弄出来了!
 
首先在透视图Perspective类中添加如下内容:
 
// 左侧视图
IFolderLayout leftTopFolder = layout.createFolder("LEFTTOP", IPageLayout.LEFT, 0.24f, editorArea);
// leftTopFolder.addView(Navigate.ID);
leftTopFolder.addView(IPageLayout.ID_RES_NAV);
 
启动程序这时候发现导航视图出来了,心中不禁一阵高兴,搞了半天发现根本没办法使用,不显示任何内容。
接着又在ApplicationWorkbenchAdvisor类的createWorkbenchWindowAdvisor()方法中添加了如下内容:
 
//要org.eclipse.ui.views和org.eclipse.ui.ide的依赖
WorkbenchAdapterBuilder.registerAdapters();
 
靠他居然出来了!不过还是没有差了么一点点,有些图标丢失.百度了一下,这回关于这个问题的文章还真不少。
还是在ApplicationWorkbenchAdvisor类中添加如下代码:
 
public void postStartup() {
  try {
   IWorkbenchPage activePage = this.getWorkbenchConfigurer()
     .getWorkbench().getActiveWorkbenchWindow().getActivePage();
   IViewPart view = activePage
     .showView("org.eclipse.ui.views.ResourceNavigator");
   ResourceNavigator navigator = ((ResourceNavigator) view);
   navigator.getViewer()
     .setLabelProvider(new NavigatorLabelProvider());
  } catch (Exception e) {
   //
  }
 }
 
接着创建新类NavigatorLabelProvider.java
 
public class NavigatorLabelProvider extends LabelProvider {
 public Image getImage(Object element) {
  ImageDescriptor img0 = ImageDescriptor.createFromFile(ImageShop.class,
    "icons/treeview_.gif");
  ImageDescriptor img1 = ImageDescriptor.createFromFile(ImageShop.class,
    "icons/subprocess.gif");
  ImageDescriptor img2 = ImageDescriptor.createFromFile(ImageShop.class,
    "icons/route.gif");
  Image image = null;
  String text = element.toString();
  System.out.println(text);
  if (text.startsWith("P/", 0)) {
   image = ImageShop.getInstance().getImage(img0);
  }
  if (text.startsWith("F/", 0)) {
   image = ImageShop.getInstance().getImage(img1);
  }
  if (text.startsWith("L/", 0)) {
   image = ImageShop.getInstance().getImage(img2);
  }
  return image;
 }
 public String getText(Object element) {
  String text = element.toString();
  text = text.substring(2, text.length());
  int pos = text.indexOf("/");
  if (pos == -1) {
   return text;
  } else {
   if (text.endsWith(".project")) {
    return "YourName";
   } else {
    text = text.substring(pos + 1, text.length());
   }
  }
  return text;
 }
}
 
OK!到这里基本满足要求,不过总是有个.project的东西在那里,咋瞅咋不顺,只好再添加一个过滤器来摆平他。
找到plugin.xml文件加入:
 
<extension
         point="org.eclipse.ui.ide.resourceFilters">
      <filter
            pattern="*.project"
            selected="true"/>
</extension>
 
大功搞成!看了一下time :刚23:29,再看一部电影吧。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值