заставить робота TestFX нажать клавишу на определенном TreeItem в TreeTableView - PullRequest
0 голосов
/ 02 апреля 2020

Я хочу смоделировать пользователя, нажимающего 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. Это нажатие должно (и происходит во время реального запуска) запускать редактор самостоятельно, без необходимости использования мыши. Это вторая проблема: редактор не запускается.

...