내 자신의 문제보기를 만들려고합니다.
다음은 tutorial이며 모두 정상적으로 작동합니다.자신의 상호 작용이있는 사용자 지정 표식보기
DoubleClickListener 또는 이와 비슷한 것을 추가 할 수 있습니까?
목록에서 실행되는 사용자 작업에 대해 대응하고 싶습니다.
모든 조언을 주셔서 감사합니다. 여기
내 자신의 문제보기를 만들려고합니다.
다음은 tutorial이며 모두 정상적으로 작동합니다.자신의 상호 작용이있는 사용자 지정 표식보기
DoubleClickListener 또는 이와 비슷한 것을 추가 할 수 있습니까?
목록에서 실행되는 사용자 작업에 대해 대응하고 싶습니다.
모든 조언을 주셔서 감사합니다. 여기
나는 해결책이 아닌 최고의 하나,하지만 허용 방법을 발견 : 당신은 트리를 가지고, 당신은 당신이 원하는 리스너를 추가 할 수 있습니다, 여기에 조각입니다.
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 ...
}
}
}
});
내가 할 것 인 것이다 : 상위 복합있을 것이다
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
}
}
});
}
}
답변 해 주셔서 감사합니다. 필자의 경우 클래스는 MarkerSupportView를 확장하고 createPartControl 메서드를 덮어 쓸 수 없으므로 사용할 수 없습니다. – CSchulz
ExtendedMarkersView를 확장하는 MarkerSupportView를 확장하면서 동일한 작업을 수행합니다. 문제는 내부 패키지에 있다는 것입니다. 그러나 다른 사람이 똑같은 작업을 수행 할 때보 다 훌륭한 아이디어를 얻었을 때 가장 좋은 방법입니다. 이것이 지금까지이 요구 사항을 해결하기 위해 찾은 유일한 방법입니다. –
SelectionService를 사용하여 해결 방법을 찾았습니다. 내 답변을 참조하십시오. :) 그것은 최선의 방법은 아닙니다 ... – CSchulz