/******************************************************************************* * Copyright (c) 2012 Tilera Corporation 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: * William R. Swanson (Tilera Corporation) *******************************************************************************/ package org.eclipse.cdt.visualizer.ui.test; import org.eclipse.cdt.visualizer.ui.canvas.GraphicCanvas; import org.eclipse.swt.graphics.GC; import org.eclipse.swt.widgets.Composite; // --------------------------------------------------------------------------- // TestCanvas // --------------------------------------------------------------------------- /** * Default canvas control, used by TestCanvasVisualizer. */ public class TestCanvas extends GraphicCanvas { // --- members --- /** Text string to display. */ String m_text = null; // --- constructors/destructors --- /** Constructor. */ public TestCanvas(Composite parent) { super(parent); initDefaultCanvas(parent); } /** Dispose method. */ public void dispose() { cleanupDefaultCanvas(); super.dispose(); } // --- init methods --- /** Initializes control */ protected void initDefaultCanvas(Composite parent) { // perform any initialization here } /** Cleans up control */ protected void cleanupDefaultCanvas() { } // --- accessors --- /** Sets text string to display. */ public void setText(String text) { m_text = text; } // --- methods --- /** Invoked when canvas repaint event is raised. * Default implementation clears canvas to background color. */ public void paintCanvas(GC gc) { super.paintCanvas(gc); int margin = 10; drawStringWrapNewlines(gc, m_text, margin, margin); } // --- utilities --- /** Gets line height of text, based on current font */ public static int getTextHeight(GC gc) { return gc.getFontMetrics().getHeight(); } /** Draw string, wrapping if there are any newline chars. */ public static void drawStringWrapNewlines(GC gc, String text, int x, int y) { int lineHeight = getTextHeight(gc); drawStringWrapNewlines(gc, text, x, y, lineHeight); } /** Draw string, wrapping if there are any newline chars. */ public static void drawStringWrapNewlines(GC gc, String text, int x, int y, int lineHeight) { if (text != null) { String[] lines = text.split("\n"); for (int i=0; i<lines.length; i++) { gc.drawString(lines[i], x, y, true); // transparent y += lineHeight; } } } }