- 浏览: 375468 次
- 性别:
- 来自: 上海
最新评论
-
heshifk:
我今天用这个也遇到了一个问题,当焦点在别的组件上面,也添加了快 ...
SWT 添加全局的监听 -
回归蔚蓝:
好文,归纳的太准确了
Groovy闭包深入学习 -
零度弥合:
写的真好,赞赞赞。
Groovy闭包深入学习 -
yuxg:
顶
Java在Eclipse环境下调用Subclipse接口完成SVN操作(附源码) -
zk1878:
不错,好文
Groovy闭包深入学习
一 相关知识
org.eclipse.compare 插件项目,用于进行文本、源码比对的一个插件,提供了一个Editor或Dialog可方便调用。
org.eclipse.compare.CompareEditorInput.CompareEditorInput 是用于给Compare Editor 的EditorInput, 需要自己实现。
org.eclipse.compare.CompareConfiguration 对CompareEditor的配置。是否允许左边内容被修改,或是否允许右边内容被修改;左右两边的label,image等。
org.eclipse.compare.ITypedElement 接口,本意为指代有图片、名称、类型的元素。而在Compare中,为一个基本的对比单元。
org.eclipse.compare.IEditableContent
接口,是否可编辑的元素
org.eclipse.compare.IModificationDate 接口,修改时间
org.eclipse.compare.IStreamContentAccessor 获得内容的接口,内容是以InputStream流的方式获得。
org.eclipse.compare.IContentChangeNotifier 内容变化的通知接口
org.eclipse.compare.BufferedContent 抽象类,实现了 org.eclipse.compare.IStreamContentAccessor 和 org.eclipse.compare.IContentChangeNotifier 2个接口
在BufferedContent中持有了一个byte[], 表示缓存有界面上修改的内容,当然,最后需要你在CompareEditorInupt中将修改后的byte[]内容保存(比如保存至文件等)
二 代码
(1)解决项目依赖
添加对org.eclipse.compare 的依赖
(2)定义一个表示比对的元素
可继承与BufferedContent,并实现ITypeElement 等接口。主要代码如下:
class CompareItem extends BufferedContent implements ITypedElement, IModificationDate, IEditableContent { private String fileName; private long time; CompareItem(String fileName) { this.fileName = fileName; this.time = System.currentTimeMillis(); } /** * @see org.eclipse.compare.BufferedContent#createStream() */ protected InputStream createStream() throws CoreException { try { return new FileInputStream(new File(fileName)); } catch (FileNotFoundException e) { e.printStackTrace(); } return new ByteArrayInputStream(new byte[0]); } /** * @see org.eclipse.compare.IModificationDate#getModificationDate() */ public long getModificationDate() { return time; } /** * @see org.eclipse.compare.ITypedElement#getImage() */ public Image getImage() { return CompareUI.DESC_CTOOL_NEXT.createImage(); } /** * @see org.eclipse.compare.ITypedElement#getName() */ public String getName() { return fileName; } /** * @see org.eclipse.compare.ITypedElement#getType() */ public String getType() { return ITypedElement.TEXT_TYPE; } /** * @see org.eclipse.compare.IEditableContent#isEditable() */ public boolean isEditable() { return true; } /** * @see org.eclipse.compare.IEditableContent#replace(org.eclipse.compare.ITypedElement, org.eclipse.compare.ITypedElement) */ public ITypedElement replace(ITypedElement dest, ITypedElement src) { return null; } public void writeFile() { this.writeFile(this.fileName, this.getContent()); } private void writeFile(String fileName, byte[] newContent) { FileOutputStream fos = null; try { File file = new File(fileName); if (file.exists()) { file.delete(); } file.createNewFile(); fos = new FileOutputStream(file); fos.write(newContent); fos.flush(); } catch (IOException e) { e.printStackTrace(); } finally { try { fos.close(); } catch (IOException e) { e.printStackTrace(); } fos = null; } } }
(3)配置CompareConfiguration
CompareConfiguration config = new CompareConfiguration(); config.setProperty(CompareConfiguration.SHOW_PSEUDO_CONFLICTS, Boolean.FALSE); // left config.setLeftEditable(true); config.setLeftLabel("Left"); // right config.setRightEditable(true); config.setRightLabel("Right");
(4)定义CompareEditorInput
CompareEditorInput editorInput = new CompareEditorInput(config) { CompareItem left = new CompareItem("C:/A.txt"); CompareItem right = new CompareItem("C:/Inject.log"); @Override protected Object prepareInput(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException { return new DiffNode(null, Differencer.CONFLICTING, null, left, right); } @Override public void saveChanges(IProgressMonitor pm) throws CoreException { super.saveChanges(pm); left.writeFile(); right.writeFile(); } }; editorInput.setTitle("文件比较");
(5)弹出Compare Editor或Dialog
CompareUI.openCompareEditor(editorInput); // 打开对比Editor CompareUI.openCompareDialog(editorInput); // 弹出对比Dialog
三 效果
(1)Editor效果
(2)Dialog效果
四 其他
(1) 代码是基于Eclipse插件项目的email Template 创建的, 可直接使用附件中的源码替换到默认生成的类。
(2) 代码演示了在Eclipse RCP环境下使用Compare功能。
- MessagePopupAction.zip (1.6 KB)
- 描述: 源码
- 下载次数: 289
评论
我按照您的代码去实现,但左右两边出不来啊.
link就是一个链接文件,比如你在Eclipse里,new一个File,新建向导有个高级选项,链接到文件系统中的文件,这样就好像在工作区间内创建了一个文件,但实际上是在文件系统的其他位置。
这个文件也会在Eclipse的文件树上显示,也可以和工作区间内的其他文件比较。
你指的link是什么意思?
但可以把外面的文件link进来比较。
发表评论
-
SWT的图片叠加效果
2009-09-23 10:58 3932一. 核心类说明 ImageDescr ... -
TreeViewer的ContentProvider详解,以及Lazy载入
2009-08-08 17:30 6002为了实现这样的效果: ... -
SWT多线程
2009-07-15 23:42 5029一:基本概念 在SWT内,有一个UI主线程的概念,自定义的线程 ... -
去掉plugin_customization.ini文件,在代码中实现配置功能
2009-06-03 09:59 1525一. 常规做法 ... -
StyledText 的Traverse,VerifyKey,MouseListener分析
2009-05-06 10:36 2697目标功能: 随便焦点的跳转(键盘的上下左右操作;键盘的 ... -
Java在Eclipse环境下调用Subclipse接口完成SVN操作(附源码)
2009-04-19 19:16 7904Java在Eclipse环境下调用Subclipse接口完成S ... -
JFace的FieldDecoration / DecoratedField 使用详解
2009-04-07 13:01 1383关键代码: IControlCreator cont ... -
RCP异常:The editor class could not be instantiated
2009-03-30 16:26 0Unable to create this part due ... -
NightLabs 开源的swt pdf viewer (Eclipse plugin)
2009-03-26 12:37 1293http://wiki.nightlabs.de/en/PDF ... -
有关于《OSGI进阶》中的org.eclipse.equinox.servlet.api.jar
2009-02-12 09:56 3662具体可以参见JavaEye问答频道: http://www.i ... -
Eclipse在创建Plug-in项目时的Target platform选项的说明
2009-01-15 11:48 6977Target PlatForm 插件的运行平台. Eclip ... -
eclipse中的线程
2009-01-09 19:23 1877见: http://www.eclipseworld.org/ ... -
SWT 如何选中Spinner中所有的数字
2008-12-29 11:30 2486http://dev.eclipse.org/newslist ... -
SWT 添加全局的监听
2008-12-03 12:26 4952Display 有这么一个方法: public void ... -
SWT得到调用ActiveX所需的控件标识符
2008-11-23 16:51 2910怎么使用ole,网上别人的代码已经很多了. 下面是说怎么得到o ... -
Text,Combo添加内容辅助功能[代码提示] [可下载代码]
2008-11-16 23:08 35151. 类 a) ContentProp ... -
SWT byte[]与Image的相互转换
2008-11-06 17:01 45561. 从byte[]得到Image private stat ... -
JFACE 用好StructuredViewer [可下载源代码] - 列表类型的动态控件创建
2008-11-06 10:41 1838功能: 1. 类似一个TableViewer的功能. 2. 可 ... -
AWT, SWING, SWT, JFACE 比较
2008-11-03 10:36 1895AWT Abstract Windows Toolkit(AW ... -
SWT StyledText试用 [可下载项目代码]
2008-10-13 09:57 3776效果图 和 源代码: 效果图 源代码 点击下载. 注: 代 ...
相关推荐
通过嵌入 GNU 工具链(包括但不限于 GCC 编译器、GDB 调试器等),Eclipse for ARM 提供了一整套用于编写、编译、调试和部署针对 ARM 平台的应用程序的功能。 #### 二、安装指南 ##### 1. 开发环境需求 - 操作...
同时,提供借用申请和审批功能。 3. 借用申请界面:用户填写借用信息,如日期、时间、教室选择等,提交后生成待审批的借用申请。 4. 审批界面:管理员查看待审批的借用申请,可以批准或拒绝。 三、VB编程核心技术 1...
本毕业设计的项目——教室借用管理系统,正是利用这一技术来实现对学校教室资源的有效管理,旨在提高教学资源利用率,方便师生进行教室预约。 一、系统架构 该系统通常采用三层架构设计,包括表现层(View)、业务...
尽管没有提供完整的表格内容,但我们可以从这个标题推断出一些可能的知识点,这些知识点涉及借用流程、资产管理以及IT支持等方面。 ### 笔记本借用登记表知识点 1. **资产管理**:在企业或组织中,资产管理是IT...
6. **统计报表**:系统应提供统计功能,如借用物品的总量、各类型物品的借用频率、未归还物品清单等。ASP可以通过数据分析和图表展示,帮助管理者了解借用情况。 7. **权限控制**:不同角色的用户(如普通用户、...
C#借用AnyCAD实现C#对3D物体的显示.7z
【简单物品借用管理系统】是一个基于ASP(Active Server Pages)技术和Access数据库的应用程序,主要用于实现对物品借用流程的简便管理。ASP是一种服务器端脚本环境,它允许开发人员使用HTML、VBScript或JScript等...
在IT行业中,C#是一种广泛使用的编程语言,尤其在开发Windows桌面应用、游戏以及与.NET框架集成的应用程序时。...在实际项目中,你还可以与其他C#库或服务集成,比如Unity3D的游戏引擎,实现更丰富的功能和交互。
本项目通过Matlab实现了一种一维小区定向信道锁定借用(BDCL,Bandwidth-Directed Channel Locking)的仿真,这是一种动态信道分配策略,旨在优化频率复用,减少信道阻塞率。同时,该仿真还对比了BDCL与传统的固定...
C#借用AnyCAD实现C#对3D物体的显示 - 副本.7z
物资借用系统可直接应用到学院及社团部门,方便物资监管,实现高效借用。因此我们可以把握住现在这个还未实现的新领域,创造一个方便学生的新系统。 3.弱势:我们目前面临潜在性威胁如学校可能会实现的系统以及个别...
《图书借用管理系统》是一款基于Delphi编程语言与Access数据库技术开发的图书管理软件,它集成了进销存的核心功能,并特别关注图书的借阅流程。该系统提供了全面的图书管理解决方案,包括书籍入库、图书借用、图书...
首先,合同规定了借用期限、借用用途、借用期满、借用期内的责任和义务等方面的内容。例如,借用期限从某年某月某日至某年某月某日,借用用途为教育使用等。 其次,合同还规定了借用方的义务和责任,例如借用方应...
5. **实验室借用功能**:这部分功能允许用户申请借用实验室,并可能包括申请审批流程,确保实验室的合理使用。系统可能需要记录借用时间、借用者信息以及借用状态(如待审批、已批准、已取消等)。 6. **实验室安全...
基于SpringBoot的校园一卡通系统的设计与实现,java项目。 eclipse和idea都能打开运行。 推荐环境配置:eclipse/idea jdk1.8 maven mysql 前端技术:vue,Ajax,Json 后端技术:SpringBoot,MyBatis 本系统共分为两个...
在实际操作中,可以使用电子表格软件(如Microsoft Excel或Google Sheets)来创建和管理这样的登记表,以实现自动计算、过滤、排序等功能,进一步提升管理效率。此外,结合条形码或RFID技术,可以实现自动化工具追踪...
通过以上这些技术,开发者可以构建出一个高效且用户友好的【基于Android的教室查询借用系统】,实现教室资源的优化管理和便捷借用流程。同时,系统的设计和实现也需要考虑性能优化、安全性和适配不同的Android设备。
在实现这些功能时,开发者可能使用了Java的多线程技术来处理并发请求,保证系统的响应速度。同时,数据库技术(如MySQL或Oracle)用于存储用户信息和教室借用记录,确保数据的安全性和持久性。 总的来说,【校园...