Как интегрировать пользовательский ISelectionProvider с включенным Eclipse при выражениях? - PullRequest
2 голосов
/ 18 мая 2010

У меня есть собственный графический редактор EditorPart в приложении Eclipse RCP.

Устанавливает пользовательский ISelectionProvider в методе createPartControl (..):

@Override
public void createPartControl(Composite parent) {
    // [snip] 
    getSite().setSelectionProvider((ISelectionProvider)model.getSelection());
}

У меня есть две ViewParts, слушающие изменения выбора через ISelectionService. Они получают уведомление при изменении выбора в EditorPart. Пока все хорошо.

Теперь я добавил обработчик, используя следующий XML:

<handlerclass="my.custom.Handler" commandId="org.eclipse.ui.edit.delete">
    <enabledWhen>
        <count value="+"/>
    </enabledWhen>
</handler>

Если выделение в EditPart содержит> 0 элементов, это должно включить обработчик my.custom.Handler, но это не так.

Однако он включается, если выбор, предоставляемый встроенными поставщиками выбора, изменяется на> 0 элемент (т. Е. Предоставляемый средствами просмотра JFace).

Любой совет, как интегрировать пользовательскую реализацию ISelectionProvider с каркасом выражений, используемым в объявлении обработчика?

1 Ответ

1 голос
/ 02 марта 2011

включено, когда может содержать любое выражение. Вы должны указать, что вы хотите, чтобы переменная выбора там. Смотрите здесь пример: http://eclipse -tips.com / tutorials / 1-actions-vs-команды? Start = 1

...