org.eclipse.birt.chart.examples.builder.SampleStandardDataSheet.java Source code

Java tutorial

Introduction

Here is the source code for org.eclipse.birt.chart.examples.builder.SampleStandardDataSheet.java

Source

/*******************************************************************************
 * Copyright (c) 2007 Actuate Corporation.
 * 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:
 *  Actuate Corporation  - initial API and implementation
 *******************************************************************************/

package org.eclipse.birt.chart.examples.builder;

import java.util.ArrayList;
import java.util.List;

import org.eclipse.birt.chart.model.data.SeriesDefinition;
import org.eclipse.birt.chart.ui.swt.ColumnBindingInfo;
import org.eclipse.birt.chart.ui.swt.CustomPreviewTable;
import org.eclipse.birt.chart.ui.swt.DefaultChartDataSheet;
import org.eclipse.birt.chart.ui.swt.interfaces.ISelectDataCustomizeUI;
import org.eclipse.birt.chart.ui.swt.wizard.ChartAdapter;
import org.eclipse.birt.chart.ui.swt.wizard.data.SelectDataDynamicArea;
import org.eclipse.birt.chart.ui.util.ChartUIUtil;
import org.eclipse.birt.chart.util.ChartUtil;
import org.eclipse.birt.core.ui.frameworks.taskwizard.interfaces.ITask;
import org.eclipse.jface.resource.JFaceResources;
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.Label;

import com.ibm.icu.text.DateFormat;
import com.ibm.icu.util.Calendar;

/**
 * 
 */

public class SampleStandardDataSheet extends DefaultChartDataSheet {

    private CustomPreviewTable tablePreview = null;

    public Composite createDataDragSource(Composite parent) {
        Composite composite = ChartUIUtil.createCompositeWrapper(parent);
        {
            composite.setLayoutData(new GridData(GridData.FILL_BOTH));
        }
        Label label = new Label(composite, SWT.NONE);
        {
            label.setText("Data Preview");
            label.setFont(JFaceResources.getBannerFont());
        }
        Label description = new Label(composite, SWT.WRAP);
        {
            GridData gd = new GridData(GridData.FILL_HORIZONTAL);
            description.setLayoutData(gd);
            description.setText("Sample Data");
        }

        tablePreview = new CustomPreviewTable(composite,
                SWT.SINGLE | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION) {

            @Override
            protected void addDragListenerToHeaderButton(Button button) {
                // do nothing
            }
        };
        {
            GridData gridData = new GridData(GridData.FILL_BOTH);
            gridData.widthHint = 400;
            gridData.heightHint = 160;
            tablePreview.setLayoutData(gridData);
            tablePreview.setHeaderAlignment(SWT.LEFT);

            refreshSampleDataPreiview();
        }
        return composite;
    }

    public void refreshSampleDataPreiview() {
        ChartAdapter.beginIgnoreNotifications();
        context.getModel().createSampleRuntimeSeries();
        List<SeriesDefinition> valueSd = ChartUtil.getAllOrthogonalSeriesDefinitions(context.getModel());
        List<ColumnBindingInfo> lcb = new ArrayList<ColumnBindingInfo>();
        lcb.add(new ColumnBindingInfo("Category", null, "Category", null));
        for (SeriesDefinition sd : valueSd) {
            int index = valueSd.indexOf(sd) + 1;
            lcb.add(new ColumnBindingInfo("Value " + index, null, "Value " + index, null));
        }
        tablePreview.setColumns(lcb.toArray(new ColumnBindingInfo[0]));
        Object values = ChartUtil.getBaseSeriesDefinitions(context.getModel()).get(0).getRunTimeSeries().get(0)
                .getDataSet().getValues();
        List<List<?>> allValues = new ArrayList<List<?>>();
        if (values instanceof List<?>) {
            allValues.add((List<?>) values);
        }
        for (SeriesDefinition sd : valueSd) {
            values = sd.getRunTimeSeries().get(0).getDataSet().getValues();
            if (values instanceof List<?>) {
                allValues.add((List<?>) values);
            }
        }
        for (int i = 0; i < allValues.size(); i++) {
            for (Object o : allValues.get(i)) {
                if (o instanceof Calendar) {

                    tablePreview.addEntry(DateFormat.getInstance().format(o), i);
                } else {
                    tablePreview.addEntry(o.toString(), i);
                }

            }
        }
        tablePreview.layout();
        ChartAdapter.endIgnoreNotifications();
    }

    public ISelectDataCustomizeUI createCustomizeUI(ITask task) {
        return new SelectDataDynamicArea(task);
    }
}