package com.xxx.dev;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.jface.action.IMenuManager;
import org.eclipse.jface.action.IToolBarManager;
import org.eclipse.jface.viewers.ILabelProvider;
import org.eclipse.jface.viewers.ILabelProviderListener;
import org.eclipse.jface.viewers.ITreeContentProvider;
import org.eclipse.jface.viewers.LabelProviderChangedEvent;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.ui.ISharedImages;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.part.ViewPart;
public class FileViewer extends ViewPart {
private TreeViewer tv;
public static final String ID = "com.xxx.dev.FileViewer"; //$NON-NLS-1$
/**
* 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());
tv = new TreeViewer(container, SWT.BORDER);
tv.setContentProvider(new FileTreeContentProvider());
// 添加标签管理器
tv.setLabelProvider(new FileTreeLabelProvider());
// 设置treeviewer的输入
tv.setInput("root");
//
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
}
}
class FileTreeContentProvider implements ITreeContentProvider {
public Object[] getChildren(Object arg0) {
// 返回树的下一级节点
return ((File) arg0).listFiles();
}
public Object getParent(Object arg0) {
// 返回树的上一级节点
return ((File) arg0).getParentFile();
}
public boolean hasChildren(Object arg0) {
Object[] bj = getChildren(arg0);
// 判断树是否有下一级节点,true为在节点显示"+"信息
return bj == null ? false : bj.length > 0;
}
public Object[] getElements(Object arg0) {
// 打印出树的输入信息,通常用户可以通过输入信息构建树
System.out.println(arg0);
// File.listRoots()作为树的根节点
return File.listRoots();
}
@Override
public void dispose() {
}
@Override
public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
}
}
class FileTreeLabelProvider implements ILabelProvider {
private List listeners;
private String file;
private String dir;
boolean preserveCase;
public FileTreeLabelProvider() {
listeners = new ArrayList();
// 添加文件和目录的图标
file = ISharedImages.IMG_OBJ_ELEMENT;
dir = ISharedImages.IMG_OBJ_FOLDER;
}
public void setPreserveCase(boolean preserveCase) {
this.preserveCase = preserveCase;
// 触发事件,重新得到显示标签
LabelProviderChangedEvent event = new LabelProviderChangedEvent(this);
for (int i = 0, n = listeners.size(); i < n; i++) {
ILabelProviderListener ilpl = (ILabelProviderListener) listeners
.get(i);
ilpl.labelProviderChanged(event);
}
}
public Image getImage(Object arg0) {
// 返回目录或文件的图标
return ((File) arg0).isDirectory() ? PlatformUI.getWorkbench().getSharedImages().getImage(dir): PlatformUI.getWorkbench().getSharedImages().getImage(file);
}
public String getText(Object arg0) {
String text = ((File) arg0).getName();
if (text.length() == 0) {
text = ((File) arg0).getPath();
}
// 返回目录或文件的文件名
return preserveCase ? text : text.toUpperCase();
}
public void addListener(ILabelProviderListener arg0) {
// 添加监听器
listeners.add(arg0);
}
public void dispose() {
}
public boolean isLabelProperty(Object arg0, String arg1) {
return false;
}
public void removeListener(ILabelProviderListener arg0) {
// 删除监听器
listeners.remove(arg0);
}
}
分享到:
相关推荐
在这个特定的项目中,"NetBeans RCP - 使用 Node & ExplorerManager 结合 BeanTreeView 编写的一个磁盘文件树 Build20080119",开发者构建了一个能够展示计算机硬盘上文件和目录结构的可视化工具。 **Node**: 在...
本篇文章将详细介绍如何将RCP产品打包成exe文件,以及在这个过程中可能遇到的关键知识点。 首先,我们需要了解RCP应用的基本结构。RCP应用是由多个插件组成的,每个插件包含了特定的功能模块。这些插件依赖于...
5. **打包与部署**:将RCP应用打包成可执行文件,供用户安装和使用。 总的来说,RCP和OSGI的结合提供了一种高效、灵活且易于维护的桌面应用开发方式,开发者可以充分利用它们的优势来构建复杂、功能丰富的应用程序...
RCP(Rich Client Platform)则是Eclipse提供的一种构建桌面应用程序的框架。在RCP应用中,Equinox p2提供了版本检测和自动更新的功能,使得开发者能够轻松地管理软件的生命周期,确保用户始终能够使用最新版本。 ...
首先,我们需要理解什么是.RCP文件。.RCP是“Reality Computing Point Cloud”(现实计算点云)的缩写,这种文件格式通常由激光扫描仪或其他三维捕获设备生成,包含大量三维坐标点,这些点反映了实地环境的精确几何...
Eclipse Rich Client Platform (RCP) 是一个强大的框架,用于构建桌面应用程序。它提供了一整套工具和功能,使得开发者可以构建出具有丰富用户界面的应用。在开发完成后,我们需要将这些应用打包并发布,以便用户...
**RCP(Rich Client Platform)**是Eclipse框架下的一个重要组成部分,它提供了一种构建桌面应用程序的平台。RCP允许开发者利用Java语言和Eclipse插件体系架构来创建功能丰富的、可扩展的、且具有现代图形用户界面的...
索尼公司生产的RCP-1500系列遥控面板(包括RCP-1500、RCP-1501和RCP-1530型号)是用于配置和控制演播室级及广播级摄像机的专业设备。这些设备提供了高级的操作便利性和功能的多样性,使得用户能够高效地进行摄影机的...
RCP(Rich Client Platform)是Eclipse开源框架的一部分,它为构建桌面应用程序提供了一个灵活的平台。RCP在线升级是指在不卸载原有版本的情况下,通过网络更新来安装RCP应用的新版本,以确保用户始终能够使用最新...
也可以通过XML描述符文件(比如plugin.xml)定义动作,并在运行时由RCP解析和实例化。 除了上述内容,RCP还涉及视图(Views)、透视图(Perspectives)、服务(Services)、工作流(Workbench Workflows)、本地化...
【标题】"eclipse RCP mp3工程"指的是一个基于Eclipse Rich Client Platform(RCP)构建的专门处理MP3音频文件的应用程序。Eclipse RCP是一个强大的开发框架,允许开发者创建桌面应用,它提供了丰富的用户界面组件和...
**RCP(Rich Client Platform)**是Eclipse框架下的一个重要组成部分,全称为丰富客户端平台。它为开发桌面应用程序提供了一个可扩展的、模块化的、基于组件的架构。Eclipse RCP使得开发者能够利用Java和Eclipse插件...
**RCP(Rich Client Platform)开发实例源码详解** RCP,全称为Rich Client Platform,是Eclipse基金会推出的一种客户端应用程序开发框架。它为开发者提供了一个可扩展的平台,用于构建功能丰富的桌面应用,具有...
【标题】:“rcp for java one” 指的是在...通常在这样的会议上,文件可能包含演示文稿、代码示例、讲义或者会议录音,这些都是进一步学习和理解RCP在JavaOne上讨论内容的宝贵资料。建议查看这个文件以获取更多细节。
Eclipse RCP(Rich Client Platform)是Eclipse框架下的一个组件,它允许开发者构建功能丰富的桌面应用程序。这个压缩包中的“ECLIPSE RCP项目源程序”包含了使用Eclipse RCP开发的一个项目的完整源代码,并且有中文...
通过巧妙地组合和定制这两个组件,开发者能够创建出满足各种需求的用户界面,无论是数据浏览、编辑,还是复杂的业务逻辑处理。`com.free.view.treeview`这个文件很可能包含了一个树形VIEWER的实现,这为学习和理解...
2. 选择富客户机应用程序支持:在项目属性中,确保勾选了“富客户机应用程序支持”。 3. 选择模板:在向导中选择一个简单的模板,例如“无透视图的空插件”以方便初学者理解。 4. 设置应用程序标题:在向导的后续...