Объект выборки

Доступ к главной выборке:

Получение главной выборки формы
Selection mainSelection = form.mainSelection();

Доступ к детальной выборке:

Получение детальной выборки по имени и представлению
Selection selection = form.selection("gtk-ru.bitec.app.gs3.qa.composer.collections.Gs3_QACollectionFirst", "List_idReference");

Операции с выборкой

В контексте выборки можно выполнять ряд стандартных операций.

Выполнение операции:

Выполнение операции выборки
selection.executeOperation("mm_forms_ReferenceMdiCard");

Выполнение JEXL-скрипта:

Выполнение JEXL-скрипта
selection.executeJexl("selection.setVar('scaption', 'Название 2')");

See also

Выбор записи выборки по заданным критериям:

Выбор записи
Map<String, Object> propertyMap = new HashMap<>();
propertyMap.put("id", 60);
Object locateResult = selection.locate(propertyMap, new Selection.LocateOption[] {Selection.LocateOption.Nearest, Selection.LocateOption.Next});

Доступ к элементам выборки

В объекте выборки доступны её разметка и фрейм.

На фрейме доступны панель инструментов, панель вкладок и представление выборки.

Получение элементов выборки
Layout layout = selection.layout();
Frame frame = layout.frame();

ToolBar toolBar = frame.toolbar();
TabPanel tabPanel = frame.tabpanel();
AbstractView view = frame.view();

Панель инструментов позволяет взаимодействовать с её кнопками.

Нажатие кнопки в панели инструментов
ToolBar toolBar = frame.toolbar();
ToolButton closeButton = toolBar.button(StandardOperations.CLOSE_FORM_CANCEL);
closeButton.click();

Панель вкладок позволяет переключаться между вкладками формы.

Переключение между вкладками
TabPanel tabPanel = frame.tabpanel();
tabPanel.itemByCaption("Коллекция первая").click();
tabPanel.itemByCaption("Коллекция вторая").click();

Note

Панель вкладок можно получить и через компоновщик разметки выборки:

Получение панели вкладок через компоновщик
frame.layout().<TabComposer>composer().tabpanel().itemByCaption("Коллекция первая");

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

Перед использованием представления выборки нужно привести его к конкретному типу.

Получение представления
AbstractView view = frame.view();
if ( view != null) {
   if ( view.is(Grid.class) ) {
      Grid grid = view.cast();
   } else if ( view.is(Card.class) ) {
      Card card = view.cast();
   }
}

Типы представления Card и Grid являются основными типами представления выборки.

Общий принцип работы с представлениями:

  • Получить с представления поле по его названию.

  • Получить значение из этого поля или установить новое значение.

  • Повторить для других полей на представлении.

Карточное представление (Card)

Использование полей на карточном представлении:

Работа с полем на карточным представлением
Field field = card.field("SCAPTION");
Object originalValue = field.value();
field.setValue("Новый заголовок");

Если редактор в поле является “редактором с кнопками”, то нужно кликнуть кнопкой мышки в нужную кнопку редактора. Это вернет соответствующий редактор выбора. С редактором выбора нужно взаимодействовать исходя из его структуры.

Открытие редактора по кнопке
ComboBox<?> field = card.field("PCOMBOBOX");
List<AbstractButtonsInputBox.InboxButton> buttons = field.buttons(); // (1)
AbstractButtonsInputBox.InboxButton button = buttons.get(0);
button.click();                                                      // (2)
GridDropDown dropDown = field.waitDropdown();                        // (3)
Rows rows = dropDown.getRows();                                      // (4)
int lastRowIndex = rows.size() - 1;
Row row = dropDown.getRowByIndex(lastRowIndex);                      // (5)
row.click();                                                         // (6)

В примере используется “поле с комбобоксом”.

Действия:

  1. Из поля получается список кнопок

  2. Выполняется клик кнопкой мышки в самую первую кнопку редактора (индексация начинается с нуля)

  3. Выполняется ожидание появления выпадающего списка комбобокса

  4. Из комбобокса получаются все строки списка (используются для вычисления количества строк)

  5. Ищется последняя строка по индексу (индексация начинается с нуля)

  6. Выполняется клик кнопкой мышки в найденную строку.

В результате, в поле вводится выбранное значение.

Табличное представление (Grid)

В табличном представлении необходимо учитывать положение ячейки, так как поле связано с конкретной строкой и столбцом:

Работа с полем на табличном представлении
Cell cell = grid.getCell(42, "SMEMO");
MemoBox memoBox = cell.field();
memoBox.setValue("Новая заметка");

Ссылка на ячейку получается по индексу (начиная с нуля) строки и названию поля, отображаемого в колонке.

See also