/*******************************************************************************
* Copyright (c) 2013, 2015 EclipseSource and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Ralf Sternberg - initial API and implementation
******************************************************************************/
package org.eclipse.rap.addons.d3chart.demo.internal;
import java.util.List;
import org.eclipse.rap.addons.d3chart.ChartItem;
import org.eclipse.rap.addons.d3chart.ColorStream;
import org.eclipse.rap.addons.d3chart.Colors;
import org.eclipse.rap.addons.d3chart.StreamChart;
import org.eclipse.rap.addons.d3chart.demo.internal.data.DataSet;
import org.eclipse.rap.addons.d3chart.demo.internal.data.ExampleData;
import org.eclipse.rap.examples.ExampleUtil;
import org.eclipse.rap.examples.IExamplePage;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Listener;
public class AreaChartExample implements IExamplePage {
private DataSet dataSet;
private StreamChart chart;
private ColorStream colors;
@Override
public void createControl( Composite parent ) {
parent.setLayout( ExampleUtil.createMainLayout( 2 ) );
dataSet = ExampleData.BROWSER_QUARTERLY_EUROPE;
colors = Colors.cat10Colors( parent.getDisplay() ).loop();
createChartPart( parent );
createControlPart( parent );
}
private void createChartPart( Composite parent ) {
Composite composite = new Composite( parent, SWT.NONE );
composite.setLayoutData( ExampleUtil.createFillData() );
composite.setLayout( ExampleUtil.createGridLayout( 1, false, true, true ) );
chart = new StreamChart( composite, SWT.BORDER );
GridData layoutData = new GridData( SWT.FILL, SWT.DEFAULT, true, false );
layoutData.heightHint = 300;
chart.setLayoutData( layoutData );
createItems();
update();
}
private void createControlPart( Composite parent ) {
Composite composite = new Composite( parent, SWT.NONE );
composite.setLayout( ExampleUtil.createGridLayout( 1, false, true, false ) );
composite.setLayoutData( ExampleUtil.createFillData() );
createButton( composite, "Europe", ExampleData.BROWSER_QUARTERLY_EUROPE ).setSelection( true );
createButton( composite, "North America", ExampleData.BROWSER_QUARTERLY_NORTHAMERICA );
createButton( composite, "Asia", ExampleData.BROWSER_QUARTERLY_ASIA );
createButton( composite, "Africa", ExampleData.BROWSER_QUARTERLY_AFRICA );
}
private void createItems() {
List<String> columns = dataSet.getColumns();
for( String browser : columns ) {
ChartItem item = new ChartItem( chart );
item.setText( browser );
item.setColor( colors.next() );
}
}
private void update() {
ChartItem[] items = chart.getItems();
for( int i = 0; i < items.length; i++ ) {
items[ i ].setValues( dataSet.getValuesForColumn( i ) );
}
}
private Button createButton( Composite composite, String text, final DataSet data ) {
Button button = createButton( composite, text, new Listener() {
@Override
public void handleEvent( Event event ) {
dataSet = data;
update();
}
} );
button.setLayoutData( new GridData( SWT.FILL, SWT.CENTER, false, false ) );
return button;
}
private static Button createButton( Composite parent, String text, Listener listener ) {
Button button = new Button( parent, SWT.RADIO );
button.setText( text );
button.addListener( SWT.Selection, listener );
return button;
}
}