Я хочу смоделировать пользователя, нажимающего F2 на TreeItem в TreeTableView. Это должно запустить редактор, если для столбца был установлен редактор по умолчанию.
Это моя попытка:
given:
def cllr = App.instance.fxmlController
def iterator = new TreeIterator(cllr.treeTableView.root)
// NB TreeIterator is a simple depth-first stack-based iterator
int nTreeItems = 0
TreeItem treeItemToModify = null
while (iterator.hasNext()) {
nTreeItems++
TreeItem ti = iterator.next()
// choose tree item "at random"...
if( nTreeItems == 10 ){
treeItemToModify = ti
}
}
assert treeItemToModify != null
// make sure showing
for( TreeItem ti = treeItemToModify; ti.parent != null; ti = ti.parent ){
ti.parent.setExpanded( true )
}
// set selection on the tree item
int row = cllr.treeTableView.getRow( treeItemToModify )
cllr.treeTableView.selectionModel.select( row, cllr.treeTableView.columns.get( 0 ) )
// set focus on this tree item
cllr.treeTableView.focusModel.focus( row, cllr.treeTableView.columns.get( 0 ) )
when:
clickOn( cllr.treeTableView )
type( KeyCode.F2 )
sleep( 3000 )
then:
... при запуске я вижу, что курсор не двигаться вообще ... он находится в середине элемента управления, а не в столбце 0 (столбце дерева). Я вижу, что выделение меняется на другой, отличный от выбранного, сфокусированного, и тогда type( KeyCode.F2 )
в настоящее время ничего не делает.
NB. Я пробовал различные перестановки cllr.treeTableView.requestFocus()
: без разницы.
Главное, что я не могу понять, это как заставить курсор робота перемещаться к TreeItem
, который я выбрал и на котором сосредоточился.
Если clickOn
закомментирован, F2 применяется к Право выбрано TreeItem
. Это нажатие должно (и происходит во время реального запуска) запускать редактор самостоятельно, без необходимости использования мыши. Это вторая проблема: редактор не запускается.