mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-04-29 19:45:01 +02:00
First commit of an example visualizer, which displays a count of problem markers.
This commit is contained in:
parent
45fd24540c
commit
bcce66726a
11 changed files with 461 additions and 0 deletions
|
@ -0,0 +1,7 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<classpath>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
|
||||
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
|
||||
<classpathentry kind="src" path="src"/>
|
||||
<classpathentry kind="output" path="bin"/>
|
||||
</classpath>
|
28
visualizer/org.eclipse.cdt.visualizer.examples/.project
Normal file
28
visualizer/org.eclipse.cdt.visualizer.examples/.project
Normal file
|
@ -0,0 +1,28 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<projectDescription>
|
||||
<name>org.eclipse.cdt.visualizer.examples</name>
|
||||
<comment></comment>
|
||||
<projects>
|
||||
</projects>
|
||||
<buildSpec>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.jdt.core.javabuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.pde.ManifestBuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.pde.SchemaBuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
</buildSpec>
|
||||
<natures>
|
||||
<nature>org.eclipse.pde.PluginNature</nature>
|
||||
<nature>org.eclipse.jdt.core.javanature</nature>
|
||||
</natures>
|
||||
</projectDescription>
|
|
@ -0,0 +1,70 @@
|
|||
#Tue Jun 24 11:04:56 PDT 2008
|
||||
eclipse.preferences.version=1
|
||||
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
|
||||
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
|
||||
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
|
||||
org.eclipse.jdt.core.compiler.compliance=1.6
|
||||
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
|
||||
org.eclipse.jdt.core.compiler.debug.localVariable=generate
|
||||
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
|
||||
org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
|
||||
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
|
||||
org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
|
||||
org.eclipse.jdt.core.compiler.problem.deprecation=warning
|
||||
org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
|
||||
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
|
||||
org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
|
||||
org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
|
||||
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
|
||||
org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
|
||||
org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
|
||||
org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
|
||||
org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
|
||||
org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
|
||||
org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
|
||||
org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
|
||||
org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
|
||||
org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
|
||||
org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
|
||||
org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
|
||||
org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
|
||||
org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
|
||||
org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
|
||||
org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
|
||||
org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
|
||||
org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
|
||||
org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
|
||||
org.eclipse.jdt.core.compiler.problem.nullReference=error
|
||||
org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
|
||||
org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
|
||||
org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
|
||||
org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning
|
||||
org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
|
||||
org.eclipse.jdt.core.compiler.problem.redundantNullCheck=ignore
|
||||
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore
|
||||
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
|
||||
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
|
||||
org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
|
||||
org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
|
||||
org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
|
||||
org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
|
||||
org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
|
||||
org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
|
||||
org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
|
||||
org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
|
||||
org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
|
||||
org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
|
||||
org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
|
||||
org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
|
||||
org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
|
||||
org.eclipse.jdt.core.compiler.problem.unusedImport=error
|
||||
org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
|
||||
org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
|
||||
org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
|
||||
org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
|
||||
org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
|
||||
org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
|
||||
org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
|
||||
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
|
||||
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
|
||||
org.eclipse.jdt.core.compiler.source=1.6
|
|
@ -0,0 +1,13 @@
|
|||
Manifest-Version: 1.0
|
||||
Bundle-ManifestVersion: 2
|
||||
Bundle-Name: %plugin.name
|
||||
Bundle-SymbolicName: org.eclipse.cdt.visualizer.examples;singleton:=true
|
||||
Bundle-Version: 1.0.0.qualifier
|
||||
Bundle-Activator: org.eclipse.cdt.visualizer.examples.VisualizerExamplesPlugin
|
||||
Bundle-Vendor: %provider.name
|
||||
Require-Bundle: org.eclipse.ui,
|
||||
org.eclipse.core.runtime,
|
||||
org.eclipse.cdt.visualizer.ui,
|
||||
org.eclipse.core.resources
|
||||
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
|
||||
Bundle-ActivationPolicy: lazy
|
|
@ -0,0 +1,5 @@
|
|||
source.. = src/
|
||||
output.. = bin/
|
||||
bin.includes = META-INF/,\
|
||||
.,\
|
||||
plugin.xml
|
|
@ -0,0 +1,18 @@
|
|||
# =============================================================================
|
||||
# Copyright (c) 2012 Ericsson 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:
|
||||
# Marc Khouzam (Ericsson) - initial API and implementation
|
||||
# =============================================================================
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# Plugin string resources
|
||||
# -----------------------------------------------------------------------------
|
||||
|
||||
plugin.name=CDT Visualizer Examples
|
||||
provider.name=Eclipse CDT
|
||||
|
12
visualizer/org.eclipse.cdt.visualizer.examples/plugin.xml
Normal file
12
visualizer/org.eclipse.cdt.visualizer.examples/plugin.xml
Normal file
|
@ -0,0 +1,12 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<?eclipse version="3.4"?>
|
||||
<plugin>
|
||||
<extension
|
||||
point="org.eclipse.cdt.visualizer.ui.visualizer">
|
||||
<visualizer
|
||||
class="org.eclipse.cdt.visualizer.examples.ProblemVisualizer"
|
||||
id="org.eclipse.cdt.visualizer.examples.counterVisualizer">
|
||||
</visualizer>
|
||||
</extension>
|
||||
|
||||
</plugin>
|
|
@ -0,0 +1,32 @@
|
|||
/*******************************************************************************
|
||||
* Copyright (c) 2009, 2011 Ericsson 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:
|
||||
* Ericsson - initial API and implementation
|
||||
* Jens Elmenthaler (Verigy) - Added Full GDB pretty-printing support (bug 302121)
|
||||
*******************************************************************************/
|
||||
package org.eclipse.cdt.visualizer.examples;
|
||||
|
||||
import org.eclipse.osgi.util.NLS;
|
||||
|
||||
/**
|
||||
* Preference strings.
|
||||
*/
|
||||
class Messages extends NLS {
|
||||
public static String CounterVisualizer_Name;
|
||||
public static String CounterVisualizer_DisplayName;
|
||||
public static String CounterVisualizer_Description;
|
||||
|
||||
|
||||
static {
|
||||
// initialize resource bundle
|
||||
NLS.initializeMessages(Messages.class.getName(), Messages.class);
|
||||
}
|
||||
|
||||
private Messages() {
|
||||
}
|
||||
}
|
|
@ -0,0 +1,14 @@
|
|||
###############################################################################
|
||||
# Copyright (c) 2012 Ericsson 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:
|
||||
# Marc Khouzam (Ericsson) - initial API and implementation
|
||||
###############################################################################
|
||||
|
||||
CounterVisualizer_Name=counter
|
||||
CounterVisualizer_DisplayName=Counter Visualizer
|
||||
CounterVisualizer_Description=Visualizer displaying the count of errors/warnings/info
|
|
@ -0,0 +1,212 @@
|
|||
/*******************************************************************************
|
||||
* 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:
|
||||
* Marc Khouzam (Ericsson) - initial API and implementation
|
||||
*******************************************************************************/
|
||||
package org.eclipse.cdt.visualizer.examples;
|
||||
|
||||
import org.eclipse.cdt.visualizer.ui.canvas.GraphicCanvas;
|
||||
import org.eclipse.cdt.visualizer.ui.canvas.GraphicCanvasVisualizer;
|
||||
import org.eclipse.cdt.visualizer.ui.canvas.GraphicObject;
|
||||
import org.eclipse.cdt.visualizer.ui.util.Colors;
|
||||
import org.eclipse.cdt.visualizer.ui.util.SelectionManager;
|
||||
import org.eclipse.cdt.visualizer.ui.util.SelectionUtils;
|
||||
import org.eclipse.core.resources.IMarker;
|
||||
import org.eclipse.core.resources.IResource;
|
||||
import org.eclipse.core.runtime.CoreException;
|
||||
import org.eclipse.jface.viewers.ISelection;
|
||||
import org.eclipse.swt.graphics.Color;
|
||||
import org.eclipse.swt.graphics.GC;
|
||||
import org.eclipse.swt.graphics.Rectangle;
|
||||
import org.eclipse.swt.widgets.Composite;
|
||||
|
||||
public class ProblemVisualizer extends GraphicCanvasVisualizer {
|
||||
|
||||
private static final int MARGIN_WIDTH = 10;
|
||||
private static final int MARGIN_HEIGHT = 10;
|
||||
private static final int SPACING_HEIGHT = 40;
|
||||
private static final int NUM_SEVERITY = 3;
|
||||
|
||||
private class BarGraphicObject extends GraphicObject {
|
||||
public BarGraphicObject(int severity, int x, int y, int w, int h) {
|
||||
super(x, y, w, h);
|
||||
|
||||
Color color = Colors.BLACK;
|
||||
|
||||
switch (severity) {
|
||||
case IMarker.SEVERITY_ERROR:
|
||||
color = Colors.DARK_RED;
|
||||
break;
|
||||
case IMarker.SEVERITY_WARNING:
|
||||
color = Colors.DARK_YELLOW;
|
||||
break;
|
||||
case IMarker.SEVERITY_INFO:
|
||||
color = Colors.DARK_BLUE;
|
||||
break;
|
||||
}
|
||||
setBackground(color);
|
||||
setForeground(color);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void paintContent(GC gc) {
|
||||
gc.fillRectangle(m_bounds);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private GraphicCanvas m_canvas;
|
||||
|
||||
private int[] m_markerCount = new int[NUM_SEVERITY];
|
||||
|
||||
public ProblemVisualizer() {
|
||||
super();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return Messages.CounterVisualizer_Name;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getDisplayName() {
|
||||
return Messages.CounterVisualizer_DisplayName;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getDescription() {
|
||||
return Messages.CounterVisualizer_Description;
|
||||
}
|
||||
|
||||
@Override
|
||||
public GraphicCanvas createCanvas(Composite parent) {
|
||||
m_canvas = new GraphicCanvas(parent);
|
||||
return m_canvas;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initializeCanvas(GraphicCanvas canvas) {
|
||||
// TODO Auto-generated method stub
|
||||
super.initializeCanvas(canvas);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int handlesSelection(ISelection selection) {
|
||||
Object sel = SelectionUtils.getSelectedObject(selection);
|
||||
|
||||
if (sel instanceof IResource) {
|
||||
return 2;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visualizerDeselected() {
|
||||
// TODO Auto-generated method stub
|
||||
super.visualizerDeselected();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visualizerSelected() {
|
||||
// TODO Auto-generated method stub
|
||||
super.visualizerSelected();
|
||||
}
|
||||
|
||||
private BarGraphicObject[] getBars() {
|
||||
BarGraphicObject[] bars = new BarGraphicObject[3];
|
||||
|
||||
Rectangle bounds = m_canvas.getBounds();
|
||||
|
||||
int x = bounds.x + MARGIN_WIDTH;
|
||||
int y = bounds.y + MARGIN_HEIGHT;
|
||||
|
||||
int spacing = SPACING_HEIGHT;
|
||||
int height = (bounds.height - 2 * MARGIN_HEIGHT - 2 * SPACING_HEIGHT) / 3;
|
||||
if (height <= 0) {
|
||||
spacing = 0;
|
||||
y = bounds.y;
|
||||
height = bounds.height / 3;
|
||||
}
|
||||
|
||||
// Find the maximum marker count to dictate the width
|
||||
int maxCount = Math.max(m_markerCount[0], m_markerCount[1]);
|
||||
maxCount = Math.max(maxCount, m_markerCount[2]);
|
||||
int maxWidth = bounds.width - 2 * MARGIN_WIDTH;
|
||||
if (maxCount == 0) maxCount = maxWidth;
|
||||
|
||||
int count = m_markerCount[IMarker.SEVERITY_ERROR];
|
||||
if (count == 0) count = 1;
|
||||
int width = maxWidth * count / maxCount;
|
||||
bars[0] = new BarGraphicObject(IMarker.SEVERITY_ERROR, x, y, width, height);
|
||||
|
||||
y = y + height + spacing;
|
||||
count = m_markerCount[IMarker.SEVERITY_WARNING];
|
||||
if (count == 0) count = 1;
|
||||
width = maxWidth * count / maxCount;
|
||||
bars[1] = new BarGraphicObject(IMarker.SEVERITY_WARNING, x, y, width, height);
|
||||
|
||||
y = y + height + spacing;
|
||||
count = m_markerCount[IMarker.SEVERITY_INFO];
|
||||
if (count == 0) count = 1;
|
||||
width = maxWidth * count / maxCount;
|
||||
bars[2] = new BarGraphicObject(IMarker.SEVERITY_INFO, x, y, width, height);
|
||||
|
||||
return bars;
|
||||
}
|
||||
|
||||
private void setMarkerCount(IResource resource) {
|
||||
m_markerCount[IMarker.SEVERITY_ERROR] = 0;
|
||||
m_markerCount[IMarker.SEVERITY_WARNING] = 0;
|
||||
m_markerCount[IMarker.SEVERITY_INFO] = 0;
|
||||
|
||||
IMarker[] problems = null;
|
||||
try {
|
||||
problems = resource.findMarkers(IMarker.PROBLEM, true, IResource.DEPTH_INFINITE);
|
||||
} catch (CoreException e) {
|
||||
return;
|
||||
}
|
||||
|
||||
for (IMarker problem : problems) {
|
||||
try {
|
||||
Object attrValue = problem.getAttribute(IMarker.SEVERITY);
|
||||
if (attrValue != null && attrValue instanceof Integer) {
|
||||
int severity = (Integer)attrValue;
|
||||
m_markerCount[severity]++;
|
||||
}
|
||||
} catch (CoreException e) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void workbenchSelectionChanged(ISelection selection) {
|
||||
m_canvas.clear();
|
||||
|
||||
Object sel = SelectionUtils.getSelectedObject(selection);
|
||||
|
||||
if (sel instanceof IResource) {
|
||||
m_canvas.setBackground(Colors.WHITE);
|
||||
|
||||
setMarkerCount((IResource)sel);
|
||||
|
||||
BarGraphicObject[] bars = getBars();
|
||||
|
||||
for (BarGraphicObject bar : bars) {
|
||||
m_canvas.add(bar);
|
||||
}
|
||||
}
|
||||
|
||||
m_canvas.redraw();
|
||||
}
|
||||
|
||||
public SelectionManager getSelectionManager() {
|
||||
return m_selectionManager;
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,50 @@
|
|||
package org.eclipse.cdt.visualizer.examples;
|
||||
|
||||
import org.eclipse.ui.plugin.AbstractUIPlugin;
|
||||
import org.osgi.framework.BundleContext;
|
||||
|
||||
/**
|
||||
* The activator class controls the plug-in life cycle
|
||||
*/
|
||||
public class VisualizerExamplesPlugin extends AbstractUIPlugin {
|
||||
|
||||
// The plug-in ID
|
||||
public static final String PLUGIN_ID = "org.eclipse.cdt.visualizer.examples"; //$NON-NLS-1$
|
||||
|
||||
// The shared instance
|
||||
private static VisualizerExamplesPlugin plugin;
|
||||
|
||||
/**
|
||||
* The constructor
|
||||
*/
|
||||
public VisualizerExamplesPlugin() {
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
* @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
|
||||
*/
|
||||
public void start(BundleContext context) throws Exception {
|
||||
super.start(context);
|
||||
plugin = this;
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
* @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
|
||||
*/
|
||||
public void stop(BundleContext context) throws Exception {
|
||||
plugin = null;
|
||||
super.stop(context);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the shared instance
|
||||
*
|
||||
* @return the shared instance
|
||||
*/
|
||||
public static VisualizerExamplesPlugin getDefault() {
|
||||
return plugin;
|
||||
}
|
||||
|
||||
}
|
Loading…
Add table
Reference in a new issue