为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);
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);
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());
.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");
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;
}
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;
}
}
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>
point="org.eclipse.ui.ide.resourceFilters">
<filter
pattern="*.project"
selected="true"/>
</extension>
大功搞成!看了一下time :刚23:29,再看一部电影吧。