首页 > 解决方案 > 在纯 e4 应用程序中以编程方式重置透视图

问题描述

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

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

1 https://www.eclipse.org/forums/index.php/t/210165/
将所有观点复制到Snippets. 这意味着在Perspective StackSnippets中维护不适合大型 RCP 应用程序的副本。

2 如何在 Eclipse RCP E4 而不是 E3
Calling中以编程方式重置透视图resetPerspectiveModel。这似乎没有任何作用。另一位用户也评论提到了这一点。

3 如何重置 Eclipse e4 RCP 应用程序的透视图?
第一个答案提到使用 RCP 3 代码。
第二个答案删除当前视角,添加它,然后调用切换到当前视角。这无济于事。

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

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

标签: javaeclipse-rcprcpe4

解决方案


设置首选项,重新启动应用程序,在启动时检测首选项并添加 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();
    }
}

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


推荐阅读