- 浏览: 987579 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
运乃强谦:
老哥,你确定这个wsdl 地址 可以访问?
[CXF] Server与Client实现方式五:HTTPS -
wangyudong:
由CXF实现的微服务需要有比较好的工具去测试RESTful A ...
[CXF] Server与Client实现方式四:JMS -
dengmiao:
JAXB学习三 (验证) -
panamera:
你好。可以提供maven pom配置是怎么配置的?不知道你使用 ...
[CXF] Server与Client实现方式四:JMS -
u010221220:
请问楼主一二三部分的代码都应该放在哪个函数体中。
使用JDI监听Java程序运行
Editor中嵌入Editor
---Eclipse系列(刘刚)
一、背景
有时按照功能的需要,我们希望能在自己的Editor中嵌入其他已经存在的Editor,比如JavaEditor,比如XMLEditor,以方便的使用这些Editor已经有的一些方便特性。
二、思路
粗看来,好像无计可施,实际不然。如果你曾经实现过自己的MultiEditor,并且在其他的某一页中是直接引用的其他的Editor,那么你肯定记得:在MultiEditor的addPage()系列方法中,有一个方法是:
public int addPage(IEditorPart editor, IEditorInput input);
这个方法表明,可以直接把一个Editor做为一个page加到MultiEditor中去。所以我们的实现可以参考MultiEditor。
我们可以找到MultiEditor中,addPage(editor,input)部分的源码:
public void addPage(int index, IEditorPart editor, IEditorInput input)
throws PartInitException {
IEditorSite site = createSite(editor);
// call init first so that if an exception is thrown, we have created no
// new widgets
editor.init(site, input);
Composite parent2 = new Composite(getContainer(),
getOrientation(editor));
parent2.setLayout(new FillLayout());
editor.createPartControl(parent2);
……
}
看上部分代码,我们可以知道:要把一个editor A作为某个editor B的一部分加进去,我们首先需要有一个A的对象,然后这个A对象要调用init(site,input)方法,最后要创建一个面板,调用A对象的createPartControl(parent)方法,以在这个面板上画出A的界面。
三、实现
有了以上思路,下面我们就可以在自己的editor中嵌入其他的editor了。首先我们要定义一个自己的editor,这里省略过程。然后我定义了一个名为ComboEditor的Editor。我要在这其中嵌入JavaEditor和TextEditor。
我一开始设想代码如下(在createPartControl()方法里):
public void createPartControl(Composite parent) {
try {
parent.setLayout(new GridLayout());
// TODO Auto-generated method stub
TextEditor textEditor = new TextEditor();
textEditor.init(site, input);
Composite parent2 = new Composite(parent,
textEditor.getOrientation());
parent2.setLayout(new FillLayout());
parent2.setLayoutData(new GridData(GridData.FILL_BOTH));
textEditor.createPartControl(parent2);
CompilationUnitEditor javaEditor = new CompilationUnitEditor();
javaEditor.init(site, input);
Composite parent3 = new Composite(parent,
javaEditor.getOrientation());
parent3.setLayout(new FillLayout());
parent3.setLayoutData(new GridData(GridData.FILL_BOTH));
javaEditor.createPartControl(parent3);
} catch (PartInitException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
其中,init(site,input)方法如下:
private IEditorSite site;
private IEditorInput input;
@Override
public void init(IEditorSite site, IEditorInput input)
throws PartInitException {
this.site = site;
this.input = input;
setSite(site);
setInput(input);
}
需要注意的是:我们在init(site,input)方法中,需要显式的调用setSite(site)和setInput(input),否则在打开editor的时候,总是会有site不对或者是input为空的错误。
四、测试
最后我们可以试一下效果:
Figure 1
五、后记
如果需要实现dirty功能,我们需要监听每一个editor的变化。可以实现如下:
首先增加监听:
textEditor.addPropertyListener(this);
javaEditor.addPropertyListener(this);
这里,我们让我们的editor实现IPropertyListener接口。
然后就是实现接口的方法,如下:
public void propertyChanged(Object source, int propId) {
firePropertyChange(propId);
}
最后实现isDirty()方法:
private List<IEditorPart> nestedEditors = new
ArrayList<IEditorPart>();
public boolean isDirty() {
// use nestedEditors to avoid SWT requests; see bug 12996
for (IEditorPart part:nestedEditors) {
if (part.isDirty()) {
return true;
}
}
return false;
}
其中nestedEditors中保存了所有的内嵌的editor。
评论
你想了解什么?哪方面有问题?
就是那两个 editor如何自由拖放大小,如何关闭其中一个editor
自由拖放大小和关闭,这个就需要你自己处理吧。比如说你用一个SashForm,那应该就可以拖放大小了吧。
至于关闭,你可以加一个关闭按钮在上面,比如说每个editor也用一个CTabFolder去显示,然后把关闭按钮加上,就可以了。
不知道是不是你想要的。
你想了解什么?哪方面有问题?
就是那两个 editor如何自由拖放大小,如何关闭其中一个editor
你想了解什么?哪方面有问题?
发表评论
-
在OSGI容器Equinox中嵌入HttpServer
2011-12-27 18:01 10747简单介绍一下如何在一个osgi的bundle中内嵌使用http ... -
GEF中用鼠标移动画布
2011-12-27 13:37 1357第一步 增加Palette项: moveTool = n ... -
在Eclipse中使用Maven
2011-09-29 13:41 1267上一篇讲了Maven的基础知识,这一篇讲怎么在Eclipse里 ... -
增加Table的Column右键菜单
2011-03-15 15:55 1472table.addListener(SWT.MenuDete ... -
RGB与HSB之间的相互转换
2010-10-29 15:14 12347[引用:] [ http://www.missyuan.com ... -
给Table和Tree的Header加右键菜单
2010-10-29 11:26 2517通常,如果不做特殊处理的话,在表头(树头,以下统称表头)的上点 ... -
给Editor加上Annotation
2010-10-27 17:27 2759要自定义Annotation,需要实现以下扩展点: “ ... -
org.eclipse.ui.navigator.linkHelper的使用
2010-08-06 15:43 2409org.eclipse.ui.navigator.linkHe ... -
让表项支持鼠标拖动移位,并自动滚动滚动条
2010-04-07 11:43 2678设想我们有一个表,表中有很多数据(多到竖起滚动条至少要出现)。 ... -
Eclipse截屏插件
2010-01-19 15:59 2729闲来无事,就写了一个截屏插件,见附件,直接放在eclipse的 ... -
Eclipse取得路径的方法
2009-11-27 10:30 1904从插件中获得绝对路径: TestPlug ... -
实现自己的团队协作客户端一
2009-11-12 15:04 1420在Eclipse里自带了团队协 ... -
扩展Eclipse Java编辑器的链接功能
2009-09-09 09:35 3611在JDT中,可以在一个类,或者是方法,或者是变量上进行跳转。这 ... -
添加监听到EMF对象、加密保存
2009-08-14 10:10 984一、可以注册监听来获取EMF模型改变事件,例如: pu ... -
使用Tab键实现表格的跳转
2009-08-12 21:29 2988在Excel中,如果按Tab键,则焦点会在相邻的方格中不断的跳 ... -
StyledCellLabelProvider的应用
2009-08-11 16:47 2272昨天写了EditingSupport的应用,可以方便的编辑Ta ... -
EditingSupport的应用
2009-08-10 15:20 2965Eclipse3.3中提供了一个EditingSupport类 ... -
合理的自定义扩展点
2009-06-26 01:43 1799Eclipse中提供了各种各样的用于扩展Eclipse功能的 ... -
关键字高亮插件
2009-06-26 00:59 1925在eclipse中,如果用Ctrl+F来进行查找,它只会一个一 ... -
置窗口于显示器中央
2009-05-06 09:46 922要把窗口置于显示器的中央,也是很容易的。如下: ...
相关推荐
在信息安全竞赛或逆向工程场景中,组织者可能会将关键信息(如“flag”)嵌入到图片或其他非文本文件中,参赛者需要通过各种技术手段来揭示这些信息。010Editor提供了直接打开和分析二进制文件的能力,包括图像文件...
4. **Ace - Embedding Ace.html**:这章专注于如何将AceEditor嵌入到网页中,包括基本的HTML和JavaScript代码示例,以及如何在动态创建的元素中使用AceEditor。 5. **Ace - Syntax Highlighter.html**:AceEditor的...
描述中提到的“jpg,zip,rar,pdf,swf,flv,exe”等文件类型,都是010Editor模板可能涉及的领域: 1. **jpg**:JPEG图像文件格式,模板可能帮助用户解析图片元数据或者特定的JPEG编码结构。 2. **zip**和**rar**:这两...
### easyUI Datagrid 控件中实现单列内嵌入多个控件的方法 #### 一、概述 在使用easyUI框架时,我们经常会遇到需要在`datagrid`控件的某一列中嵌入多个输入控件的需求。这样的设计可以极大地方便用户进行数据的...
4. a.php:这是PHP(Hypertext Preprocessor)文件,是一种广泛使用的开源脚本语言,尤其适用于Web开发并可嵌入到HTML中。PHP文件可以在服务器端执行,生成动态网页内容。 5. editor:这个文件没有扩展名,可能是...
同时,通过生成的JavaScript代码,时序图还可以直接嵌入到网页中,实现了跨平台的共享。 总的来说,Wavedrom Editor 2.4.2是一个高效、灵活的时序图绘制工具,尤其适合软件工程师、系统架构师以及任何需要展示时序...
-使用嵌入或非嵌入字体添加文本对象。 -插入行或其它简单的图形对象。 -插入 bitmap 格式的图像。 -从页面中删除任意对象。-改变对象的属性。 -可撤消任意操作。-在不同 PDF 文件间拷贝粘贴任意对象。 -在 ...
-使用嵌入或非嵌入字体添加文本对象。 -插入行或其它简单的图形对象。 -插入 bitmap 格式的图像。 -从页面中删除任意对象。-改变对象的属性。 -可撤消任意操作。-在不同 PDF 文件间拷贝粘贴任意对象。 -在 ...
CHM Editor编辑器允许用户在这样的结构中导航,并对各个部分进行编辑。 2. CHM Editor编辑器功能: - **内容编辑**:用户可以添加、删除或修改CHM文件中的HTML页面,调整链接和目录结构。 - **索引构建**:支持...
在Java开发环境中,froalaEditor通常与Spring MVC框架集成,以实现更高效、更灵活的后端处理。 在描述中提到,froalaEditor已经具备了上传文件、视频和图片的能力。这涉及到以下几个关键知识点: 1. **富文本编辑...
3. **多媒体集成**:除了文字编辑,eWeb Editor 3.8 还支持插入音频、视频等多媒体元素,用户可以直接嵌入在线媒体资源,或者上传本地文件,丰富网页内容的表现形式。 4. **表格与列表**:对于数据展示,编辑器提供...
这种技术通常用于在图像文件中嵌入额外的信息,而不会明显改变图像的外观。010Editor通过其强大的二进制分析功能,可以检测和提取这些隐藏的数据,对于网络安全分析、数据恢复和数字取证等领域有着重要的应用。 ...
它的设计目标是使开发者能够轻松地在 Vue 应用中嵌入一个功能完备的编辑器,且无需过多关注底层实现细节。 集成 vue-html5-editor 首先需要确保你的项目已经安装了 Vue.js。如果你还没有安装,可以通过 npm 或 yarn...
同时,用户还可以通过复制代码的方式将时序图嵌入网页或其他文档中。 5. **跨平台**:虽然这里提供的是Windows 64位版本,但Wavedrom Editor本质上是一个Web应用,理论上可以在任何支持浏览器的设备上运行,只需...
然而,"kindeditor-form-editor"插件则进一步增强了这些功能,使用户能够创建包含输入框、选择框、复选框、下拉菜单等在内的各种表单元素,从而在文本内容中集成数据收集或交互性元素。 在工作流程设计中,表单编辑...
PDFeditor能够帮助用户高效地去除这些水印,无论是背景上的还是嵌入文字间的,都能有效地清除,使文档内容清晰可见,方便进一步编辑。 在文字编辑方面,PDFeditor提供了强大的功能。用户可以直接选中PDF文档中的...
5. **版本兼容**:Amplify Shader Editor通常会保持与最新Unity版本的兼容,确保用户能在最新的开发环境中使用。 6. **资源管理**:能够方便地导入和管理纹理、颜色和其他资源,将它们应用到Shader中。 7. **脚本...
它的核心特性在于其可嵌入性,能够无缝整合到各种内容管理系统(CMS)、博客和其他标准的Web开发框架中,提供了丰富的文本编辑功能,极大地提升了用户体验。 在v0.20.16版本中,Aloha Editor主要关注以下几点: 1....
总结来说,这个“很小很简易的WYSIWYG Editor”是一个适合在网络环境中快速编辑和展示文本内容的工具,其轻量化和易用性的特点使得它能够方便地嵌入到各种Web应用中。通过对“SimpleEditor”文件的深入研究,我们...