2013-02-11 1 views
0

Я хотел бы установить фокус на строку с номером в TableViewer.getViewer(). SetSelection() не работает с FocusCellOwnerDrawHighlighter

Фокус и ввод передача определяется следующим образом:

ColumnViewerToolTipSupport.enableFor(viewer, ToolTip.NO_RECREATE); 

FocusCellOwnerDrawHighlighter fch = new FocusCellOwnerDrawHighlighter(viewer); 
TableViewerFocusCellManager focusCellManager = new TableViewerFocusCellManager(viewer, fch); 

ColumnViewerEditorActivationStrategy actSupport = new ColumnViewerEditorActivationStrategy(viewer) { 
      protected boolean isEditorActivationEvent(final 
        ColumnViewerEditorActivationEvent event) { 
       return event.eventType == ColumnViewerEditorActivationEvent.TRAVERSAL 
         || event.eventType == ColumnViewerEditorActivationEvent.MOUSE_CLICK_SELECTION 
         || (event.eventType == ColumnViewerEditorActivationEvent.KEY_PRESSED && event.keyCode == SWT.F2) 
         || event.eventType == ColumnViewerEditorActivationEvent.PROGRAMMATIC; 
      } 
}; 

TableViewerEditor.create(viewer, actSupport, ColumnViewerEditor.TABBING_HORIZONTAL 
       | ColumnViewerEditor.TABBING_MOVE_TO_ROW_NEIGHBOR | 
       ColumnViewerEditor.TABBING_VERTICAL 
       | ColumnViewerEditor.KEYBOARD_ACTIVATION); 

Код для выбора строки является:

getViewer().setSelection(new StructuredSelection(parameterTable.getViewer().getElementAt(selection)), false); 

Проблема заключается в том, что, как только я использую FocusCellOwnerDrawHighlighter, setSelection больше не работает, что означает, что ни одна строка не выбрана.

Любые идеи, что я делаю неправильно?

Привет Роджер

ответ

0

Это не является решением. Просто уточните, что может быть проблемой. Я вижу проблему в

FocusCellOwnerDrawHighlighter:110 line 


        ViewerCell cell = row.getCell(event.index); 

        if (focusCell == null || !cell.equals(focusCell)) { 
         removeSelectionInformation(event, cell); 
        } else { 
         markFocusedCell(event, cell); 
        } 

начальный фокус ячейки будет по умолчанию верхний индекс Table. ячейка фокусировки и ячейка выбора не будут равны, поэтому она удаляет фон выделения в выбранной ячейке.