java如何在页面关闭后以编程方式调用EclipseF5刷新
我一直试图在eclipse中以编程方式调用refresh(F5),并得到一个NotHandledException,handler not found错误。非常感谢您的帮助
在我的类中:NewPreferencePage扩展PreferencePage实现IWorkbenchReferencePage 我有以下代码:
@Override
public void dispose() {
super.dispose();
final String COMMAND_ID = "org.eclipse.ui.file.refresh";
IHandlerService handlerService = PlatformUI.getWorkbench().getService(IHandlerService.class);
try {
handlerService.executeCommand(COMMAND_ID,null);
} catch (ExecutionException ex) {
ex.printStackTrace();
} catch (NotDefinedException ex) {
ex.printStackTrace();
} catch (NotEnabledException ex) {
ex.printStackTrace();
} catch (NotHandledException ex) {
ex.printStackTrace();
}
}
# 1 楼答案
你可以使用
IResource#refreshLocal()
,它有(几乎)相同的效果。以下是单个文件的示例,但您可以用相同的方式执行项目:有关更多信息,请参见FAQ When should I use refreshLocal?
# 2 楼答案
我刚刚遇到了一个类似的问题,我想在这里分享我的见解
背景:我正在使用一个GMF编辑器,希望以编程方式添加一些节点和边。“正确的”方法是添加一些create node和element命令,这将同时创建模型元素和视图,但为了快速原型化解决方案,我只添加了模型元素,让GMF自己计算节点。这对节点来说效果很好,但需要使用F5刷新编辑器
我查看了
plugin.xml
搜索F5键绑定。不过,调用该命令并不起作用,因为它会检查选择,而且在执行我的实际命令(创建元素的命令)时,选择显然是null
。但是,在检查之后,该命令实际执行的操作对我有效(刷新图表并显示新创建元素的所有节点和边):或更短:
当然,也就是说,假设(a)你有一个GMF编辑器,(b)你有权访问模型元素和/或编辑部分,最好是图表本身。你可以这样做: