编辑器和视图标题的关闭操作特指标题栏
最右方的关闭按钮操作。一般来说编辑器的关闭事件都是自己默认的实现,比如继承了
ISavePart2
的编辑器在
Dirty
属性为
true
时点击这个按钮会出现确定信息框,这个是由
ISavePart2 .
promptToSaveOnClose
()
实现的,一般情况下重写这个函数即可。这种情况下编辑器标题上会出现一个“
*
”号代表当前编辑器有未保存的修改。
多讲一下编辑器默认的保存机制,在工具栏和菜单中有个菜单“
Save
”,这个菜单可以自动根据当前编辑器是否需要保存来切换状态。若不需要保存,则不可用,反
之则可以使用。这个菜单的状态与编辑器的
Ditry
属性密切相关联。
同时
ISaveablePart
和
ISaveablePart2
中的一些
Save
方法都与它相关。
假如用户点击关闭按钮时需要始终出现退出提示,这种情况下
promptToSaveOnClose()
就不能用了,因为它也与
Dirty
属性相关。
这里提供一个可选方案,还是与
PresentationFactory
有关。
关闭按钮位于
TabFolder
上,
可以考虑给它添加一个监听器——
TabFolderListener
,
它负责对
TabFolderEvent.EVENT_CLOSE
时间进
行监听。
private static void hookTabFolder(final IStackPresentationSite site,
TabbedStackPresentation result) {
AbstractTabFolder tabFolder = result.getTabFolder();
Object objOldTabFolderListener = null;
try {
Field[] fields = result.getClass().getDeclaredFields();
for (int i = 0; i < fields.length; i++) {
if (fields[i].getName().equals("tabFolderListener")) {
fields[i].setAccessible(true);
objOldTabFolderListener = fields[i].get(result);
break;
}
}
} catch (IllegalAccessException e) {
}
final TabFolderListener oldTabFolderListener = (TabFolderListener) objOldTabFolderListener;
TabFolderListener tabFolderListener = new TabFolderListener() {
@Override
public void handleEvent(TabFolderEvent e) {
switch (e.type) {
case TabFolderEvent.EVENT_CLOSE:
IPresentablePart part = (IPresentablePart) e.tab.getData();
boolean confirm = handleClose(site, part);
if (confirm) {
if (oldTabFolderListener != null)
oldTabFolderListener.handleEvent(e);
}
break;
default:
if (oldTabFolderListener != null)
oldTabFolderListener.handleEvent(e);
break;
}
}
};
tabFolder.removeListener(oldTabFolderListener);
tabFolder.addListener(tabFolderListener);
}
调用
hookTabFolder
()
方法:
public StackPresentation createViewPresentation(Composite parent,
IStackPresentationSite site) {
TabbedStackPresentation result = (TabbedStackPresentation) super
.createEditorPresentation(parent, site);
hookTabFolder(site, result);
return result;
}
除了
EVENT_CLOSE
事
件以外,其他事件都照旧处理,具体怎么提示自己实现
handleClose()
函
数。类推一下,
TabFolderEvent
还有其他的事件,理论上这
些事件都可以按照这种方法重写。
public static final int EVENT_PANE_MENU = 1;
public static final int EVENT_HIDE_TOOLBAR = 2;
public static final int EVENT_SHOW_TOOLBAR = 3;
public static final int EVENT_RESTORE = 4;
public static final int EVENT_MINIMIZE = 5;
public static final int EVENT_CLOSE = 6;
public static final int EVENT_MAXIMIZE = 7;
public static final int EVENT_TAB_SELECTED = 8;
public static final int EVENT_GIVE_FOCUS_TO_PART = 9;
public static final int EVENT_DRAG_START = 10;
public static final int EVENT_SHOW_LIST = 11;
public static final int EVENT_SYSTEM_MENU = 12;
public static final int EVENT_PREFERRED_SIZE = 13;
最后别忘了使用自定义的
PresentationFactory
。
分享到:
相关推荐
透视图是Eclipse RCP中的一个重要概念,它定义了工作台窗口中各视图和编辑器的布局。默认情况下,Eclipse RCP提供了标准的透视图切换方式,但开发者可以根据需求进行自定义。下面我们将逐步解析这个过程: 1. **...
通过RCP编辑器实例的项目代码,你可以学习到如何将Eclipse的强大功能集成到自己的应用程序中,从而提高开发效率和用户体验。不断研究和实践,你将能够熟练掌握Eclipse RCP的开发技巧,构建出功能丰富的桌面应用程序...
`plugin.xml`配置文件是Eclipse插件的核心,它包含了插件的元数据、视图、编辑器、命令、快捷键、菜单和工具栏的定义。 3. **plugin.xml配置**:在`plugin.xml`文件中,开发者可以使用XML语法来声明菜单和工具栏。...
2. **Perspective**:透视图定义了工作台的布局和可见性,可以根据用户的任务或工作流来组织和显示不同的视图和编辑器。 3. **View**:视图是工作台中的独立组件,它们通常显示特定类型的信息或提供某种功能。例如...
Eclipse RCP程序通常由多个组件构成,包括视图(Views)、编辑器(Editors)、透视图(Perspectives)、菜单和工具栏等。"eclipse rcp经典程序"这个资源很可能包含了完整的示例代码,帮助开发者了解并实践这些关键...
5. **透视图(Perspectives)**:透视图是RCP中组织视图和编辑器的方式,允许用户根据任务或工作流切换不同的布局。图片可能包含多个透视图的示例,如编程透视图、调试透视图等。 6. **插件开发**:RCP的插件开发是...
视图在RCP中提供辅助功能,帮助用户更好地理解和操作编辑器中的内容。视图可以显示文档结构、属性信息或其他相关数据,如Outline视图,用于显示当前编辑文件的结构。视图可以独立于编辑器存在,也可以与编辑器一起...
6. **命令与快捷键**:Eclipse RCP提供了命令框架,允许自定义用户操作,如菜单项和快捷键。例子程序会展示如何定义、注册和绑定这些命令。 7. **服务(Service)**:Eclipse RCP支持服务导向的架构,通过服务,...
- **自定义视图和编辑器**:根据需求创建具有特定功能的视图和编辑器,例如,支持拖放操作、图表展示等。 4. **学习资源** - **"RCP程序设计.pdf"**:可能包含对RCP设计原理的深入解释,以及如何创建和配置RCP...
透视图是Eclipse IDE和基于RCP的应用程序中的一个重要组成部分,它定义了工作台窗口中显示的视图、编辑器和其他组件的布局。在RCP开发中,透视图允许用户根据他们的工作需求定制和组织界面。 在描述中提到的博文...
Eclipse RCP对象(如视图和编辑器)都有自己的生命周期,它们会经历创建、初始化、激活、停用和销毁等阶段。你需要正确处理这些生命周期事件,以确保插件的稳定性和性能。 部署方面,Eclipse RCP应用通常打包为一个...
3. **定义视图和编辑器**:根据应用需求,开发自定义视图和编辑器,这通常涉及编写SWT(Standard Widget Toolkit)和JFace代码。 4. **构建菜单和工具栏**:通过编程或使用图形化工具设计应用的菜单和工具栏,将...
3. 定义透视图:根据需求,我们可以自定义透视图,将视图和编辑器组织成合适的布局。 4. 实现命令:Eclipse RCP的命令模型允许我们定义和绑定用户操作,比如菜单项和工具栏按钮,这样可以统一处理用户交互。 5. 集成...
在RCP中,开发者可以创建自定义的工作台视图、编辑器、透视图,以及通过插件系统进行功能扩展。Eclipse RCP的核心设计理念是“模型-视图-控制器”(MVC)模式,这使得应用程序的结构清晰,易于维护和扩展。 **主要...
视图和编辑器是 RCP 应用中展示数据和执行操作的主要组件。视图通常用于显示辅助信息,而编辑器用于处理和编辑主要内容。开发者可以自定义视图和编辑器,实现特定的用户界面和功能。 **6. 对话框(Dialogs)** ...
这个例子中,我们可以想象CRM应用可能包含多个视图,如客户列表视图、订单视图、联系人视图等,这些视图可能通过堆栈布局或网格布局进行组织,以便用户可以快速访问和操作。 其次,透视图(Perspective)是RCP界面...
自定义编辑器的开发通常涉及实现`IEditorPart`接口,以及处理打开、保存、关闭文件等操作。 2. **模型-视图-控制器(MVC)模式**:Eclipse RCP应用通常遵循MVC设计模式,其中模型表示数据,视图负责展示数据,而...
RCP允许开发者利用Eclipse的强大功能,如插件系统、工作台管理、视图和编辑器,来创建自定义的、模块化的用户界面。在本例子中,我们看到的是一个基于RCP实现的**客户关系管理(CRM)**系统。 CRM系统主要用于企业...
2. **基本视图和编辑器的实现**:示例可能包含自定义视图和编辑器的代码,展示如何创建和集成到工作台中。 3. **菜单和工具栏的创建**:Eclipse RCP允许开发者定义自定义菜单和工具栏项,这在示例中会被详细解释。 ...