Initial Commit
This commit is contained in:
@@ -0,0 +1,411 @@
|
||||
package at.ac.uibk.wfr.perftool.deviceeventstimeline;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
import org.eclipse.birt.chart.extension.datafeed.GanttEntry;
|
||||
import org.eclipse.birt.chart.model.Chart;
|
||||
import org.eclipse.birt.chart.model.ChartWithAxes;
|
||||
import org.eclipse.birt.chart.model.ChartWithoutAxes;
|
||||
import org.eclipse.birt.chart.model.attribute.ActionType;
|
||||
import org.eclipse.birt.chart.model.attribute.Anchor;
|
||||
import org.eclipse.birt.chart.model.attribute.AxisType;
|
||||
import org.eclipse.birt.chart.model.attribute.ChartDimension;
|
||||
import org.eclipse.birt.chart.model.attribute.IntersectionType;
|
||||
import org.eclipse.birt.chart.model.attribute.LegendItemType;
|
||||
import org.eclipse.birt.chart.model.attribute.LineAttributes;
|
||||
import org.eclipse.birt.chart.model.attribute.LineStyle;
|
||||
import org.eclipse.birt.chart.model.attribute.Position;
|
||||
import org.eclipse.birt.chart.model.attribute.TickStyle;
|
||||
import org.eclipse.birt.chart.model.attribute.TriggerCondition;
|
||||
import org.eclipse.birt.chart.model.attribute.impl.ColorDefinitionImpl;
|
||||
import org.eclipse.birt.chart.model.attribute.impl.SeriesValueImpl;
|
||||
import org.eclipse.birt.chart.model.component.Axis;
|
||||
import org.eclipse.birt.chart.model.component.Series;
|
||||
import org.eclipse.birt.chart.model.component.impl.AxisImpl;
|
||||
import org.eclipse.birt.chart.model.component.impl.SeriesImpl;
|
||||
import org.eclipse.birt.chart.model.data.BaseSampleData;
|
||||
import org.eclipse.birt.chart.model.data.DataFactory;
|
||||
import org.eclipse.birt.chart.model.data.GanttDataSet;
|
||||
import org.eclipse.birt.chart.model.data.NumberDataSet;
|
||||
import org.eclipse.birt.chart.model.data.OrthogonalSampleData;
|
||||
import org.eclipse.birt.chart.model.data.SampleData;
|
||||
import org.eclipse.birt.chart.model.data.SeriesDefinition;
|
||||
import org.eclipse.birt.chart.model.data.SeriesGrouping;
|
||||
import org.eclipse.birt.chart.model.data.TextDataSet;
|
||||
import org.eclipse.birt.chart.model.data.impl.ActionImpl;
|
||||
import org.eclipse.birt.chart.model.data.impl.GanttDataSetImpl;
|
||||
import org.eclipse.birt.chart.model.data.impl.NumberDataSetImpl;
|
||||
import org.eclipse.birt.chart.model.data.impl.SeriesDefinitionImpl;
|
||||
import org.eclipse.birt.chart.model.data.impl.SeriesGroupingImpl;
|
||||
import org.eclipse.birt.chart.model.data.impl.TextDataSetImpl;
|
||||
import org.eclipse.birt.chart.model.data.impl.TriggerImpl;
|
||||
import org.eclipse.birt.chart.model.impl.ChartWithAxesImpl;
|
||||
import org.eclipse.birt.chart.model.impl.ChartWithoutAxesImpl;
|
||||
import org.eclipse.birt.chart.model.layout.Legend;
|
||||
import org.eclipse.birt.chart.model.type.BarSeries;
|
||||
import org.eclipse.birt.chart.model.type.GanttSeries;
|
||||
import org.eclipse.birt.chart.model.type.PieSeries;
|
||||
import org.eclipse.birt.chart.model.type.impl.BarSeriesImpl;
|
||||
import org.eclipse.birt.chart.model.type.impl.GanttSeriesImpl;
|
||||
import org.eclipse.birt.chart.model.type.impl.PieSeriesImpl;
|
||||
import org.eclipse.birt.chart.util.CDateTime;
|
||||
import org.eclipse.core.runtime.IProgressMonitor;
|
||||
import org.eclipse.emf.teneo.hibernate.resource.HibernateResource;
|
||||
import org.eclipse.jface.viewers.ISelectionChangedListener;
|
||||
import org.eclipse.jface.viewers.SelectionChangedEvent;
|
||||
import org.eclipse.jface.viewers.TreeSelection;
|
||||
import org.eclipse.swt.SWT;
|
||||
import org.eclipse.swt.widgets.Composite;
|
||||
import org.eclipse.ui.IEditorInput;
|
||||
import org.eclipse.ui.IEditorSite;
|
||||
import org.eclipse.ui.PartInitException;
|
||||
import org.eclipse.ui.part.EditorPart;
|
||||
|
||||
import at.ac.uibk.wfr.perftool.Activity;
|
||||
import at.ac.uibk.wfr.perftool.ActivityInstance;
|
||||
import at.ac.uibk.wfr.perftool.Workflow;
|
||||
import at.ac.uibk.wfr.perftool.presentation.PerftoolEditor;
|
||||
|
||||
public class DeviceEventsTimelineEditorPart extends EditorPart implements ISelectionChangedListener {
|
||||
|
||||
public static final String ID = "at.ac.uibk.wfr.perftool.perftooleditor.DeviceEventsTimelineEditorPart"; //$NON-NLS-1$
|
||||
|
||||
private PerftoolEditor mainEditor;
|
||||
|
||||
private HibernateResource hResource;
|
||||
|
||||
private Workflow selectedWorkflow = null;
|
||||
|
||||
private BirtChartCanvas canvas;
|
||||
|
||||
public DeviceEventsTimelineEditorPart(PerftoolEditor mainEditor) {
|
||||
this.mainEditor = mainEditor;
|
||||
this.mainEditor.addSelectionChangedListener(this);
|
||||
hResource = mainEditor.getHibernateResource();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void init(IEditorSite site, IEditorInput input) throws PartInitException {
|
||||
setSite(site);
|
||||
setInput(input);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Create contents of the editor part.
|
||||
* @param parent
|
||||
*/
|
||||
@Override
|
||||
public void createPartControl(Composite parent) {
|
||||
canvas = new BirtChartCanvas(null, parent, SWT.NONE);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void setFocus() {
|
||||
|
||||
}
|
||||
|
||||
|
||||
public static Chart createChart2() {
|
||||
ChartWithAxes chart = ChartWithAxesImpl.create();
|
||||
|
||||
chart.setDimension(ChartDimension.TWO_DIMENSIONAL_LITERAL);
|
||||
chart.setType("Gantt Chart");
|
||||
chart.setSubType("Standard Gantt Chart");
|
||||
|
||||
chart.getBlock().setBackground(ColorDefinitionImpl.WHITE());
|
||||
chart.getPlot().setBackground(ColorDefinitionImpl.GREY());
|
||||
|
||||
chart.setTransposed(true);
|
||||
|
||||
// Title
|
||||
|
||||
chart.getTitle().getLabel().getCaption().setValue("Device Events");//$NON-NLS-1$
|
||||
|
||||
// Legend
|
||||
Legend lg = chart.getLegend();
|
||||
LineAttributes lia = lg.getOutline();
|
||||
lg.getText().getFont().setSize(16);
|
||||
lia.setStyle(LineStyle.SOLID_LITERAL);
|
||||
lg.getInsets().set(10, 5, 0, 0);
|
||||
lg.getOutline().setVisible(true);
|
||||
lg.setAnchor(Anchor.NORTH_LITERAL);
|
||||
lg.setItemType(LegendItemType.CATEGORIES_LITERAL);
|
||||
|
||||
// X-Axis
|
||||
Axis xAxisPrimary = chart.getPrimaryBaseAxes()[0];
|
||||
xAxisPrimary.setType(AxisType.TEXT_LITERAL);
|
||||
xAxisPrimary.getMajorGrid().setTickStyle(TickStyle.BELOW_LITERAL);
|
||||
xAxisPrimary.getOrigin().setType(IntersectionType.MIN_LITERAL);
|
||||
|
||||
// Y-Axis
|
||||
|
||||
Axis yAxisPrimary = chart.getPrimaryOrthogonalAxis(xAxisPrimary);
|
||||
yAxisPrimary.setType(AxisType.DATE_TIME_LITERAL);
|
||||
yAxisPrimary.getMajorGrid().setTickStyle(TickStyle.LEFT_LITERAL);
|
||||
//yAxisPrimary.setSideBySide(true);
|
||||
|
||||
// Data Set
|
||||
TextDataSet categoryValues = TextDataSetImpl.create(new String[] {"PThread(0)", "PThread(1)", "PThread(2)" });
|
||||
//NumberDataSet orthoValues1 = NumberDataSetImpl.create(new double[] {12.5, 19.6, 18.3, 13.2, 26.5 });
|
||||
//NumberDataSet orthoValues2 = NumberDataSetImpl.create(new double[] {22.7, 23.6, 38.3, 43.2, 40.5 });
|
||||
|
||||
GanttDataSet phase1 = GanttDataSetImpl.create( new GanttEntry[]{
|
||||
new GanttEntry( new CDateTime( 2008, 1, 9 ),
|
||||
new CDateTime( 2008, 6, 9 ),
|
||||
"Task A" ), //$NON-NLS-1$
|
||||
new GanttEntry( new CDateTime( 2008, 3, 9 ),
|
||||
new CDateTime( 2008, 8, 9 ),
|
||||
"Task B" ), //$NON-NLS-1$
|
||||
new GanttEntry( new CDateTime( 2008, 5, 24 ),
|
||||
new CDateTime( 2008, 9, 9 ),
|
||||
"Task C" ) //$NON-NLS-1$
|
||||
} );
|
||||
GanttDataSet phase2 = GanttDataSetImpl.create( new GanttEntry[]{
|
||||
new GanttEntry( new CDateTime( 2008, 6, 12 ),
|
||||
new CDateTime( 2008, 9, 23 ),
|
||||
"Task A" ), //$NON-NLS-1$
|
||||
new GanttEntry( new CDateTime( 2008, 8, 9 ),
|
||||
new CDateTime( 2008, 8, 9 ),
|
||||
"Task B" ), //$NON-NLS-1$
|
||||
new GanttEntry( new CDateTime( 2008, 9, 9 ),
|
||||
new CDateTime( 2008, 12, 9 ),
|
||||
"Task C" ) //$NON-NLS-1$
|
||||
} );
|
||||
|
||||
NumberDataSet paletteValues = NumberDataSetImpl.create(new double[] {22.7, 23.6, 38.3, 43.2, 40.5 });
|
||||
|
||||
// X-Series
|
||||
Series seCategory = SeriesImpl.create();
|
||||
seCategory.setDataSet(categoryValues);
|
||||
SeriesDefinition sdX = SeriesDefinitionImpl.create();
|
||||
xAxisPrimary.getSeriesDefinitions().add(sdX);
|
||||
sdX.getSeries().add(seCategory);
|
||||
sdX.getSeriesPalette().shift(0);
|
||||
|
||||
// Y-Series (1)
|
||||
GanttSeries taskPhase1 = (GanttSeries) GanttSeriesImpl.create( );
|
||||
taskPhase1.setDataSet( phase1 );
|
||||
taskPhase1.getLabel( ).setVisible( false );
|
||||
|
||||
GanttSeries taskPhase2 = (GanttSeries) GanttSeriesImpl.create( );
|
||||
taskPhase2.setDataSet( phase2 );
|
||||
taskPhase2.getLabel( ).setVisible( false );
|
||||
|
||||
SeriesDefinition sdY1 = SeriesDefinitionImpl.create();
|
||||
sdY1.getSeriesPalette().shift(0);
|
||||
yAxisPrimary.getSeriesDefinitions().add(sdY1);
|
||||
sdY1.getSeries().add(taskPhase1);
|
||||
sdY1.getSeries().add(taskPhase2);
|
||||
|
||||
// Y-Series (1)
|
||||
/*BarSeries bs1 = (BarSeries) BarSeriesImpl.create();
|
||||
bs1.setDataSet(orthoValues1);
|
||||
bs1.getLabel().setVisible(true);
|
||||
bs1.setLabelPosition(Position.INSIDE_LITERAL);
|
||||
SeriesDefinition sdY1 = SeriesDefinitionImpl.create();
|
||||
sdY1.getSeriesPalette().shift(-2);
|
||||
yAxisPrimary.getSeriesDefinitions().add(sdY1);
|
||||
sdY1.getSeries().add(bs1);*/
|
||||
|
||||
return chart;
|
||||
}
|
||||
|
||||
|
||||
public static Chart createChart() {
|
||||
ChartWithAxes chart = ChartWithAxesImpl.create();
|
||||
|
||||
chart.setDimension(ChartDimension.TWO_DIMENSIONAL_LITERAL);
|
||||
chart.setType("Bar Chart");
|
||||
chart.setSubType("Stacked");
|
||||
|
||||
chart.getBlock().setBackground(ColorDefinitionImpl.WHITE());
|
||||
chart.getPlot().setBackground(ColorDefinitionImpl.GREY());
|
||||
|
||||
chart.setTransposed(true);
|
||||
|
||||
// Title
|
||||
|
||||
chart.getTitle().getLabel().getCaption().setValue("Device Events");//$NON-NLS-1$
|
||||
|
||||
// Legend
|
||||
Legend lg = chart.getLegend();
|
||||
LineAttributes lia = lg.getOutline();
|
||||
lg.getText().getFont().setSize(16);
|
||||
lia.setStyle(LineStyle.SOLID_LITERAL);
|
||||
lg.getInsets().set(10, 5, 0, 0);
|
||||
lg.getOutline().setVisible(true);
|
||||
lg.setAnchor(Anchor.NORTH_LITERAL);
|
||||
|
||||
// X-Axis
|
||||
Axis xAxisPrimary = chart.getPrimaryBaseAxes()[0];
|
||||
xAxisPrimary.setType(AxisType.TEXT_LITERAL);
|
||||
xAxisPrimary.getMajorGrid().setTickStyle(TickStyle.BELOW_LITERAL);
|
||||
xAxisPrimary.getOrigin().setType(IntersectionType.MIN_LITERAL);
|
||||
|
||||
// Y-Axis
|
||||
|
||||
Axis yAxisPrimary = chart.getPrimaryOrthogonalAxis(xAxisPrimary);
|
||||
yAxisPrimary.getMajorGrid().setTickStyle(TickStyle.LEFT_LITERAL);
|
||||
//yAxisPrimary.setSideBySide(true);
|
||||
|
||||
// Data Set
|
||||
TextDataSet categoryValues = TextDataSetImpl.create(new String[] {"PThread(0)", "PThread(1)", "PThread(2)", "PThread(3)", "PThread(4)" });
|
||||
NumberDataSet orthoValues1 = NumberDataSetImpl.create(new double[] {12.5, 19.6, 18.3, 13.2, 26.5 });
|
||||
NumberDataSet orthoValues2 = NumberDataSetImpl.create(new double[] {22.7, 23.6, 38.3, 43.2, 40.5 });
|
||||
|
||||
/*SampleData sd = DataFactory.eINSTANCE.createSampleData();
|
||||
BaseSampleData sdBase = DataFactory.eINSTANCE.createBaseSampleData();
|
||||
sdBase.setDataSetRepresentation("");//$NON-NLS-1$
|
||||
sd.getBaseSampleData().add(sdBase);
|
||||
|
||||
OrthogonalSampleData sdOrthogonal1 = DataFactory.eINSTANCE.createOrthogonalSampleData();
|
||||
sdOrthogonal1.setDataSetRepresentation("");//$NON-NLS-1$
|
||||
sdOrthogonal1.setSeriesDefinitionIndex(0);
|
||||
sd.getOrthogonalSampleData().add(sdOrthogonal1);
|
||||
|
||||
chart.setSampleData(sd);*/
|
||||
|
||||
|
||||
// X-Series
|
||||
Series seCategory = SeriesImpl.create();
|
||||
seCategory.setDataSet(categoryValues);
|
||||
SeriesDefinition sdX = SeriesDefinitionImpl.create();
|
||||
xAxisPrimary.getSeriesDefinitions().add(sdX);
|
||||
sdX.getSeries().add(seCategory);
|
||||
|
||||
// Y-Series (1)
|
||||
BarSeries bs1 = (BarSeries) BarSeriesImpl.create();
|
||||
bs1.setDataSet(orthoValues1);
|
||||
bs1.setStacked(true);
|
||||
bs1.getLabel().setVisible(true);
|
||||
bs1.setLabelPosition(Position.INSIDE_LITERAL);
|
||||
|
||||
BarSeries bs2 = (BarSeries) BarSeriesImpl.create();
|
||||
bs2.setDataSet(orthoValues2);
|
||||
bs2.setStacked(true);
|
||||
bs2.getLabel().setVisible(true);
|
||||
bs2.setLabelPosition(Position.INSIDE_LITERAL);
|
||||
|
||||
SeriesDefinition sdY1 = SeriesDefinitionImpl.create();
|
||||
sdY1.getSeriesPalette().shift(0);
|
||||
yAxisPrimary.getSeriesDefinitions().add(sdY1);
|
||||
sdY1.getSeries().add(bs1);
|
||||
sdY1.getSeries().add(bs2);
|
||||
|
||||
// Y-Serires (2)
|
||||
|
||||
/*BarSeries bs2 = (BarSeries) BarSeriesImpl.create();
|
||||
|
||||
bs2.setDataSet(orthoValues2);
|
||||
bs2.getLabel().setVisible(true);
|
||||
bs2.setLabelPosition(Position.INSIDE_LITERAL);
|
||||
SeriesDefinition sdY2 = SeriesDefinitionImpl.create();
|
||||
sdY2.getSeriesPalette().shift(-3);
|
||||
yAxisPrimary.getSeriesDefinitions().add(sdY2);
|
||||
sdY2.getSeries().add(bs2);*/
|
||||
|
||||
return chart;
|
||||
}
|
||||
|
||||
|
||||
public static Chart createPie( )
|
||||
{
|
||||
ChartWithoutAxes cwoaPie = ChartWithoutAxesImpl.create( );
|
||||
cwoaPie.setDimension( ChartDimension.TWO_DIMENSIONAL_WITH_DEPTH_LITERAL );
|
||||
cwoaPie.setType( "Pie Chart" ); //$NON-NLS-1$
|
||||
cwoaPie.setSubType( "Standard Pie Chart" ); //$NON-NLS-1$
|
||||
|
||||
// Plot
|
||||
cwoaPie.setSeriesThickness( 10 );
|
||||
|
||||
// Legend
|
||||
Legend lg = cwoaPie.getLegend( );
|
||||
lg.getOutline( ).setVisible( true );
|
||||
|
||||
// Title
|
||||
cwoaPie.getTitle( ).getLabel( ).getCaption( ).setValue( "Pie Chart" );//$NON-NLS-1$
|
||||
|
||||
// Data Set
|
||||
TextDataSet categoryValues = TextDataSetImpl.create( new String[]{
|
||||
"New York", "Boston", "Chicago", "San Francisco", "Dallas"} );//$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$
|
||||
NumberDataSet seriesOneValues = NumberDataSetImpl.create( new double[]{
|
||||
54.65, 21, 75.95, 91.28, 37.43
|
||||
} );
|
||||
|
||||
SampleData sdata = DataFactory.eINSTANCE.createSampleData( );
|
||||
BaseSampleData sdBase = DataFactory.eINSTANCE.createBaseSampleData( );
|
||||
sdBase.setDataSetRepresentation( "" );//$NON-NLS-1$
|
||||
sdata.getBaseSampleData( ).add( sdBase );
|
||||
|
||||
OrthogonalSampleData sdOrthogonal = DataFactory.eINSTANCE.createOrthogonalSampleData( );
|
||||
sdOrthogonal.setDataSetRepresentation( "" );//$NON-NLS-1$
|
||||
sdOrthogonal.setSeriesDefinitionIndex( 0 );
|
||||
sdata.getOrthogonalSampleData( ).add( sdOrthogonal );
|
||||
|
||||
cwoaPie.setSampleData( sdata );
|
||||
|
||||
// Base Series
|
||||
Series seCategory = SeriesImpl.create( );
|
||||
seCategory.setDataSet( categoryValues );
|
||||
|
||||
SeriesDefinition sd = SeriesDefinitionImpl.create( );
|
||||
cwoaPie.getSeriesDefinitions( ).add( sd );
|
||||
sd.getSeriesPalette( ).shift( 0 );
|
||||
sd.getSeries( ).add( seCategory );
|
||||
|
||||
// Orthogonal Series
|
||||
PieSeries sePie = (PieSeries) PieSeriesImpl.create( );
|
||||
sePie.setDataSet( seriesOneValues );
|
||||
sePie.setSeriesIdentifier( "Cities" );//$NON-NLS-1$
|
||||
sePie.setExplosion( 5 );
|
||||
|
||||
SeriesDefinition sdCity = SeriesDefinitionImpl.create( );
|
||||
sd.getSeriesDefinitions( ).add( sdCity );
|
||||
sdCity.getSeries( ).add( sePie );
|
||||
|
||||
return cwoaPie;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public boolean isDirty() {
|
||||
return false;
|
||||
}
|
||||
@Override
|
||||
public boolean isSaveAsAllowed() {
|
||||
return false;
|
||||
}
|
||||
@Override
|
||||
public void doSave(IProgressMonitor monitor) {
|
||||
}
|
||||
@Override
|
||||
public void doSaveAs() {
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void selectionChanged(SelectionChangedEvent event) {
|
||||
System.out.println("DeviceEventsTimelineEditorPart.selectionChanged: " + event.getSelection().toString());
|
||||
if (event.getSelection() instanceof TreeSelection) {
|
||||
TreeSelection sel = (TreeSelection) event.getSelection();
|
||||
Object o = sel.getFirstElement();
|
||||
if (o instanceof Workflow) {
|
||||
selectedWorkflow = (Workflow) o;
|
||||
canvas.setChart(createChart2());
|
||||
} else if (o instanceof Activity) {
|
||||
selectedWorkflow = ((Activity) o).getParentWorkflow();
|
||||
canvas.setChart(createChart2());
|
||||
} else if (o instanceof ActivityInstance) {
|
||||
selectedWorkflow = ((ActivityInstance) o).getParentWorkflow();
|
||||
canvas.setChart(createChart2());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user