如何以编程方式更新 Eclipse View ? (我想这可能不需要特定于 RSE?)。
背景:我使用 Remote System Explorer (RSE)对于 Eclipse,通过 SSH 执行远程命令来做一些事情,这会在远程主机上创建新文件。我意识到远程系统 View 中的 SFTP 文件列表不会自动更新以显示新创建的文件。
到目前为止,我已经设法获得了相关的观点,如下所示:
IWorkbench workbench = PlatformUI.getWorkbench();
IViewRegistry viewReg = workbench.getViewRegistry();
IViewDescriptor[] views = viewReg.getViews();
for (IViewDescriptor view : views) {
String viewID = view.getId();
System.out.println("View ID: " + viewID);
if (viewID.equals("org.eclipse.rse.ui.view.systemView")) {
// Do something with the view here
}
}
...为了可能做一些特定于 RSE 的事情,我尝试获取 RemoteFileSubSystem:
IRemoteFileSubSystem rfss = RemoteFileUtility.getFileSubSystem(HPCUtils.getApplication().getHPCHost());
...但无论是在 ViewDescriptor 对象还是 FileSubSystem 中,我都找到了刷新 View 或文件子系统的任何方法。我错过了什么?
最佳答案
您是否希望刷新您构建的容器? IOW,您编写的一个扩展了 org.eclipse.rse.core.subsystems.AbstractResource
的类?
如果是这样,试试这个代码......
ISystemRegistry registry = SystemStartHere.getSystemRegistry();
SystemResourceChangeEvent event = new SystemResourceChangeEvent(this,
ISystemResourceChangeEvents.EVENT_REFRESH, yoursubsystem);
registry.fireEvent(event);
如果您不在自己的资源容器中,但知道资源容器的对象,请替换
this
在 SystemResourceChangeEvent
与对象的构造。
关于java - 如何以编程方式刷新 Eclipse View 或 RSE 文件子系统?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7039349/