diff --git a/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/reports/ReportManager.java b/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/reports/ReportManager.java index 8f37c00394..e4c73e37f3 100644 --- a/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/reports/ReportManager.java +++ b/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/reports/ReportManager.java @@ -10,6 +10,7 @@ import net.sourceforge.pmd.eclipse.runtime.preferences.IPreferences; import net.sourceforge.pmd.renderers.CSVRenderer; import net.sourceforge.pmd.renderers.HTMLRenderer; import net.sourceforge.pmd.renderers.Renderer; +import net.sourceforge.pmd.renderers.SummaryHTMLRenderer; import net.sourceforge.pmd.renderers.TextRenderer; import net.sourceforge.pmd.renderers.VBHTMLRenderer; import net.sourceforge.pmd.renderers.XMLRenderer; @@ -36,6 +37,7 @@ public class ReportManager { return new Renderer[] { new HTMLRenderer(props), + new SummaryHTMLRenderer(props), new CSVRenderer(props), new XMLRenderer(props), new TextRenderer(props), diff --git a/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/views/cpd2/CPDView2.java b/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/views/cpd2/CPDView2.java index 1c3cca986d..92208dd169 100644 --- a/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/views/cpd2/CPDView2.java +++ b/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/views/cpd2/CPDView2.java @@ -14,14 +14,18 @@ import net.sourceforge.pmd.eclipse.runtime.PMDRuntimeConstants; import net.sourceforge.pmd.eclipse.ui.nls.StringKeys; import net.sourceforge.pmd.util.StringUtil; +import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.TreeNode; import org.eclipse.jface.viewers.TreeNodeContentProvider; import org.eclipse.jface.viewers.TreeViewer; import org.eclipse.swt.SWT; +import org.eclipse.swt.events.KeyAdapter; +import org.eclipse.swt.events.KeyEvent; import org.eclipse.swt.graphics.Color; import org.eclipse.swt.graphics.GC; import org.eclipse.swt.graphics.Point; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Event; import org.eclipse.swt.widgets.Listener; @@ -58,6 +62,7 @@ public class CPDView2 extends ViewPart implements IPropertyListener { private static final int SpanColumnWidth = 50; private static final int MAX_MATCHES = 100; private static final int xGap = 6; + private static final String TabEquivalent = " "; // tab char == 4 spaces public static final int SourceColumnIdx = 1; private static List<Match> asList(Iterator<Match> matchIter) { @@ -86,7 +91,7 @@ public class CPDView2 extends ViewPart implements IPropertyListener { public static String[] sourceLinesFrom(Match match, boolean trimLeadingWhitespace) { - final String text = match.getSourceCodeSlice().replaceAll("\t", " "); + final String text = match.getSourceCodeSlice().replaceAll("\t", TabEquivalent); final StringTokenizer lines = new StringTokenizer(text, "\n"); List<String> sourceLines = new ArrayList<String>(); @@ -167,7 +172,8 @@ public class CPDView2 extends ViewPart implements IPropertyListener { treeViewer.setContentProvider(contentProvider); treeViewer.setLabelProvider(labelProvider); - + addDeleteListener(treeViewer.getControl()); + createColumns(tree); CPDViewTooltipListener2 tooltipListener = new CPDViewTooltipListener2(this); @@ -180,6 +186,24 @@ public class CPDView2 extends ViewPart implements IPropertyListener { packageColor = disp.getSystemColor(SWT.COLOR_GRAY); } + protected void addDeleteListener(Control control) { + + control.addKeyListener(new KeyAdapter() { + public void keyPressed(KeyEvent ev) { + if (ev.character == SWT.DEL) { + removeSelectedItems(); + } + } + }); + } + + // TODO fix - not deleting 'model' elements? + private void removeSelectedItems() { + IStructuredSelection selection = (IStructuredSelection)treeViewer.getSelection(); + Object[] items = selection.toArray(); + treeViewer.remove(items); + } + public int inColumn(Point point) { if (columnWidths == null) return -1; diff --git a/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/views/cpd2/CPDViewTooltipListener2.java b/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/views/cpd2/CPDViewTooltipListener2.java index 4b5bbde39c..973afd6b8e 100644 --- a/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/views/cpd2/CPDViewTooltipListener2.java +++ b/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/views/cpd2/CPDViewTooltipListener2.java @@ -138,6 +138,7 @@ public class CPDViewTooltipListener2 implements Listener { for (int i=0; i<names.length; i++) { int rightEdge = colWidth - (cellWidth * i); int[] widths = view.widthsFor(names[i]); + if (widths == null) continue; int classWidth = widths[1]; if (location.x > rightEdge-classWidth && // right of the start? location.x < rightEdge) { // left of the end?