package com.opcoach.ecf14.eap.parts; import javax.annotation.PostConstruct; import javax.inject.Inject; import org.eclipse.draw2d.Figure; import org.eclipse.draw2d.GridLayout; import org.eclipse.draw2d.IFigure; import org.eclipse.draw2d.Label; import org.eclipse.draw2d.LightweightSystem; import org.eclipse.draw2d.PositionConstants; import org.eclipse.e4.core.contexts.IEclipseContext; import org.eclipse.e4.ui.di.Focus; import org.eclipse.nebula.visualization.widgets.figures.GaugeFigure; import org.eclipse.nebula.visualization.xygraph.util.XYGraphMediaFactory; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Canvas; import org.eclipse.swt.widgets.Composite; public class DashBoard { private GaugeFigure speedCounter; private GaugeFigure rpmCounter; private XYGraphMediaFactory gmfactory; private Canvas canvas; @Inject public DashBoard() { } @PostConstruct public void postConstruct(Composite parent, IEclipseContext ctx) { // Create the canvas and the related LightweightSystem for Draw2D canvas = new Canvas(parent, SWT.NONE); final LightweightSystem lws = new LightweightSystem(canvas); // Create a main figure to contain the 2 counters and the 2 labels IFigure root = new Figure(); root.setLayoutManager(new GridLayout(2, false)); rpmCounter = createRpmCounter(); root.add(rpmCounter); speedCounter = createSpeedCounter(); root.add(speedCounter); // Add two titles under the counters. Label rpmTitle = new Label(); rpmTitle.setText(" Rpm"); rpmTitle.setLabelAlignment(PositionConstants.CENTER); root.add(rpmTitle); Label speedTitle = new Label(); speedTitle.setText(" Speed"); speedTitle.setLabelAlignment(PositionConstants.CENTER); root.add(speedTitle); // Set the root figure. lws.setContents(root); } private GaugeFigure createSpeedCounter() { final GaugeFigure gaugeFigure = new GaugeFigure(); // Init gauge gaugeFigure.setBackgroundColor(XYGraphMediaFactory.getInstance() .getColor(255,255,255)); gaugeFigure.setForegroundColor(XYGraphMediaFactory.getInstance() .getColor(0,0,0)); gaugeFigure.setRange(0, 220); gaugeFigure.setLoLevel(10); gaugeFigure.setLoloLevel(0); gaugeFigure.setHiLevel(130); gaugeFigure.setHihiLevel(180); gaugeFigure.setMajorTickMarkStepHint(50); return gaugeFigure; } private GaugeFigure createRpmCounter() { final GaugeFigure rpmFigure = new GaugeFigure(); gmfactory = XYGraphMediaFactory.getInstance(); rpmFigure.setBackgroundColor(gmfactory.getColor(0, 0, 0)); rpmFigure.setForegroundColor(gmfactory.getColor(255, 255, 255)); rpmFigure.setRange(0, 7000); rpmFigure.setLoLevel(1000); rpmFigure.setLoloLevel(500); rpmFigure.setHiLevel(4000); rpmFigure.setHiColor(gmfactory.getColor(128, 255, 255)); rpmFigure.setHihiColor(gmfactory.getColor(128, 255, 255)); rpmFigure.setHihiLevel(5000); rpmFigure.setMajorTickMarkStepHint(100); rpmFigure.setEffect3D(true); rpmFigure.setNeedleColor(gmfactory.getColor(50, 50, 255)); return rpmFigure; } @Focus public void onFocus() { canvas.setFocus(); } }