| /******************************************************************************* |
| * Copyright (c) 2012, 2013 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: |
| * EclipseSource - initial API and implementation |
| ******************************************************************************/ |
| package org.eclipse.rap.demo; |
| |
| import org.eclipse.swt.SWT; |
| import org.eclipse.swt.events.PaintEvent; |
| import org.eclipse.swt.events.PaintListener; |
| import org.eclipse.swt.graphics.*; |
| import org.eclipse.swt.layout.FillLayout; |
| import org.eclipse.swt.widgets.*; |
| import org.eclipse.ui.part.ViewPart; |
| |
| |
| public class DemoChartViewPart extends ViewPart { |
| |
| private Bar[] bars; |
| |
| @Override |
| public void createPartControl( Composite parent ) { |
| initBars( parent.getDisplay() ); |
| Composite composite = new Composite( parent, SWT.NONE ); |
| composite.setLayout( new FillLayout() ); |
| Canvas canvas = new Canvas( composite, SWT.NONE ); |
| canvas.addPaintListener( new PaintListener() { |
| public void paintControl( PaintEvent event ) { |
| drawGrid( event ); |
| drawBars( event ); |
| } |
| } ); |
| } |
| |
| @Override |
| public void setFocus() { |
| } |
| |
| private void initBars( Display display ) { |
| bars = new Bar[ 6 ]; |
| String[] titles = new String[] { "A", "B", "C", "D", "E", "F" }; |
| int[] heights = new int[] { 34, 111, 21, 45, 87, 50 }; |
| Color[] colors = new Color[] { |
| new Color( display, 99, 150, 239 ), |
| new Color( display, 239, 130, 123 ), |
| new Color( display, 49, 203, 49 ), |
| new Color( display, 255, 215, 0 ), |
| new Color( display, 132, 113, 255 ), |
| new Color( display, 140, 239, 140 ) |
| }; |
| for( int i = 0; i < bars.length; i++ ) { |
| bars[ i ] = new Bar( titles[ i ], heights[ i ], colors[ i ] ); |
| } |
| } |
| |
| private void drawGrid( PaintEvent event ) { |
| Display display = event.display; |
| GC gc = event.gc; |
| gc.setFont( new Font( display, "Arial", 10, SWT.NONE ) ); |
| for( int i = 2; i < 9; i++ ) { |
| gc.setForeground( display.getSystemColor( SWT.COLOR_BLACK ) ); |
| gc.drawString( String.valueOf( 8 - i ), 10, i * 20 - 7 ); |
| gc.setForeground( new Color( display, 230, 230, 230 ) ); |
| gc.drawLine( 20, i * 20, 160, i * 20 ); |
| } |
| gc.setForeground( display.getSystemColor( SWT.COLOR_BLACK ) ); |
| gc.drawLine( 20, 20, 20, 160 ); |
| gc.drawPolygon( new int[] { 20, 10, 23, 20, 17, 20 } ); |
| gc.drawLine( 20, 160, 160, 160 ); |
| gc.drawPolygon( new int[] { 170, 160, 160, 157, 160, 163 } ); |
| } |
| |
| private void drawBars( PaintEvent event ) { |
| for( int i = 0; i < 6; i++ ) { |
| bars[ i ].redraw( event, 30 + i * 20 ); |
| } |
| } |
| |
| private class Bar { |
| private final String title; |
| private final int height; |
| private final Color color; |
| |
| public Bar( String title, int height, Color color ) { |
| this.title = title; |
| this.height = height; |
| this.color = color; |
| } |
| |
| public void redraw( PaintEvent event, int x ) { |
| Display display = event.display; |
| GC gc = event.gc; |
| gc.setBackground( color ); |
| gc.fillRectangle( x, 160 - height, 15, height ); |
| gc.setForeground( display.getSystemColor( SWT.COLOR_BLACK ) ); |
| gc.setBackground( display.getSystemColor( SWT.COLOR_BLACK ) ); |
| gc.drawRectangle( x, 160 - height, 15, height ); |
| gc.fillRectangle( x + 13, 160 - height, 2, height ); |
| gc.setFont( new Font( display, "Arial", 10, SWT.NONE ) ); |
| gc.setForeground( display.getSystemColor( SWT.COLOR_BLACK ) ); |
| gc.setBackground( display.getSystemColor( SWT.COLOR_WHITE ) ); |
| gc.drawString( title, x + 5, 161 ); |
| } |
| } |
| } |