java - 在纯 e4 应用程序中以编程方式重置透视图
问题描述
我们想在 Eclipse RCP 4 应用程序中以编程方式重置透视图。我一直在寻找如何做到这一点的例子,但似乎没有一个整洁的方法可以做到这一点。
以下是我们看过的几个例子:
1 https://www.eclipse.org/forums/index.php/t/210165/
将所有观点复制到Snippets
. 这意味着在Perspective Stack
和Snippets
中维护不适合大型 RCP 应用程序的副本。
2 如何在 Eclipse RCP E4 而不是 E3
Calling中以编程方式重置透视图resetPerspectiveModel
。这似乎没有任何作用。另一位用户也评论提到了这一点。
3 如何重置 Eclipse e4 RCP 应用程序的透视图?
第一个答案提到使用 RCP 3 代码。
第二个答案删除当前视角,添加它,然后调用切换到当前视角。这无济于事。
我们一直在尝试每种方法的变体,但无法将其重置。
在纯 e4 应用程序中重置透视图的正确方法是什么?
解决方案
设置首选项,重新启动应用程序,在启动时检测首选项并添加 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();
}
}
也许您还需要添加一些异常处理。
推荐阅读
- html - 如何将图像排列在同一行?
- python - 在列表中获取所有递归结果
- c# - 如何将文件循环转换为 LINQ?
- android - 使用 Android network-security-config 在 Xamarin 应用程序中启动时出现空引用异常
- reactjs - 材料表 React 的选择和远程数据分页
- python - Python - 1 行 if-else 语句的正确语法
- swift - 如何“唯一识别” iPhone 设备?由于不推荐使用 UDID 并且在为同一供应商重新安装应用程序后 UUID 会发生变化?
- typescript - 实例化 dialogflow.IntentsClient() 时出现 Google-gax 问题
- sql - 连接两个表,检查第一个表中的一条记录是否与第二个表中的多条记录匹配
- javascript - 日期显示不正确的年份