2.6.6. Использование событий
Проиллюстрируем использование событий. Добавим в экран, созданный в разделе Контроллер экрана, обработку события нажатия на элемент графа. Откройте контроллер экрана и инжектируйте диаграмму. Также вам потребуется инжекция Notifications
бина в целях показа уведомления:
@Inject
private Notifications notifications;
@Inject
private SerialChart chart;
Далее добавьте слушателя в конце метода onInit
. Если график получает данные через DataProvider
, для обработки нажатия на элемент графа используется метод getDataItemNN()
. В данном примере компонент SerialChart
привязан к контейнеру данных, поэтому для получения элемента используется другой метод: getEntityNN()
:
@Subscribe
private void onInit(InitEvent event) {
chart.addGraphItemClickListener(graphItemClickEvent ->
notifications.create()
.withCaption(itemClickEventInfo(graphItemClickEvent))
.withContentMode(ContentMode.HTML)
.show());
}
private String itemClickEventInfo(Chart.GraphItemClickEvent event) {
CountryGrowth countryGrowth = (CountryGrowth) event.getEntityNN();
return String.format("GDP grow in %s (%s): %.1f%%",
countryGrowth.getCountry(),
event.getGraphId().substring(5),
"graph2014".equals(event.getGraphId()) ? countryGrowth.getYear2014() : countryGrowth.getYear2015());
}
Для просмотра результата пересоберите проект командой Run → Restart application server и зайдите в систему. Откройте экран и нажмите на одну из колонок гистограммы.
Рисунок 31. Диаграмма с обработкой события нажатия на элемент графа