最近学习和研究Eclipse RCP应用,顺便写了个资源管理器程序练练手,经过一段时间的摸索,总算是有了个初步的模样。本来打算起名叫JExplore的,毕竟是用Java来写的,可是网上现在JExplore这个名字简直已经臭大街了,考虑到这个资源管理器程序是基于SWT的,就叫做SExplore吧,嗯,名字就是个代号,姑且这么叫吧。
本程序重点在于研究和演示相关技术,功能嘛,根据需要慢慢添加就是了。好了,贴张图先:
本程序技术点如下:
1、读取文件系统目录,构成目录树;
参见FileSystemTree.java, FileSystemTreeContentProvider.java, FileSystemTreeLabelProvider.java
2、目录树节点上显示图标,从Swing的Image转换到SWT的Image;
参见ImageConverter.getSWTImageFromSwing()
3、真正实现树节点SelectChanged事件;
参见BaseTreeViewer.fireSelectionChanged()
4、双击树节点,打开或关闭目录;
参见DoubleClickTreeNode.mouseDoubleClick()和FileSystemTree.FileSystemTree()添加鼠标双击事件侦听器的代码;
5、单击不同的树节点,右边显示目录的详细列表,TreeViewer与Table控件的联动;
参见SExploreView.createPartControl()中相应代码和FileListTable.selectionChanged()
6、TreeViewer和Table控件之间有分隔条,可以拖动改变大小;
参见 SExploreView.createPartControl()中相应代码,主要是使用了Sash来实现的
7、缺省展开到TreeViewer的指定节点
参见 FileSystemTree.FileSystemTree()中展开节点部分的代码
8、缺省设定选择TreeViewer上的指定节点
参见 FileSystemTree.FileSystemTree()中选择C盘节点的代码
9、文件列表部分排序,先显示文件夹,再显示文件
参见FileListContentProvider.getElements()代码
10、基于XML文件,配置Table的属性
参见BaseTableViewer.java和TableParaser.java
11、时间、数字的格式化输出;
参见FileListLabelProvider.getColumnText()
注意事项:
1、需要拷贝datawindowDef.xml到D盘根目录下,因为代码为了省事,直接把文件列表Table的属性定义文件放到D盘根目录下了;
待添加功能:
1、文件列表,单击表头排序;
2、文件列表,双击文件夹可以进入下层目录,同时目录树也跟着变化;
3、文件列表,双击文件,使用系统缺省程序打开文件;
4、文件、文件夹的增删改功能;
5、单击右键,显示系统菜单;
6、文件、文件夹的查找功能;
7、增加菜单、工具条等;
8、其它,想到再说
已知问题:
1、对于Windows7,目录树显示库图标的时候,不是实际的图标样式;