2017-11-16 15 views
0

RCP에서 두 가지 다른 뷰를 만들었습니다. 이제는 다른보기에 자동으로 반영되도록 일식보기에서 수행 된 변경 사항을 원합니다.두 개의 다른 Eclipse 뷰에서 변경 내용을 프로그래밍 방식으로 업데이트하는 방법

저는 RCP 플러그인 개발에 완전히 익숙하지 않습니다. 누구든지 위의 요구 사항을 구현하는 데 도움을 줄 수 있습니까?

1 일) :

+0

http://www.vogella.com/tutorials/Eclipse4EventSystem/article.html을 참조하십시오. – howlger

+0

@howlger : 안녕하세요, e4 구현을 사용하지 않아도됩니다. – Kumar

+0

e4는 5 년 전에 출시 된 Eclipse 4.x를 의미합니다. 물론 Eclipse 플랫폼에서 아무 것도 사용하지 않고 구현할 수 있습니다. – howlger

답변

0

난 당신이 내가 아는 한, 워크 벤치 부품을 연결하는 세 가지 방법이 있습니다, 이클립스 3 플랫폼을 사용하고 가정 (. 내 심판 "이클립스 리치 클라이언트 플랫폼"두 번째 버전의 P255입니다) 부품 변경 사항을 등록하려면

첫 번째보기에서 예를 들어, ISelectionProvider를 사용하십시오 : 다른 부분은 선택 서비스 사용에 구조적 변화에 노출

public void createPartControl(Composite parent) { 
    int style = SWT.SINGLE | SWT.H_SCROLL | SWT.V_SCROLL; 
    viewer = new TableViewer(parent, style); 
    getSite().setSelectionProvider(viewer); 
    ... 
} 

변경 사항을 청취하려면을 (때 더 리스너를 등록을 취소하는 것을 잊지 마세요 더 이상 필요하다) ISel을 사용한다. ectionListener는 두 번째보기에서 예를 들면 :

public class ChaptersView extends ViewPart { 
    private TableViewer viewer; 
    ISelectionListener listener = new ISelectionListener() { 
    public void selectionChanged(IWorkbenchPart part, ISelection sel) { 
     if (!(sel instanceof IStructuredSelection)) 
      return; 
     IStructuredSelection ss = (IStructuredSelection) sel; 
     Object o = ss.getFirstElement(); 
     if (o instanceof Book) 
      viewer.setInput(ss.size()==1 ? o : null); 
    } 
    }; 
    public void createPartControl(Composite parent) { 
    getSite().getPage().addSelectionListener(listener); 
    } 
    public void dispose() { 
    getSite().getPage().removeSelectionListener(listener); 
    } 
} 

이러한 예는 here에서 온다.

당신은 어딘가에 IPartListener2을 구현하고 활성 워크 벤치 윈도우의 활성 페이지를 사용하여 부품 청취자에게이 리스너를 추가해야합니다

2) 일부 청취자를 사용하여 개폐 등의 이벤트를 부분을 듣거나 숨기려면 더 이상 필요하지 않을 때

workbenchWindow().getActivePage().addPartListener(IPartListener2); 

는 청취자의 등록을 취소하는 것을 잊지하지 마십시오 :

workbenchWindow().getActivePage().removePartListener(IPartListener2); 

3) 당신은 자신과의 대화를 구현할 수 있습니다 메커니즘을 사용하지만 부품 간 커플 링이 너무 강하게 나타날 수 있습니다.