【问题标题】:Custom message when closing a part in Eclipse RCP 4在 Eclipse RCP 4 中关闭部件时的自定义消息
【发布时间】:2014-03-03 20:39:09
【问题描述】:

我们有以下问题:

在我们的 Eclipse RCP 4 应用程序中有多个部分,并且这些部分是可关闭的。当用户关闭零件时,应该有一个自定义弹出窗口(取决于某些内部零件状态),询问用户是否真的要关闭零件。 在 Eclipse RCP 4 中实现似乎并不容易,或者我们刚刚完全监督了一些事情。 我将简要介绍一下我们尝试过的事情:

  • 在部件中使用带有@persist 方法的可污染对象。虽然问题是,我们不想要这个标准的 eclipse 保存对话框。那么有没有办法覆盖它?
  • public int promptToSaveOnClose():这似乎很有希望,但不适用于 Eclipse 4,或者有没有办法以这种方式集成它?比较:http://e-rcp.blogspot.de/2007/09/prevent-that-rcp-editor-is-closed.html
  • 我们最后一次尝试是集成一个自定义部件监听器,简单示例如下所示:

    partService.addPartListener(new IPartListener() {           
       public void partVisible(MPart part) {                
       }
    
        public void partHidden(MPart part) {
            partService.showPart(part, PartState.ACTIVATE);
        }
    
        public void partDeactivated(MPart part) {
    
        }
    
        public void partBroughtToTop(MPart part) {
    
        }
    
        public void partActivated(MPart part) {
    
        }
    });
    

这样做的问题是我们陷入了一个连续的循环。在最后一条评论中发布了类似的内容:Detect tab close in Eclipse editor

所以我可以写更多关于这个问题的内容,但我认为目前就足够了。如果您需要更多输入,请给我一个提示。 感谢您的帮助。

【问题讨论】:

    标签: java eclipse-rcp e4


    【解决方案1】:

    保存提示由在包含MPartMWindow 的上下文中注册的ISaveHandler 生成。您可以编写自己的ISaveHandler 并在窗口上下文中设置以替换默认值。

    您可能还想在窗口上下文中查看IWindowCloseHandler

    【讨论】:

      【解决方案2】:

      感谢 greg,这有帮助,我能够在用户关闭部件时更改弹出窗口。以下是我所做工作的简短描述:

      • 在需要时使用 MDirtyable 将部件标记为脏。
      • 创建一个实现 ISaveHandler 的自定义保存处理程序(当部件关闭时调用保存方法)。向此处理程序添加附加逻辑(例如自定义消息对话框)
      • 在应用程序启动时注册这个处理程序(我只是选择了一个在启动时调用的方法):

         @Inject
         private MWindow window;
         ...
         ISaveHandler saveHandler = new CustomSaveHandler(shell);
         window.getContext().set(ISaveHandler.class, saveHandler);
        

      请注意,遗憾的是,通过模型处理器进行注册并不那么容易,因为模型处理器被调用得太早了。 (看一下:http://www.eclipse.org/forums/index.php/t/369989/

      当整个窗口关闭时才需要 IWindowCloseHandler,虽然这不是我们的要求:)。

      【讨论】:

      • 可以使用事件代理订阅生命周期类中的应用启动完成事件UIEvents.UILifeCycle.APP_STARTUP_COMPLETE(如果有的话)。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-04
      • 1970-01-01
      • 2012-03-10
      • 1970-01-01
      • 2012-05-18
      • 1970-01-01
      相关资源
      最近更新 更多