`

RCP的EditorPart保存后焦点控制

阅读更多
from:http://blog.csdn.net/bee2518/archive/2007/09/21/1795390.aspx
今天为了实现在EditorPart中保存后,提示“是否继续增加”后,能够初始化数据并实现焦点移到指定TEXT中,必须扩展org.eclipse.ui.internal.SaveAction。

仅仅在doSave事件中做txLdlpNo.setFocus();是无效到的,查看源代码可以看到执行保存的代码如下:
IRunnableWithProgress progressOp = new IRunnableWithProgress() {
   public void run(IProgressMonitor monitor) {
    IProgressMonitor monitorWrap = new EventLoopProgressMonitor(monitor);
    saveable.doSave(monitorWrap); // 此处调用EditorPart.doSave();
   }
  };



IRunnableWithProgress中无法对EditorPart的控件焦点进行控制,浏览了一下SaveAction保存事件代码,发现在EditorPart没有提供保存后控制焦点的函数,决定在扩展org.eclipse.ui.internal.SaveAction,实现保存后对焦点的控制。实现代码如下:
public class CustomSaveAction extends SaveAction {

 public CustomSaveAction(IWorkbenchWindow window) {
  super(window);
 }

 public void run() {
  super.run();

//在此处扩展保存后设置默认焦点,其他不变
  IEditorPart part = getActiveEditor();
  part.setFocus();
 }

// 不破坏原来创建,模仿 ActionFactory 创建这个CustomSaveAction

public static final ActionFactory SAVE = new ActionFactory("save") {//$NON-NLS-1$

  /*
   * (non-Javadoc)
   *
   * @see org.eclipse.ui.actions.ActionFactory#create(org.eclipse.ui.IWorkbenchWindow)
   */
  public IWorkbenchAction create(IWorkbenchWindow window) {
   if (window == null) {
    throw new IllegalArgumentException();
   }
   IWorkbenchAction action = new CustomSaveAction(window);// 这个地方改为CustomSaveAction
   action.setId(getId());
   return action;
  }
 };

}


这样,在ApplicationActionBarAdvisor中创建保存action代码如下:
saveAction = CustomSaveAction.SAVE.create(window);
  register(saveAction);



通过以上改造,实现了焦点控制
分享到:
评论

相关推荐

    RCP-1500中文操作手册.pdf

    索尼公司生产的RCP-1500系列遥控面板(包括RCP-1500、RCP-1501和RCP-1530型号)是用于配置和控制演播室级及广播级摄像机的专业设备。这些设备提供了高级的操作便利性和功能的多样性,使得用户能够高效地进行摄影机的...

    rcp.tar.gz_NS2拥塞_congestion xcp_ns2_rcp.t_拥塞控制

    《RCP拥塞控制在NS-2中的实现与分析》 网络模拟器NS-2(Network Simulator 2)是一款广泛使用的开源工具,用于研究和测试网络协议与系统。在这个特定的场景中,我们关注的是RCP(Resource Control Protocol)拥塞...

    rcp的文本编辑器的实例

    完成编辑器的开发后,可以使用Eclipse的运行时工作台(Runtime Workbench)来测试和调试。确保编辑器能正确显示、编辑文本,且文件操作功能无误。 8. **发布和打包** 最后,如果需要将编辑器作为独立的RCP应用...

    RCP,RCP开发

    5. **安全控制**:OSGI提供细粒度的访问控制,保障了模块的安全性。 **RCP与OSGI结合** 在RCP中,OSGI作为底层的模块化框架,为RCP提供了动态加载和管理插件的能力。开发者可以通过创建OSGI Bundle来构建RCP插件,...

    RCP在线升级,RCP在线升级

    4. **执行升级**:用户启动RCP应用后,可以通过内置的更新检查功能检测到新版本。一旦发现可用更新,用户可以选择下载和安装。p2会处理依赖关系的解决,下载必要的文件,并在后台完成安装过程,通常不需要用户手动...

    rcp与spring集成的一个简单例子

    4. **注入Spring Bean**:在RCP组件(如ViewPart或EditorPart)中,我们可以使用`@Autowired`注解或者通过ApplicationContext的getBean()方法获取Spring管理的bean,将其注入到RCP组件中。 5. **处理事件和命令**:...

    职业健康安全风险控制计划表(RCP).docx

    ### 职业健康安全风险控制计划表(RCP)知识点详解 #### 一、文档概述 职业健康安全风险控制计划表(RCP)是用于管理施工现场潜在的职业健康和安全风险的重要文档。它列出了可能遇到的各种危险因素及其相应的预防和...

    eclipse 3.6 rcp 开发

    - 创建编辑器类继承自EditorPart。 - 实现createPartControl()和setInput()方法。 - 定义编辑器的输入类型和内容提供方式。 #### 7. 对话框 - **预定义的对话框**: - 提供了一些常用的对话框模板,如MessageBox...

    Eclipse Rcp

    Eclipse原本是一个Java IDE,由IBM捐献给开源社区后,其可扩展性和丰富的插件生态系统吸引了众多开发者。Eclipse插件机制使其不仅能支持Java开发,还能扩展支持其他语言,如C/C++,和实现非开发功能,比如音乐播放器...

    RCP弹出日期控件

    在IT领域,特别是软件开发中,RCP(Rich Client Platform)是一种基于Eclipse框架的应用程序开发模型,它允许开发者创建功能丰富的桌面应用程序。RCP弹出日期控件是这种环境中用于用户界面交互的一个重要组件,它...

    Eclipse RCP 软件打包发布方法

    Eclipse Rich Client Platform (RCP) 是一个强大的框架,用于构建桌面应用程序。它提供了一整套工具和功能,使得开发者可以构建出具有丰富用户界面的应用。在开发完成后,我们需要将这些应用打包并发布,以便用户...

    eclipse RCP mp3工程

    这表明项目的核心是利用Eclipse RCP的技术来处理MP3音频格式,可能涉及到解析MP3文件、播放控制、元数据处理等方面。 【压缩包子文件的文件名称列表】:MP3M-3.3.1.20071030,这个文件名可能代表了该工程的一个特定...

    rcp-1500.pdf

    索尼RCP-1500是一款高清系统摄像机控制面板,它是专门设计用来控制索尼高清摄像机及相关的视频处理单元(BPU)。这份英文说明书详细介绍了RCP-1500的操作方式,包括菜单设置、状态显示、文件管理、系统维护以及用户...

    Eclipse RCP开发教程

    创建完成后,开发者可以在 Eclipse 内部或者独立运行 RCP 应用,通过运行配置中的 "Launch an Eclipse application" 来启动程序,从而测试应用的基本功能。 2.3. 应用程序 VS 产品 应用程序(Application)是开发...

    rcp.zip_DEMO_RCP dialog_java rcp_rcp

    这个"rcp.zip_DEMO_RCP_dialog_java rcp_rcp"压缩包显然是一个针对RCP初学者的学习资源,包含了几个示例项目,帮助用户理解和实践RCP的基本概念和技术。 首先,我们要关注的是"demo_rcp_dialog"。在Java RCP中,...

    EclipseRcp 例子程序

    Eclipse RCP(Rich Client Platform)是一个开源框架,由Eclipse基金会开发,用于构建桌面应用程序。这个框架基于Java,提供了一套完整的工具集,包括插件系统、工作台管理、视图、编辑器、透视图等,使得开发者可以...

    RCP项目学习实例

    5. **模型-视图-控制器(MVC)**:RCP遵循MVC设计模式,理解如何分离业务逻辑、数据模型和用户界面,提高代码的可维护性和可扩展性。 6. **程序集成功能**:学习如何打包RCP应用程序,包括生成产品配置、创建可执行...

Global site tag (gtag.js) - Google Analytics