package test.gui.robot; import javafx.scene.control.ComboBox; import javafx.scene.input.KeyCode; import org.testfx.api.FxRobotInterface; import static org.junit.Assert.fail; /** * TestFX does not provide all the required routines to test GUIs. This trait defines routines for * selecting items in combo boxes and lists. */ public interface FxRobotListSelection extends FxRobotInterface { default <T> void selectNextComboBoxItem(final ComboBox<T> combo) { clickOn(combo).type(KeyCode.DOWN).type(KeyCode.ENTER); } default <T> void selectGivenComboBoxItem(final ComboBox<T> combo, final T item) { final int index = combo.getItems().indexOf(item); final int indexSel = combo.getSelectionModel().getSelectedIndex(); if(index == -1) { fail("The item " + item + " is not in the combo box " + combo); } clickOn(combo); if(index > indexSel) { for(int i = indexSel; i < index; i++) { type(KeyCode.DOWN); } }else { if(index < indexSel) { for(int i = indexSel; i > index; i--) { type(KeyCode.UP); } } } type(KeyCode.ENTER); } }