【问题标题】:Reset perspective programmatically in a pure e4 application在纯 e4 应用程序中以编程方式重置透视图
【发布时间】:2019-06-16 04:58:10
【问题描述】:

我们希望在 Eclipse RCP 4 应用程序中以编程方式重置透视图。我一直在寻找如何做到这一点的例子,但似乎没有一个整洁的方法可以做到这一点。

以下是我们看过的几个示例:

1 https://www.eclipse.org/forums/index.php/t/210165/
将所有透视图复制到Snippets。这意味着维护 Perspective StackSnippets 中的重复项,这不适合大型 RCP 应用程序。

2 How to reset perspective programmaticly in Eclipse RCP E4 not E3
致电resetPerspectiveModel。这似乎没有任何作用。另一位用户也评论提到了这一点。

3 How do I reset perspective for Eclipse e4 RCP application?
第一个答案提到使用 RCP 3 代码。
第二个答案删除当前视角,添加它,然后调用切换到当前视角。这无济于事。

我们一直在尝试这些方法的变体,但无法将其重置。

在纯 e4 应用程序中重置透视图的正确方法是什么?

【问题讨论】:

  • 我还没有看到任何其他解决方案。一个激进的方法是在启动时使用 -clearPersistedState 将整个应用程序模型重置为原始模型。
  • Eclipse 错误404231 对此进行了长时间(未解决)的讨论以及为什么它很困难。
  • 那么目前实现这一目标的最佳方法是什么?示例 1?

标签: java eclipse-rcp rcp e4


【解决方案1】:

设置首选项、重新启动应用程序、在启动时检测首选项并添加 clearPersistedState 系统属性是我发现以一种棘手的方式执行此操作的唯一方法。它可以工作,但最好在不重新启动的情况下进行重置。 不好的是它会重置整个模型。

在您的“重置透视图”处理程序中使用此代码:

@Execute
public void restart(IWorkbench application, @Preference IEclipsePreferences preferences) {
    preferences.putBoolean("PLEASE_RESET_ON_STARTUP", true);
    preferences.flush();
    application.restart();
}

在你的生命周期管理器类中有这样的东西:

@PostContextCreate
public void doTheTrick(@Preference IEclipsePreferences preferences) {
    if (preferences.get("PLEASE_RESET_ON_STARTUP", "false").equals("true") {
        System.setProperty(IWorkbench.CLEAR_PERSISTED_STATE, "true");
        preferences.remove("PLEASE_RESET_ON_STARTUP");
        preferences.flush();
    }
}

也许您还需要添加一些异常处理。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-01-19
    • 2013-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-08
    • 1970-01-01
    相关资源
    最近更新 更多