在纯e4应用程序中以编程方式重置透视图

时间:2019-01-22 17:00:12

标签: java eclipse-rcp rcp e4

我们想在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应用程序中重置透视图的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

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

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