// ============================================================================ // // Copyright (C) 2006-2016 Talend Inc. - www.talend.com // // This source code is available under agreement available at // %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt // // You should have received a copy of the agreement // along with this program; if not, write to Talend SA // 9 rue Pages 92150 Suresnes, France // // ============================================================================ package org.talend.dataprofiler.chart.util; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.layout.RowLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; import org.jfree.chart.JFreeChart; import org.jfree.chart.plot.CategoryPlot; import org.jfree.chart.plot.XYPlot; import org.jfree.chart.renderer.category.CategoryItemRenderer; import org.jfree.chart.renderer.xy.XYItemRenderer; import org.jfree.data.category.CategoryDataset; import org.jfree.data.xy.XYDataset; /** * DOC bzhou class global comment. Detailled comment */ public class HideSeriesChartDialog extends FullScreenChartDialog { private static final String SERIES_KEY_ID = "SERIES_KEY"; //$NON-NLS-1$ private boolean isCountAvgNull = false; private boolean isMinMaxDate = false; public HideSeriesChartDialog(Shell shell, JFreeChart chart, boolean isCountAvgNull, boolean isMinMaxDate) { super(shell, chart); this.isCountAvgNull = isCountAvgNull; this.isMinMaxDate = isMinMaxDate; } @Override protected Control createButtonBar(Composite parent) { return createUtilityControl(parent); } private Composite createUtilityControl(Composite parent) { Composite comp = new Composite(parent, SWT.BORDER); comp.setLayout(new RowLayout()); comp.setBackground(Display.getDefault().getSystemColor(SWT.COLOR_GRAY)); if (isCountAvgNull) { XYDataset dataset = chart.getXYPlot().getDataset(); int count = dataset.getSeriesCount(); for (int i = 0; i < count; i++) { Button checkBtn = new Button(comp, SWT.CHECK); checkBtn.setText(dataset.getSeriesKey(i).toString()); checkBtn.setSelection(true); checkBtn.addSelectionListener(listener); checkBtn.setData(SERIES_KEY_ID, i); } } if (isMinMaxDate) { CategoryPlot plot = (CategoryPlot) chart.getPlot(); CategoryDataset dataset = plot.getDataset(); int count = dataset.getRowCount(); for (int i = 0; i < count; i++) { Button checkBtn = new Button(comp, SWT.CHECK); checkBtn.setText(dataset.getRowKey(i).toString()); checkBtn.setSelection(true); checkBtn.addSelectionListener(listener); checkBtn.setData(SERIES_KEY_ID, i); } } return comp; } SelectionAdapter listener = new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { Button checkBtn = (Button) e.getSource(); int seriesid = (Integer) checkBtn.getData(SERIES_KEY_ID); if (isCountAvgNull) { XYPlot plot = chart.getXYPlot(); XYItemRenderer xyRenderer = plot.getRenderer(); xyRenderer.setSeriesVisible(seriesid, checkBtn.getSelection()); } if (isMinMaxDate) { CategoryPlot plot = (CategoryPlot) chart.getPlot(); CategoryItemRenderer render = plot.getRenderer(); render.setSeriesVisible(seriesid, checkBtn.getSelection()); } } }; }