package org.projectusus.ui.internal.histogram;
import static org.projectusus.ui.colors.UsusColors.getSharedColors;
import static org.projectusus.ui.internal.AnalysisDisplayModel.displayModel;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.ui.ISelectionService;
import org.eclipse.ui.part.ViewPart;
import org.projectusus.ui.colors.UsusColors;
import org.swtchart.Chart;
import org.swtchart.IAxis;
import org.swtchart.ILineSeries;
import org.swtchart.ISeries.SeriesType;
import org.swtchart.LineStyle;
import org.swtchart.ext.InteractiveChart;
public class HistogramView extends ViewPart {
static final String SERIES_ID = "histogram"; //$NON-NLS-1$
private Chart chart;
private ChartUpdater updater;
@Override
public void createPartControl( Composite parent ) {
chart = new InteractiveChart( parent, SWT.NONE );
updater = new ChartUpdater( chart );
initializeChart();
hookListeners();
}
@Override
public void setFocus() {
chart.setFocus();
}
@Override
public void dispose() {
unhookListeners();
super.dispose();
}
private void initializeChart() {
ILineSeries series = (ILineSeries)chart.getSeriesSet().createSeries( SeriesType.LINE, SERIES_ID );
series.setLineStyle( LineStyle.NONE );
series.setSymbolColor( getSharedColors().getColor( UsusColors.USUS_LIGHT_BLUE ) );
chart.getTitle().setVisible( false );
chart.getLegend().setVisible( false );
chart.setBackground( Display.getCurrent().getSystemColor( SWT.COLOR_WHITE ) );
chart.setBackgroundInPlotArea( Display.getCurrent().getSystemColor( SWT.COLOR_WHITE ) );
IAxis yAxis = chart.getAxisSet().getYAxis( 0 );
yAxis.getTitle().setText( "Count" );
yAxis.getTitle().setForeground( Display.getCurrent().getSystemColor( SWT.COLOR_BLACK ) );
yAxis.getTick().setForeground( Display.getCurrent().getSystemColor( SWT.COLOR_DARK_GRAY ) );
IAxis xAxis = chart.getAxisSet().getXAxis( 0 );
xAxis.getTitle().setForeground( Display.getCurrent().getSystemColor( SWT.COLOR_BLACK ) );
xAxis.getTick().setForeground( Display.getCurrent().getSystemColor( SWT.COLOR_DARK_GRAY ) );
}
private void hookListeners() {
displayModel().addModelListener( updater );
getSelectionService().addSelectionListener( updater );
}
private void unhookListeners() {
getSelectionService().removeSelectionListener( updater );
displayModel().removeModelListener( updater );
}
private ISelectionService getSelectionService() {
return (ISelectionService)getSite().getService( ISelectionService.class );
}
}