mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-06-06 17:26:01 +02:00
Bug 458671 - [visualizer] add an example of using an image on graphic
object Change-Id: Idf604db4d0138b489d9ceda81d5848a5e4698dbb
This commit is contained in:
parent
4d22e11d4b
commit
da922a8b01
2 changed files with 51 additions and 3 deletions
Binary file not shown.
After Width: | Height: | Size: 9.7 KiB |
|
@ -1,5 +1,5 @@
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* Copyright (c) 2012 Tilera Corporation and others.
|
* Copyright (c) 2012, 2015 Tilera Corporation and others.
|
||||||
* All rights reserved. This program and the accompanying materials
|
* All rights reserved. This program and the accompanying materials
|
||||||
* are made available under the terms of the Eclipse Public License v1.0
|
* are made available under the terms of the Eclipse Public License v1.0
|
||||||
* which accompanies this distribution, and is available at
|
* which accompanies this distribution, and is available at
|
||||||
|
@ -7,20 +7,31 @@
|
||||||
*
|
*
|
||||||
* Contributors:
|
* Contributors:
|
||||||
* William R. Swanson (Tilera Corporation)
|
* William R. Swanson (Tilera Corporation)
|
||||||
|
* Marc Dumais (Ericsson) - Bug 458671
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
|
|
||||||
package org.eclipse.cdt.visualizer.examples.sourcegraph;
|
package org.eclipse.cdt.visualizer.examples.sourcegraph;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.FileNotFoundException;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.net.URISyntaxException;
|
||||||
|
import java.net.URL;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.Hashtable;
|
import java.util.Hashtable;
|
||||||
|
|
||||||
|
import org.eclipse.cdt.visualizer.examples.VisualizerExamplesPlugin;
|
||||||
import org.eclipse.cdt.visualizer.ui.canvas.BufferedCanvas;
|
import org.eclipse.cdt.visualizer.ui.canvas.BufferedCanvas;
|
||||||
|
import org.eclipse.cdt.visualizer.ui.canvas.GraphicObject;
|
||||||
import org.eclipse.cdt.visualizer.ui.util.Colors;
|
import org.eclipse.cdt.visualizer.ui.util.Colors;
|
||||||
|
import org.eclipse.core.runtime.FileLocator;
|
||||||
|
import org.eclipse.core.runtime.Platform;
|
||||||
import org.eclipse.swt.graphics.Color;
|
import org.eclipse.swt.graphics.Color;
|
||||||
import org.eclipse.swt.graphics.GC;
|
import org.eclipse.swt.graphics.GC;
|
||||||
import org.eclipse.swt.graphics.Rectangle;
|
import org.eclipse.swt.graphics.Rectangle;
|
||||||
import org.eclipse.swt.widgets.Composite;
|
import org.eclipse.swt.widgets.Composite;
|
||||||
|
import org.osgi.framework.Bundle;
|
||||||
|
|
||||||
// ---------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------
|
||||||
// SourceGraphControl
|
// SourceGraphControl
|
||||||
|
@ -37,11 +48,17 @@ public class SourceGraphControl extends BufferedCanvas
|
||||||
/** Line height used in drawing graph and computing control height. */
|
/** Line height used in drawing graph and computing control height. */
|
||||||
public static final int LINE_HEIGHT = 20;
|
public static final int LINE_HEIGHT = 20;
|
||||||
|
|
||||||
|
/** Path for the banner image, relative to plug-in root path */
|
||||||
|
protected static final String BANNER_FILE = "images/sgv-banner.png"; //$NON-NLS-1$
|
||||||
|
protected static final int BANNER_HEIGHT = 50;
|
||||||
|
|
||||||
// --- members ---
|
// --- members ---
|
||||||
|
|
||||||
/** Text we're currently displaying. */
|
/** Text we're currently displaying. */
|
||||||
protected String m_sourceText = ""; //$NON-NLS-1$
|
protected String m_sourceText = ""; //$NON-NLS-1$
|
||||||
|
|
||||||
|
protected GraphicObject m_banner;
|
||||||
|
|
||||||
/** Data structure used to hold character stats. */
|
/** Data structure used to hold character stats. */
|
||||||
class CharStat
|
class CharStat
|
||||||
implements Comparable<CharStat>
|
implements Comparable<CharStat>
|
||||||
|
@ -72,6 +89,7 @@ public class SourceGraphControl extends BufferedCanvas
|
||||||
public SourceGraphControl(Composite parent) {
|
public SourceGraphControl(Composite parent) {
|
||||||
super(parent);
|
super(parent);
|
||||||
m_characters = new ArrayList<CharStat>();
|
m_characters = new ArrayList<CharStat>();
|
||||||
|
m_banner = new GraphicObject();
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Dispose method. */
|
/** Dispose method. */
|
||||||
|
@ -139,6 +157,10 @@ public class SourceGraphControl extends BufferedCanvas
|
||||||
|
|
||||||
Rectangle bounds = getBounds();
|
Rectangle bounds = getBounds();
|
||||||
int height = MARGIN * 2 + m_characters.size() * LINE_HEIGHT;
|
int height = MARGIN * 2 + m_characters.size() * LINE_HEIGHT;
|
||||||
|
|
||||||
|
// reserve space for banner at the top
|
||||||
|
height = height + BANNER_HEIGHT;
|
||||||
|
|
||||||
bounds.height = height;
|
bounds.height = height;
|
||||||
setBounds(bounds);
|
setBounds(bounds);
|
||||||
|
|
||||||
|
@ -162,11 +184,22 @@ public class SourceGraphControl extends BufferedCanvas
|
||||||
int lh = LINE_HEIGHT;
|
int lh = LINE_HEIGHT;
|
||||||
|
|
||||||
int x = margin;
|
int x = margin;
|
||||||
int y = margin;
|
// skip banner space
|
||||||
|
int y = BANNER_HEIGHT + margin;
|
||||||
|
|
||||||
Rectangle area = getClientArea();
|
Rectangle area = getClientArea();
|
||||||
int w = area.width - margin*2 - tw;
|
int w = area.width - margin*2 - tw;
|
||||||
|
|
||||||
|
// position and size banner container object
|
||||||
|
m_banner.setBounds(new Rectangle(x - margin, margin, area.width, BANNER_HEIGHT - margin));
|
||||||
|
|
||||||
|
// draw banner
|
||||||
|
try {
|
||||||
|
m_banner.drawImage(gc, getAbsFilePath(BANNER_FILE), GraphicObject.ImageSizeAndPosition.MAXSIZE);
|
||||||
|
} catch (FileNotFoundException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
int maxcount = 0;
|
int maxcount = 0;
|
||||||
for (CharStat cs : m_characters)
|
for (CharStat cs : m_characters)
|
||||||
{
|
{
|
||||||
|
@ -210,4 +243,19 @@ public class SourceGraphControl extends BufferedCanvas
|
||||||
public void resized(Rectangle bounds) {
|
public void resized(Rectangle bounds) {
|
||||||
refresh();
|
refresh();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Get the absolute path of a file, from the path relative to plugin root. */
|
||||||
|
private String getAbsFilePath(String relPath) {
|
||||||
|
Bundle bundle = Platform.getBundle(VisualizerExamplesPlugin.PLUGIN_ID);
|
||||||
|
URL fileURL = bundle.getEntry(relPath);
|
||||||
|
File file = null;
|
||||||
|
|
||||||
|
try {
|
||||||
|
file = new File(FileLocator.resolve(fileURL).toURI());
|
||||||
|
} catch (URISyntaxException | IOException e) {
|
||||||
|
// TODO Auto-generated catch block
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
return file.getAbsolutePath();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue