Приложение ECLIPSE RCP: реализация панели инструментов - PullRequest
1 голос
/ 01 сентября 2011

У меня есть вид с пользовательской панелью инструментов с кнопками, такими как первая запись, следующая запись, предыдущая запись и т. Д.Я хочу реализовать эту функциональность.У меня есть объект команды для кнопок панели инструментов.Как я могу передать информацию о том, какая строка является текущей строкой в ​​средстве просмотра таблицы?Как переместить фокус на следующую запись, если я выберу кнопку следующей записи на панели инструментов?

Ответы [ 2 ]

0 голосов
/ 14 декабря 2011

Сначала вы должны убедиться, что TableViewer является поставщиком выбора для вашего представления:

getSite().setSelectionProvider(tableViewer);

Это уведомляет службу выбора вашего окна рабочего места каждый раз, когда изменяется выбранная строка в вашей таблице.Выбор содержит объект модели, который соответствует выбранной строке.

В вашем обработчике команд вы можете получить текущий выбор, вызвав

HandlerUtil.getCurrentSelectionChecked(executionEvent)

Чтобы переместить фокус в TableViewerкогда нажата следующая кнопка, вы должны реализовать публичный метод в вашем представлении, который увеличивает индекс выбора базового Table на единицу.Чтобы ваш обработчик команд мог вызывать этот метод, вам нужно получить экземпляр представления.Быстрое и грязное решение состояло бы в том, чтобы получить текущую часть, вызвав

HandlerUtil.getActivePartChecked(executionEvent)

и привести возвращенный IWorkbenchPart к вашему классу представления.

0 голосов
/ 23 ноября 2011

Доступ к текущей строке:

int currentSelectionPosition=tableViewer.getTable().getSelectionIndex();

Установить выбор в следующем ряду

tableViewer.getTable().select(currentSelectionPosition+1);
...