1.5.6. Использование событий

Проиллюстрируем использование событий. Добавим в экран, созданный в разделе Создание диаграммы, обработку события нажатия на элемент графа. Откройте XML-дескриптор экрана в IDE, затем инжектируйте диаграмму:

@Inject
private SerialChart chart;

Далее добавьте слушателя в конце метода init(Map<String, Object> params). Если график получает данные через DataProvider, для обработки нажатия на элемент графа используется метод getDataItemNN(). В данном примере компонент SerialChart привязан к источнику данных, поэтому для получения элемента используется другой метод: getEntityNN():

serialChart.addGraphItemClickListener(event -> {
        CountryGrowth countryGrowth = (CountryGrowth) event.getEntityNN();
        String message = String.format("GDP grow in %s (%s): %.1f%%",
        countryGrowth.getCountry(),
        event.getGraphId().substring(5),
        "graph2014".equals(event.getGraphId()) ? countryGrowth.getYear2014() : countryGrowth.getYear2015());
        showNotification(message, NotificationType.HUMANIZED_HTML);
});

Для просмотра результата пересоберите проект командой RunRestart application server и зайдите в систему. Откройте экран и нажмите на одину из колонок гистограммы.

chart with event
Рисунок 6. Диаграмма с обработкой события нажатия на элемент графа