2011-08-12 2 views
2

Eclipse 뷰를 프로그래밍 방식으로 업데이트하려면 어떻게해야합니까? (이것이 RSE에만 한정 될 필요는 없을 것이라고 생각합니다.)Eclipse 뷰 또는 RSE 파일 하위 시스템을 프로그래밍 방식으로 새로 고치는 방법은 무엇입니까?

배경 : 나는 이클립스에 Remote System Explorer (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 모두에서 뷰 또는 파일 하위 시스템을 새로 고치는 방법을 찾지 못했습니다. 나는 무엇을 놓쳤는가?

답변

2

구성한 컨테이너를 새로 고치려고하십니까? IOW, 당신이 쓴 글은 org.eclipse.rse.core.subsystems.AbstractResource입니까?

그래서,이 코드를하려고하면

...

ISystemRegistry registry = SystemStartHere.getSystemRegistry(); 

SystemResourceChangeEvent event = new SystemResourceChangeEvent(this, 
    ISystemResourceChangeEvents.EVENT_REFRESH, yoursubsystem); 

registry.fireEvent(event); 

자신의 자원 컨테이너 내부는 아니지만 자원 컨테이너의 개체, 개체와 SystemResourceChangeEvent 건설에 this을 대체 알고 있다면.

+0

"rfs"객체를 "yoursubsystem"매개 변수로 보내고 ISystemResourceChangeEvents.EVENT_REFRESH를 ISystemResourceChangeEvents.EVENT_REFRESH_SELECTED_PARENT로 전환하면 트릭이 실행됩니다 (단지 약간의 문제 만 있습니다. 이 이벤트 (EVENT_REFRESH_SELECTED_PARENT)는 가치가 떨어집니다 :/... 주위를 둘러 보는 방법에 대한 힌트가 있습니까? –

+0

[javadoc 's] (http://help.eclipse.org/indigo/topic/org.eclipse.rse.doc.isv /reference/api/org/eclipse/rse/core/events/ISystemResourceChangeEvents.html#EVENT_REFRESH_SELECTED_PARENT)는 '직접 선택 항목을 가져오고 EVENT_REFRESH 또는 EVENT_REFRESH_REMOTE'를 표시합니다. 내 코드는 EVENT_REFRESH 이벤트를 문제없이 사용합니다. –

+0

감사합니다. 음. , 문제는 내가 일반적으로 새 디렉토리를보기 위해 상위 폴더를 새로 고쳐야 할 때 현재 선택한 디렉토리에 파일이 있다는 것입니다. EVENT_REFRESH_SELECTED_PARENT를 (를) 사용하여 conv 지금 내가해야 할 현재 선택된 파일을 가져올 필요가 없기 때문에, 부모 폴더를 얻으려면 ... –

1

저는 RSE에 익숙하지 않지만 AFAIK는 가상 파일 시스템을 사용합니다. 즉, 상쾌한 정상적인 자원 API를 통해 수행 할 수 있습니다 의미, 뭔가 같은 : 이클립스의

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

파일 시스템 관리자가 변경된 수정 날짜에 대한 org.eclipse.core.filesystem.IFileInfo 당신의 EFS 고유의 구현을 확인합니다. 가상 파일 시스템이 올바른 파일 정보를 반환하는지 확인하십시오.

+0

이상한 ... 나는 어떤 ResourcesPlugin도 갖고 있지 않은 것 같습니다 (그 이름은 -o입니다). –

+0

org.eclipse.core.resources에 dependecy를 추가해야합니다. 이 묶음은 자원을위한 추상 레이어를 가지고있다. 하지만이 작업은 EFS 통합을 사용하는 경우에만 가능합니다.이 블로그 게시 -> http://tmober.blogspot.com/2007/04/target-management-m6-efs-and-webinar.html –

+0

아 ... 나는 수입 할 수있게 해준다. 내가 얼마나 멀리 볼 수 있는지 ... –

관련 문제