2

Eclipse ビューをプログラムで更新するにはどうすればよいですか? (これは RSE に固有のものである必要はないのではないでしょうか?)。

背景: 私は Eclipse 用のリモート システム エクスプローラー (RSE)を使用しています。リモート ホスト上に新しいファイルを作成する SSH 経由でリモート コマンドを実行して、いくつかのことを行っています。リモート システム ビューの 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でも、ビューまたはファイルサブシステムを更新する方法を見つけられませんでした。私は何を逃したのですか?

4

2 に答える 2

2

構築したコンテナを更新することを検討していますか? 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構造内をオブジェクトに置き換えます。

于 2011-08-12T13:16:47.800 に答える
1

私はRSEに精通していませんが、知る限り、仮想ファイルシステムを使用しています。つまり、次のような通常の Resource-API を介して更新を行うことができます。

IFolder folder = ResourcesPlugin.getWorkspace().getRoot().getFolder(new Path("path/to/theparent/folder/on/remote/system"));
        folder.refreshLocal(IResource.DEPTH_INFINITE, new NullProgressMonitor());

Eclipse のファイルシステム マネージャーは、EFS 固有の の実装をチェックorg.eclipse.core.filesystem.IFileInfoして、変更日を確認します。仮想ファイルシステムが正しいファイル情報を返すことを確認してください

于 2011-08-12T12:12:55.563 に答える