// ============================================================================
//
// 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.widgets.Composite;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.swt.widgets.MenuItem;
import org.jfree.chart.JFreeChart;
import org.jfree.experimental.chart.swt.ChartComposite;
/**
* created by talend on Dec 26, 2012 Detailled comment use this class instead of ChartComposite will avoid "no more
* handle" in useful
*
*/
public class TalendChartComposite extends ChartComposite {
private Menu popupMenu;
/**
* DOC talend TalendChartComposite constructor comment.
*
* @param comp
* @param style
* @param chart
* @param useBuffer
*/
public TalendChartComposite(Composite comp, int style, JFreeChart chart, boolean useBuffer) {
super(comp, style, chart, useBuffer);
}
/*
* (non-Javadoc)
*
* @see org.jfree.experimental.chart.swt.ChartComposite#createPopupMenu(boolean, boolean, boolean, boolean)
*/
@Override
protected Menu createPopupMenu(boolean properties, boolean save, boolean print, boolean zoom) {
popupMenu = super.createPopupMenu(properties, save, print, zoom);
return popupMenu;
}
/*
* (non-Javadoc)
*
* @see org.jfree.experimental.chart.swt.ChartComposite#dispose()
*
* Override this dispose is because of ChartComposite don't dispose some default menuItem. To avoid no more handle
*/
@Override
public void dispose() {
super.dispose();
if (popupMenu == null || popupMenu.isDisposed()) {
return;
}
for (MenuItem item : popupMenu.getItems()) {
item.removeSelectionListener(this);
item.dispose();
}
popupMenu.dispose();
}
}