2012-05-07 2 views
2

내 자신의 문제보기를 만들려고합니다.
다음은 tutorial이며 모두 정상적으로 작동합니다.자신의 상호 작용이있는 사용자 지정 표식보기

DoubleClickListener 또는 이와 비슷한 것을 추가 할 수 있습니까?
목록에서 실행되는 사용자 작업에 대해 대응하고 싶습니다.

모든 조언을 주셔서 감사합니다. 여기

답변

0

나는 해결책이 아닌 최고의 하나,하지만 허용 방법을 발견 : 당신은 트리를 가지고, 당신은 당신이 원하는 리스너를 추가 할 수 있습니다, 여기에 조각입니다.
ViewPart SelectionService을 사용하고 SelectionListener을 새로 등록하십시오.

내 솔루션은 문제가 발생한보기에서만 선택을 허용합니다. 이벤트를 구분하는 더 좋은 방법이있을 수 있습니다.

site.getWorkbenchWindow().getSelectionService().addSelectionListener(new ISelectionListener() { 
    @Override 
    public void selectionChanged(IWorkbenchPart part, ISelection selection) { 
     IStructuredSelection s = (IStructuredSelection) selection; 

     if (s.getFirstElement() instanceof MarkerItem) { 
      MarkerItem marker = (MarkerItem) s.getFirstElement(); 
      if (marker != null && marker.getMarker() != null) { 
       IMarker iMarker = marker.getMarker(); 

       // More Code here ... 
      } 
     } 
    } 
}); 
0

내가 할 것 인 것이다 : 상위 복합있을 것이다

public void createPartControl(final Composite parent)를 재정 의하여. parent.getChildren()을 호출하면 사용 가능한 컨트롤을 반복 할 수 있습니다. ExtendedMarkersView "default"컨트롤은 treeViewer 인 MarkersTreeViewer이므로 컨트롤이 트리가됩니다.

@Override 
public void createPartControl(final Composite parent) { 
    super.createPartControl(parent); 

    for (final Control control : parent.getChildren()) { 
     if (!(control instanceof Tree)) { 
      continue; 
     } 

     tree = (Tree) control; 

     final Listener[] listeners = tree.getListeners(SWT.DefaultSelection); 
     if (listeners != null) { 
      for (final Listener listener : listeners) { 
       tree.removeListener(SWT.DefaultSelection, listener); 
      } 
     } 
     tree.addMouseListener(new MouseAdapter() { 

      @Override 
      public void mouseDoubleClick(final MouseEvent e) { 
       if (e.widget instanceof Tree) { 
        final Tree tree = (Tree) e.widget; 

        // do whatever you want 
       } 
      } 

     }); 
    } 
} 
+0

답변 해 주셔서 감사합니다. 필자의 경우 클래스는 MarkerSupportView를 확장하고 createPartControl 메서드를 덮어 쓸 수 없으므로 사용할 수 없습니다. – CSchulz

+0

ExtendedMarkersView를 확장하는 MarkerSupportView를 확장하면서 동일한 작업을 수행합니다. 문제는 내부 패키지에 있다는 것입니다. 그러나 다른 사람이 똑같은 작업을 수행 할 때보 다 훌륭한 아이디어를 얻었을 때 가장 좋은 방법입니다. 이것이 지금까지이 요구 사항을 해결하기 위해 찾은 유일한 방법입니다. –

+0

SelectionService를 사용하여 해결 방법을 찾았습니다. 내 답변을 참조하십시오. :) 그것은 최선의 방법은 아닙니다 ... – CSchulz

관련 문제