При добавлении прослушивателя выбора в Eclipse RCP Workbench вы должны знать, какой идентификатор использовать? - PullRequest
0 голосов
/ 21 марта 2012

У меня есть часть просмотра, и в моей функции createPartControl у меня есть это:

viewer = new TreeViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);

getSite().setSelectionProvider(viewer);
getSite().getWorkbenchWindow().getSelectionService()
            .addSelectionListener(this);

Я регистрирую область просмотра как прослушиватель выбора, но я действительно хочу прослушивать выборки, предоставленные средством просмотра дерева в этой части просмотра. Это потому, что я пытаюсь создать контекстно-зависимое всплывающее меню, поэтому я хочу знать, какой узел выбран для готовности, когда появляется всплывающее меню (я надеюсь, что код прослушивателя выбора выполняется перед материалом menulistener) и документация для эта структура в лучшем случае бесполезна.

Я знаю, что метод addSelectionListener (String ID, ISelectionListener listener), но я не могу понять, с какой стати я должен знать идентификатор зрителя, которого я хочу слушать, может кто-нибудь помочь мне разобраться с этим

Ответы [ 2 ]

3 голосов
/ 21 марта 2012

SelectionService позволяет вам реагировать на выбор в других компонентах.Компоненты, которые не были написаны вами или написаны через годы после публикации вашего подключаемого модуля.

Если вы намерены не реагировать на выборки в Eclipse (например, реагировать навыбор метода Java независимо от того, в каком представлении или редакторе) нет ничего плохого в том, что регистрирует слушателя непосредственно TreeViewer .

Таким образом, вам не нужно отфильтровывать неправильно события выбора, но вы можете быть уверены, что получите только события вашего зрителя.

1 голос
/ 21 марта 2012

Я действительно хочу прослушивать выборки, предоставленные средством просмотра дерева в этой части просмотра

Почему бы не добавить прослушиватель выбора непосредственно в программу просмотра?

как включитьземля Я должен знать идентификатор зрителя

Это идентификатор вашего представления (части), а не (дерева) зрителя.

Вы также можете позвонить viewer.getSelection() напрямую безиметь каких-либо слушателей.

...