package com.griddynamics.jagger.webclient.client.handler; import com.griddynamics.jagger.dbapi.model.MetricGroupNode; import com.griddynamics.jagger.dbapi.model.MetricNode; import com.griddynamics.jagger.dbapi.model.PlotNode; import com.sencha.gxt.widget.core.client.event.CheckChangeEvent; import com.sencha.gxt.widget.core.client.tree.Tree; import java.util.LinkedHashSet; import java.util.Set; public class MetricGroupNodeHandler extends TreeAwareHandler<MetricGroupNode> { @Override public void onCheckChange(CheckChangeEvent<MetricGroupNode> event) { int size = event.getItem().getMetrics().size(); if (size > 0) { // todo // Same not nice approach as in CheckHandlerMap // Point to change in future // MetricGroupNode should contain appropriate fetcher and just call it here if (event.getItem().getMetrics().get(0).getClass() == MetricNode.class) { metricFetcher.fetchMetrics(tree.getCheckedMetrics(), true); } if (event.getItem().getMetrics().get(0).getClass() == PlotNode.class) { MetricGroupNode<PlotNode> testNode = event.getItem(); Set<MetricNode> nodes = new LinkedHashSet<MetricNode>(); nodes.addAll(testNode.getMetrics()); if (Tree.CheckState.CHECKED.equals(event.getChecked())) { testPlotFetcher.fetchPlots(nodes); } else { testPlotFetcher.removePlots(nodes); } } } } }