package com.googlecode.gwt.charts.showcase.client.others; import com.google.gwt.core.client.JavaScriptObject; import com.google.gwt.core.client.JsArray; import com.google.gwt.core.client.JsArrayMixed; import com.google.gwt.dom.client.Style.Unit; import com.google.gwt.user.client.ui.DockLayoutPanel; import com.googlecode.gwt.charts.client.ChartLoader; import com.googlecode.gwt.charts.client.ChartPackage; import com.googlecode.gwt.charts.client.ColumnType; import com.googlecode.gwt.charts.client.DataTable; import com.googlecode.gwt.charts.client.options.TextStyle; import com.googlecode.gwt.charts.client.sankey.Sankey; import com.googlecode.gwt.charts.client.sankey.SankeyNode; import com.googlecode.gwt.charts.client.sankey.SankeyOptions; import com.googlecode.gwt.charts.client.util.ArrayHelper; public class SankeyExample extends DockLayoutPanel { private Sankey sankey; public SankeyExample() { super(Unit.PX); initialize(); } private void initialize() { ChartLoader chartLoader = new ChartLoader(ChartPackage.SANKEY); chartLoader.loadApi(new Runnable() { @Override public void run() { // Create and attach the chart sankey = new Sankey(); add(sankey); draw(); } }); } private void draw() { // Prepare the data Object[][] data = new Object[][] { { "Brazil", "Portugal", 5 }, { "Brazil", "France", 1 }, { "Brazil", "Spain", 1 }, { "Brazil", "England", 1 }, { "Canada", "Portugal", 1 }, { "Canada", "France", 5 }, { "Canada", "England", 1 }, { "Mexico", "Portugal", 1 }, { "Mexico", "France", 1 }, { "Mexico", "Spain", 5 }, { "Mexico", "England", 1 }, { "USA", "Portugal", 1 }, { "USA", "France", 1 }, { "USA", "Spain", 1 }, { "USA", "England", 5 }, { "Portugal", "Angola", 2 }, { "Portugal", "Senegal", 1 }, { "Portugal", "Morocco", 1 }, { "Portugal", "South Africa", 3 }, { "France", "Angola", 1 }, { "France", "Senegal", 3 }, { "France", "Mali", 3 }, { "France", "Morocco", 3 }, { "France", "South Africa", 1 }, { "Spain", "Senegal", 1 }, { "Spain", "Morocco", 3 }, { "Spain", "South Africa", 1 }, { "England", "Angola", 1 }, { "England", "Senegal", 1 }, { "England", "Morocco", 2 }, { "England", "South Africa", 7 }, { "South Africa", "China", 5 }, { "South Africa", "India", 1 }, { "South Africa", "Japan", 3 }, { "Angola", "China", 5 }, { "Angola", "India", 1 }, { "Angola", "Japan", 3 }, { "Senegal", "China", 5 }, { "Senegal", "India", 1 }, { "Senegal", "Japan", 3 }, { "Mali", "China", 5 }, { "Mali", "India", 1 }, { "Mali", "Japan", 3 }, { "Morocco", "China", 5 }, { "Morocco", "India", 1 }, { "Morocco", "Japan", 3 } }; DataTable dataTable = DataTable.create(); dataTable.addColumn(ColumnType.STRING, "From"); dataTable.addColumn(ColumnType.STRING, "To"); dataTable.addColumn(ColumnType.NUMBER, "Weight"); JsArray<JsArrayMixed> dataJsArray = JavaScriptObject.createArray().cast(); for (Object[] object : data) { dataJsArray.push(ArrayHelper.createArray(object)); } dataTable.addRows(dataJsArray); // Set options SankeyOptions options = SankeyOptions.create(); SankeyNode sankeyNode = SankeyNode.create(); TextStyle textStyle = TextStyle.create(); textStyle.setColor("red"); sankeyNode.setLabel(textStyle); options.setNode(sankeyNode); // Draw the chart sankey.draw(dataTable, options); } }