Объект табличного представления

Табличные представления представляют собой визуализацию набора записей, расположенных в виде строк и столбцов.

Библиотека позволяет взаимодействовать с такими представлениями.

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

  1. Grid — таблица.

  2. Column — столбец таблицы.

  3. Row — строка таблицы.

  4. Cell — ячейка.

Пример использования:

Пример работы с таблицей
application.mainForm().mainMenu().itemByCaption("Редакторы", "В списке").click();
Form listForm = application.waitMdiForm("gtk-ru.bitec.app.gs3.qa.controls.Gs3_QaEditorsTest", "List");
Frame frame = listForm.mainSelection().layout().frame();

Grid grid = frame.view().cast();

Columns columns = grid.getColumns();
int numberOfColumns = columns.size();

Rows rows = grid.getRows();
int numberOfRows = rows.size();

Row row = grid.getRowByVisibleIndex(6);
row.click();

int selectedRowVisibleIndex = grid.getSelectedRowVisibleIndex();
int selectedRowAbsoluteNumber = grid.getSelectedRowAbsoluteNumber();

Row row2 = grid.getRowByAbsoluteNumber(selectedRowAbsoluteNumber - 1);
Cell cell = row2.getCellByVisibleIndex(2);

int selectedColumnVisibleIndex = grid.getSelectedColumnVisibleIndex();

List<Cell> cells = row2.getCells();

int totalCount = grid.getTotalCount();
int windowSize = grid.getWindowSize();

Этот пример демонстрирует базовые способы взаимодействия с таблицей.

Attention

  1. Перерисовка: Интерфейс таблицы может обновляться автоматически. Это требует выполнения ожидания окончания происходящих изменений.

  2. Индексация и нумерация: Строки таблицы можно выбирать как по видимому индексу, так и по абсолютному номеру.

    Видимый индекс удобен, когда речь идет об отображенных записях. Абсолютный номер удобен, если запись еще не подгружена с сервера. Подробнее об индексах и номерах строк можно узнать в справочнике по API: Grid.

Полный пример проекта example7 можно найти в коллекции примеров проектов.

See also

Особенности некоторых взаимодействий с элементами табличного представления

Перетаскивание колонок

Для тестирования drag’n’drop функционала колонок (при изменении их порядка или при перетаскивании заголовка в область группировки) появляется необходимость в привнесении дополнительных движений мышью, чтобы элемент заголовка стал доступен для сброса в нужную область.

Пример перетаскивания заголовка колонки в область группировки
void moveColumnToGroupArea(ColumnHeader columnHeader) {
   Geometry geometry = Geometry.of(client);
   BoundingClientRect col1BoundingClientRect = geometry.getBoundingClientRect(columnHeader);
   columnHeader.mouseDown();
   columnHeader.mouseMoveByOffset(5, 1);
   columnHeader.mouseMoveByOffset(0, -Double.valueOf(col1BoundingClientRect.getHeight()).intValue());
   columnHeader.mouseMoveByOffset(-5, -1);
   columnHeader.mouseUp();
}

Перестроение таблицы

В результате некоторых взаимодействий со списком происходит полное обновление dom-элемента таблицы, что приводит к устареванию ссылки на объект таблицы в коде теста. Примеры таких взаимодействий (список не исчерпывающий):

  • Изменение порядка колонок

  • Сортировка по колонке

  • Изменение видимости колонки

  • Клик по пункту конекстного меню “Восстановить настройки по умолчанию”

В этих случаях необходимо перезапрашивать ссылку на таблицу у объекта фрейма.