From db1d377da697764783ac976a245789e5637e4f92 Mon Sep 17 00:00:00 2001 From: eyck Date: Sat, 20 Jun 2020 17:58:26 +0200 Subject: [PATCH 1/6] fix redraw issues --- .../database/swt/internal/ArrowPainter.java | 38 +++--- .../database/swt/internal/CursorPainter.java | 17 +-- .../database/swt/internal/IPainter.java | 3 +- .../database/swt/internal/Projection.java | 123 ++++++++++++++++++ .../database/swt/internal/RulerPainter.java | 6 +- .../database/swt/internal/SignalPainter.java | 111 ++++++++-------- .../database/swt/internal/StreamPainter.java | 50 +++---- .../swt/internal/TrackAreaPainter.java | 14 +- .../database/swt/internal/WaveformCanvas.java | 28 +--- 9 files changed, 244 insertions(+), 146 deletions(-) create mode 100644 plugins/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/internal/Projection.java diff --git a/plugins/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/internal/ArrowPainter.java b/plugins/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/internal/ArrowPainter.java index 04dcbca..df17fb2 100644 --- a/plugins/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/internal/ArrowPainter.java +++ b/plugins/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/internal/ArrowPainter.java @@ -89,9 +89,8 @@ public class ArrowPainter implements IPainter { deferredUpdate = true; return; } - selectionOffset = waveCanvas.getXOffset(); int laneHeight = painter.getHeight() / stream.getMaxConcurrency(); - txRectangle = new Rectangle((int) (tx.getBeginTime() / scaleFactor-waveCanvas.getXOffset()), + txRectangle = new Rectangle((int) (tx.getBeginTime() / scaleFactor), waveCanvas.rulerHeight + painter.getVerticalOffset() + laneHeight * tx.getConcurrencyIndex(), (int) ((tx.getEndTime() - tx.getBeginTime()) / scaleFactor), laneHeight); deriveGeom(tx.getIncomingRelations(), iRect, false); @@ -105,7 +104,7 @@ public class ArrowPainter implements IPainter { ITxStream stream = otherTx.getStream(); IWaveformPainter painter = waveCanvas.wave2painterMap.get(stream); int laneHeight = painter.getHeight() / stream.getMaxConcurrency(); - Rectangle bb = new Rectangle((int) (otherTx.getBeginTime() / scaleFactor-waveCanvas.getXOffset()), + Rectangle bb = new Rectangle((int) (otherTx.getBeginTime() / scaleFactor), waveCanvas.rulerHeight + painter.getVerticalOffset() + laneHeight * otherTx.getConcurrencyIndex(), (int) ((otherTx.getEndTime() - otherTx.getBeginTime()) / scaleFactor), laneHeight); @@ -115,7 +114,7 @@ public class ArrowPainter implements IPainter { } @Override - public void paintArea(GC gc, Rectangle area) { + public void paintArea(Projection proj, Rectangle clientRect) { Color fgColor = waveCanvas.colors[WaveformColors.REL_ARROW.ordinal()]; Color highliteColor = waveCanvas.colors[WaveformColors.REL_ARROW_HIGHLITE.ordinal()]; @@ -124,33 +123,30 @@ public class ArrowPainter implements IPainter { calculateGeometries(); } if(txRectangle == null) return; - int correctionValue = (int)(selectionOffset - waveCanvas.getXOffset()); + int correctionValue = (int)(selectionOffset); Rectangle correctedTargetRectangle = new Rectangle(txRectangle.x+correctionValue, txRectangle.y, txRectangle.width, txRectangle.height); for (LinkEntry entry : iRect) { Rectangle correctedRectangle = new Rectangle(entry.rectangle.x+correctionValue, entry.rectangle.y, entry.rectangle.width, entry.rectangle.height); - Point target = drawPath(gc, highlightType.equals(entry.relationType) ? highliteColor : fgColor, + Point target = drawPath(proj, highlightType.equals(entry.relationType) ? highliteColor : fgColor, correctedRectangle, correctedTargetRectangle); - drawArrow(gc, target); + drawArrow(proj, target); } for (LinkEntry entry : oRect) { Rectangle correctedRectangle = new Rectangle(entry.rectangle.x+correctionValue, entry.rectangle.y, entry.rectangle.width, entry.rectangle.height); - Point target = drawPath(gc, highlightType.equals(entry.relationType) ? highliteColor : fgColor, correctedTargetRectangle, + Point target = drawPath(proj, highlightType.equals(entry.relationType) ? highliteColor : fgColor, correctedTargetRectangle, correctedRectangle); - drawArrow(gc, target); + drawArrow(proj, target); } } - protected void drawArrow(GC gc, Point target) { - gc.drawLine(target.x - 8, target.y - 5, target.x, target.y); - gc.drawLine(target.x - 8, target.y + 5, target.x, target.y); + protected void drawArrow(Projection proj, Point target) { + proj.drawLine(target.x - 8, target.y - 5, target.x, target.y); + proj.drawLine(target.x - 8, target.y + 5, target.x, target.y); } - protected Point drawPath(GC gc, Color fgColor, Rectangle srcRectangle, Rectangle tgtRectangle) { - Point point1 = new Point(0, srcRectangle.y + srcRectangle.height / 2); - Point point2 = new Point(0, tgtRectangle.y + tgtRectangle.height / 2); - - point1.x = srcRectangle.x; - point2.x = tgtRectangle.x; + protected Point drawPath(Projection proj, Color fgColor, Rectangle srcRectangle, Rectangle tgtRectangle) { + Point point1 = proj.project(new Point(srcRectangle.x, srcRectangle.y + srcRectangle.height / 2)); + Point point2 = proj.project(new Point(tgtRectangle.x, tgtRectangle.y + tgtRectangle.height / 2)); if (point2.x > point1.x + srcRectangle.width) point1.x += srcRectangle.width; @@ -165,9 +161,9 @@ public class ArrowPainter implements IPainter { path.cubicTo(center.x + xCtrlOffset, center.y, point2.x - xCtrlOffset, point2.y, point2.x, point2.y); } else path.cubicTo(point1.x + xCtrlOffset, point1.y, point2.x - xCtrlOffset, point2.y, point2.x, point2.y); - gc.setAntialias(SWT.ON); - gc.setForeground(fgColor); - gc.drawPath(path); + proj.setAntialias(SWT.ON); + proj.setForeground(fgColor); + proj.getGC().drawPath(path); path.dispose(); return point2; } diff --git a/plugins/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/internal/CursorPainter.java b/plugins/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/internal/CursorPainter.java index a23e8c2..bd96c87 100644 --- a/plugins/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/internal/CursorPainter.java +++ b/plugins/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/internal/CursorPainter.java @@ -12,6 +12,7 @@ package com.minres.scviewer.database.swt.internal; import org.eclipse.swt.graphics.Color; import org.eclipse.swt.graphics.GC; +import org.eclipse.swt.graphics.Point; import org.eclipse.swt.graphics.Rectangle; import com.minres.scviewer.database.ui.ICursor; @@ -62,30 +63,30 @@ public class CursorPainter implements IPainter, ICursor { } - public void paintArea(GC gc, Rectangle area) { + public void paintArea(Projection proj, Rectangle clientRect) { + Rectangle area = proj.unProject(clientRect); if(this.waveCanvas.painterList.size()>0){ long scaleFactor=waveCanvas.getScaleFactor(); long beginPos = area.x; maxPosX = area.x + area.width; - maxValX = maxPosX + (int)waveCanvas.getXOffset(); + maxValX = maxPosX; // x position of marker in pixels on canvas int x = (int) (time/scaleFactor); // distance of marker from the top of Canvas' painting area int top = id<0?area.y:area.y+15; - Color drawColor=waveCanvas.colors[id<0?WaveformColors.CURSOR.ordinal():WaveformColors.MARKER.ordinal()]; Color dragColor = waveCanvas.colors[WaveformColors.CURSOR_DRAG.ordinal()]; Color textColor=waveCanvas.colors[id<0?WaveformColors.CURSOR_TEXT.ordinal():WaveformColors.MARKER_TEXT.ordinal()]; if(x>=beginPos && x<=maxValX){ - gc.setForeground(isDragging?dragColor:drawColor); - gc.drawLine(x-(int)waveCanvas.getXOffset(), top, x-(int)waveCanvas.getXOffset(), area.y+area.height); - gc.setBackground(drawColor); - gc.setForeground(textColor); + proj.setForeground(isDragging?dragColor:drawColor); + proj.drawLine(x, top, x, area.y+area.height); + proj.setBackground(drawColor); + proj.setForeground(textColor); Double dTime=new Double(time); - gc.drawText((dTime/waveCanvas.getScaleFactorPow10())+waveCanvas.getUnitStr(), x+1-(int)waveCanvas.getXOffset(), top); + proj.drawText((dTime/waveCanvas.getScaleFactorPow10())+waveCanvas.getUnitStr(), x+1, top); } } } diff --git a/plugins/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/internal/IPainter.java b/plugins/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/internal/IPainter.java index 60d2992..d093f71 100644 --- a/plugins/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/internal/IPainter.java +++ b/plugins/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/internal/IPainter.java @@ -10,11 +10,10 @@ *******************************************************************************/ package com.minres.scviewer.database.swt.internal; -import org.eclipse.swt.graphics.GC; import org.eclipse.swt.graphics.Rectangle; public interface IPainter { - void paintArea(GC gc,Rectangle area); + void paintArea(Projection gc, Rectangle area); } \ No newline at end of file diff --git a/plugins/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/internal/Projection.java b/plugins/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/internal/Projection.java new file mode 100644 index 0000000..7bd4592 --- /dev/null +++ b/plugins/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/internal/Projection.java @@ -0,0 +1,123 @@ +package com.minres.scviewer.database.swt.internal; + +import java.util.Arrays; + +import org.eclipse.swt.graphics.Color; +import org.eclipse.swt.graphics.GC; +import org.eclipse.swt.graphics.Path; +import org.eclipse.swt.graphics.Point; +import org.eclipse.swt.graphics.Rectangle; + +public class Projection { + + private Point translation; + private GC gc; + + public Projection(GC gc) { + super(); + this.gc = gc; + translation=new Point(0, 0); + } + + void setTranslation(Point t) { + translation = t; + } + + void setGC(GC gc) { + this.gc=gc; + } + + Point getTranslation() { + return translation; + } + + Point project(Point p) { + return new Point(p.x+translation.x, p.y+translation.y); + } + + public Rectangle unProject(Rectangle r) { + return new Rectangle(r.x-translation.x, r.y-translation.y, r.width, r.height); + } + + public void setBackground(Color color) { + gc.setBackground(color); + } + public void setFillRule(int rule) { + gc.setFillRule(rule); + } + public void fillRectangle(Rectangle rect) { + gc.fillRectangle(rect.x+translation.x, rect.y+translation.y, rect.width, rect.height); + } + + public void setLineStyle(int style) { + gc.setLineStyle(style); + } + + public void setLineWidth(int width) { + gc.setLineWidth(width); + } + + public void setForeground(Color color) { + gc.setForeground(color); + } + + public void drawLine(int x1, int y1, int x2, int y2) { + gc.drawLine(x1+translation.x, y1+translation.y, x2+translation.x, y2+translation.y); + + } + + public GC getGC() { + return gc; + } + + public void drawRectangle(Rectangle rect) { + gc.drawRectangle(rect.x+translation.y, rect.y+translation.y, rect.width, rect.height); + } + + public void fillRoundRectangle(int x, int y, int width, int height, int arcWidth, int arcHeight) { + gc.fillRoundRectangle(x+translation.x, y+translation.y, width, height, arcWidth, arcHeight); + } + + public void drawRoundRectangle(int x, int y, int width, int height, int arcWidth, int arcHeight) { + gc.drawRoundRectangle(x+translation.x, y+translation.y, width, height, arcWidth, arcHeight); + } + + public void setAntialias(int antialias) { + gc.setAntialias(antialias); + } + + public void drawText(String string, int x, int y) { + gc.drawText(string, x+translation.x, y+translation.y); + } + + private int[] project(int[] points) { + int[] res = Arrays.copyOf(points, points.length); + for(int i=0; i maxPosX ? maxPosX : (int) ltmp; } - public void paintArea(GC gc, Rectangle area) { + public void paintArea(Projection proj, Rectangle area) { ISignal signal = trackEntry.getSignal(); if (trackEntry.selected) - gc.setBackground(this.waveCanvas.colors[WaveformColors.TRACK_BG_HIGHLITE.ordinal()]); + proj.setBackground(this.waveCanvas.colors[WaveformColors.TRACK_BG_HIGHLITE.ordinal()]); else - gc.setBackground(this.waveCanvas.colors[even ? WaveformColors.TRACK_BG_EVEN.ordinal() : WaveformColors.TRACK_BG_ODD.ordinal()]); - gc.setFillRule(SWT.FILL_EVEN_ODD); - gc.fillRectangle(area); + proj.setBackground(this.waveCanvas.colors[even ? WaveformColors.TRACK_BG_EVEN.ordinal() : WaveformColors.TRACK_BG_ODD.ordinal()]); + proj.setFillRule(SWT.FILL_EVEN_ODD); + proj.fillRectangle(area); long scaleFactor = this.waveCanvas.getScaleFactor(); long beginPos = area.x; - long beginTime = (beginPos + waveCanvas.getXOffset())*scaleFactor; + long beginTime = beginPos*scaleFactor; long endTime = beginTime + area.width*scaleFactor; Entry first = signal.getEvents().floorEntry(beginTime); @@ -106,18 +106,17 @@ public class SignalPainter extends TrackPainter { } else if (last == null) { last = signal.getEvents().lastEntry(); } - gc.setForeground(this.waveCanvas.colors[WaveformColors.LINE.ordinal()]); - gc.setLineStyle(SWT.LINE_SOLID); - gc.setLineWidth(1); + proj.setForeground(this.waveCanvas.colors[WaveformColors.LINE.ordinal()]); + proj.setLineStyle(SWT.LINE_SOLID); + proj.setLineWidth(1); NavigableMap entries = signal.getEvents().subMap(first.getKey(), false, last.getKey(), true); SignalChange left = new SignalChange(first); SignalChange right = new SignalChange(entries.size() > 0 ? entries.firstEntry() : first); maxPosX = area.x + area.width; - maxValX = maxPosX + (int)waveCanvas.getXOffset(); yOffsetT = this.waveCanvas.getTrackHeight() / 5 + area.y; yOffsetM = this.waveCanvas.getTrackHeight() / 2 + area.y; yOffsetB = 4 * this.waveCanvas.getTrackHeight() / 5 + area.y; - int xSigChangeBeginVal = Math.max(area.x + (int)waveCanvas.getXOffset(), (int) (left.time / this.waveCanvas.getScaleFactor())); + int xSigChangeBeginVal = Math.max(area.x, (int) (left.time / this.waveCanvas.getScaleFactor())); int xSigChangeBeginPos = area.x; int xSigChangeEndPos = Math.max(area.x, getXPosEnd(right.time)); @@ -138,9 +137,9 @@ public class SignalPainter extends TrackPainter { } - SignalStencil stencil = getStencil(gc, left, entries); + SignalStencil stencil = getStencil(proj.getGC(), left, entries); do { - stencil.draw(gc, area, left.value, right.value, xSigChangeBeginPos, xSigChangeEndPos, multiple); + stencil.draw(proj, area, left.value, right.value, xSigChangeBeginPos, xSigChangeEndPos, multiple); if (right.time >= endTime) break; left.assign(right); @@ -179,7 +178,7 @@ public class SignalPainter extends TrackPainter { private interface SignalStencil { - public void draw(GC gc, Rectangle area, Object left, Object right, int xBegin, int xEnd, boolean multiple); + public void draw(Projection proj, Rectangle area, Object left, Object right, int xBegin, int xEnd, boolean multiple); } private class MultiBitStencil implements SignalStencil { @@ -193,7 +192,7 @@ public class SignalPainter extends TrackPainter { tmpAwtFont = new java.awt.Font(fd.getName(), fd.getStyle(), height); } - public void draw(GC gc, Rectangle area, Object left, Object right, int xBegin, int xEnd, boolean multiple) { + public void draw(Projection proj, Rectangle area, Object left, Object right, int xBegin, int xEnd, boolean multiple) { Color colorBorder = waveCanvas.colors[WaveformColors.SIGNAL0.ordinal()]; BitVector last = (BitVector) left; if (last.getValue().toString().contains("X")) { @@ -211,9 +210,9 @@ public class SignalPainter extends TrackPainter { xEnd - 1, yOffsetB, xBegin + 1, yOffsetB }; - gc.setForeground(colorBorder); - gc.drawPolygon(points); - gc.setForeground(waveCanvas.colors[WaveformColors.SIGNAL_TEXT.ordinal()]); + proj.setForeground(colorBorder); + proj.drawPolygon(points); + proj.setForeground(waveCanvas.colors[WaveformColors.SIGNAL_TEXT.ordinal()]); //TODO: this code should be provided from a central location String label = null; switch(trackEntry.valueDisplay) { @@ -226,27 +225,23 @@ public class SignalPainter extends TrackPainter { default: label="h'"+last.toHexString(); } - Point bb = getBoxWidth(gc, label); + Point bb = new Point(DUMMY_PANEL.getFontMetrics(tmpAwtFont).stringWidth(label), height); if (xBegin < area.x) { xBegin = area.x; width = xEnd - xBegin; } if (width > (bb.x+1)) { - Rectangle old = gc.getClipping(); - gc.setClipping(xBegin + 3, yOffsetT, xEnd - xBegin - 5, yOffsetB - yOffsetT); - gc.drawText(label, xBegin + 3, yOffsetM - bb.y / 2 - 1); - gc.setClipping(old); + Rectangle old = proj.getClipping(); + proj.setClipping(xBegin + 3, yOffsetT, xEnd - xBegin - 5, yOffsetB - yOffsetT); + proj.drawText(label, xBegin + 3, yOffsetM - bb.y / 2 - 1); + proj.setClipping(old); } } else { - gc.setForeground(colorBorder); - gc.drawLine(xEnd, yOffsetT, xEnd, yOffsetB); + proj.setForeground(colorBorder); + proj.drawLine(xEnd, yOffsetT, xEnd, yOffsetB); } } - private Point getBoxWidth(GC gc, String label) { - return new Point(DUMMY_PANEL.getFontMetrics(tmpAwtFont).stringWidth(label), height); - } - } private class MultiBitStencilAnalog implements SignalStencil { @@ -277,25 +272,25 @@ public class SignalPainter extends TrackPainter { } - public void draw(GC gc, Rectangle area, Object left, Object right, int xBegin, int xEnd, boolean multiple) { + public void draw(Projection proj, Rectangle area, Object left, Object right, int xBegin, int xEnd, boolean multiple) { long leftVal = ((BitVector) left).toUnsignedValue(); long rightVal= ((BitVector) right).toUnsignedValue(); - gc.setForeground(waveCanvas.colors[WaveformColors.SIGNAL_REAL.ordinal()]); + proj.setForeground(waveCanvas.colors[WaveformColors.SIGNAL_REAL.ordinal()]); int yOffsetLeft = (int) ((leftVal-minVal) / range * (yOffsetB-yOffsetT)); int yOffsetRight = (int) ((rightVal-minVal) / range * (yOffsetB-yOffsetT)); if(continous) { if (xEnd > maxPosX) { - gc.drawLine(xBegin, yOffsetB-yOffsetLeft, maxPosX, yOffsetB-yOffsetRight); + proj.drawLine(xBegin, yOffsetB-yOffsetLeft, maxPosX, yOffsetB-yOffsetRight); } else { - gc.drawLine(xBegin, yOffsetB-yOffsetLeft, xEnd, yOffsetB-yOffsetRight); + proj.drawLine(xBegin, yOffsetB-yOffsetLeft, xEnd, yOffsetB-yOffsetRight); } } else { if (xEnd > maxPosX) { - gc.drawLine(xBegin, yOffsetB-yOffsetLeft, maxPosX, yOffsetB-yOffsetLeft); + proj.drawLine(xBegin, yOffsetB-yOffsetLeft, maxPosX, yOffsetB-yOffsetLeft); } else { - gc.drawLine(xBegin, yOffsetB-yOffsetLeft, xEnd, yOffsetB-yOffsetLeft); + proj.drawLine(xBegin, yOffsetB-yOffsetLeft, xEnd, yOffsetB-yOffsetLeft); if(yOffsetRight!=yOffsetLeft) { - gc.drawLine(xEnd, yOffsetB-yOffsetLeft, xEnd, yOffsetB-yOffsetRight); + proj.drawLine(xEnd, yOffsetB-yOffsetLeft, xEnd, yOffsetB-yOffsetRight); } } } @@ -303,12 +298,12 @@ public class SignalPainter extends TrackPainter { } private class SingleBitStencil implements SignalStencil { - public void draw(GC gc, Rectangle area, Object left, Object right, int xBegin, int xEnd, boolean multiple) { + public void draw(Projection proj, Rectangle area, Object left, Object right, int xBegin, int xEnd, boolean multiple) { if (multiple) { - gc.setForeground(waveCanvas.colors[WaveformColors.SIGNALU.ordinal()]); - gc.drawLine(xBegin, yOffsetT, xBegin, yOffsetB); + proj.setForeground(waveCanvas.colors[WaveformColors.SIGNALU.ordinal()]); + proj.drawLine(xBegin, yOffsetT, xBegin, yOffsetB); if(xEnd>xBegin) - gc.drawLine(xEnd, yOffsetT, xEnd, yOffsetB); + proj.drawLine(xEnd, yOffsetT, xEnd, yOffsetB); } else { Color color = waveCanvas.colors[WaveformColors.SIGNALX.ordinal()]; int yOffset = yOffsetM; @@ -326,11 +321,11 @@ public class SignalPainter extends TrackPainter { break; default: } - gc.setForeground(color); + proj.setForeground(color); if (xEnd > maxPosX) { - gc.drawLine(xBegin, yOffset, maxPosX, yOffset); + proj.drawLine(xBegin, yOffset, maxPosX, yOffset); } else { - gc.drawLine(xBegin, yOffset, xEnd, yOffset); + proj.drawLine(xBegin, yOffset, xEnd, yOffset); int yNext = yOffsetM; switch (((BitVector) right).getValue()[0]) { case '1': @@ -342,7 +337,7 @@ public class SignalPainter extends TrackPainter { default: } if (yOffset != yNext) - gc.drawLine(xEnd, yOffset, xEnd, yNext); + proj.drawLine(xEnd, yOffset, xEnd, yNext); } } } @@ -383,7 +378,7 @@ public class SignalPainter extends TrackPainter { } } - public void draw(GC gc, Rectangle area, Object left, Object right, int xBegin, int xEnd, boolean multiple) { + public void draw(Projection proj, Rectangle area, Object left, Object right, int xBegin, int xEnd, boolean multiple) { double leftVal = (Double) left; double rightVal= (Double) right; if(Double.isNaN(leftVal)) { @@ -396,31 +391,31 @@ public class SignalPainter extends TrackPainter { xEnd, yOffsetB, xBegin, yOffsetB }; - gc.setForeground(color); - gc.drawPolygon(points); - gc.setBackground(color); - gc.fillPolygon(points); + proj.setForeground(color); + proj.drawPolygon(points); + proj.setBackground(color); + proj.fillPolygon(points); } else { - gc.setForeground(color); - gc.drawLine(xEnd, yOffsetT, xEnd, yOffsetB); + proj.setForeground(color); + proj.drawLine(xEnd, yOffsetT, xEnd, yOffsetB); } } else { - gc.setForeground(waveCanvas.colors[WaveformColors.SIGNAL_REAL.ordinal()]); + proj.setForeground(waveCanvas.colors[WaveformColors.SIGNAL_REAL.ordinal()]); int yOffsetLeft = (int) ((leftVal-minVal) / range * (yOffsetB-yOffsetT)); int yOffsetRight = Double.isNaN(rightVal)?yOffsetLeft:(int) ((rightVal-minVal) / range * (yOffsetB-yOffsetT)); if(continous) { if (xEnd > maxPosX) { - gc.drawLine(xBegin, yOffsetB-yOffsetLeft, maxPosX, yOffsetB-yOffsetRight); + proj.drawLine(xBegin, yOffsetB-yOffsetLeft, maxPosX, yOffsetB-yOffsetRight); } else { - gc.drawLine(xBegin, yOffsetB-yOffsetLeft, xEnd, yOffsetB-yOffsetRight); + proj.drawLine(xBegin, yOffsetB-yOffsetLeft, xEnd, yOffsetB-yOffsetRight); } } else { if (xEnd > maxPosX) { - gc.drawLine(xBegin, yOffsetB-yOffsetLeft, maxPosX, yOffsetB-yOffsetLeft); + proj.drawLine(xBegin, yOffsetB-yOffsetLeft, maxPosX, yOffsetB-yOffsetLeft); } else { - gc.drawLine(xBegin, yOffsetB-yOffsetLeft, xEnd, yOffsetB-yOffsetLeft); + proj.drawLine(xBegin, yOffsetB-yOffsetLeft, xEnd, yOffsetB-yOffsetLeft); if(yOffsetRight!=yOffsetLeft) { - gc.drawLine(xEnd, yOffsetB-yOffsetLeft, xEnd, yOffsetB-yOffsetRight); + proj.drawLine(xEnd, yOffsetB-yOffsetLeft, xEnd, yOffsetB-yOffsetRight); } } } diff --git a/plugins/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/internal/StreamPainter.java b/plugins/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/internal/StreamPainter.java index cad44fd..4d36c2b 100644 --- a/plugins/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/internal/StreamPainter.java +++ b/plugins/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/internal/StreamPainter.java @@ -60,22 +60,22 @@ public class StreamPainter extends TrackPainter{ } @SuppressWarnings("unchecked") - public void paintArea(GC gc, Rectangle area) { + public void paintArea(Projection proj, Rectangle area) { if(stream.getEvents().size()==0) return; int trackHeight=trackEntry.height/stream.getMaxConcurrency(); txBase=trackHeight/5; txHeight=trackHeight*3/5; if(trackEntry.selected) { - gc.setBackground(this.waveCanvas.colors[WaveformColors.TRACK_BG_HIGHLITE.ordinal()]); + proj.setBackground(this.waveCanvas.colors[WaveformColors.TRACK_BG_HIGHLITE.ordinal()]); } else - gc.setBackground(this.waveCanvas.colors[even?WaveformColors.TRACK_BG_EVEN.ordinal():WaveformColors.TRACK_BG_ODD.ordinal()]); - gc.setFillRule(SWT.FILL_EVEN_ODD); - gc.fillRectangle(area); + proj.setBackground(this.waveCanvas.colors[even?WaveformColors.TRACK_BG_EVEN.ordinal():WaveformColors.TRACK_BG_ODD.ordinal()]); + proj.setFillRule(SWT.FILL_EVEN_ODD); + proj.fillRectangle(area); long scaleFactor = this.waveCanvas.getScaleFactor(); long beginPos = area.x; - long beginTime = (beginPos + waveCanvas.getXOffset())*scaleFactor; + long beginTime = beginPos*scaleFactor; //long endPos = beginPos + area.width; long endTime = beginTime + area.width*scaleFactor; @@ -83,21 +83,21 @@ public class StreamPainter extends TrackPainter{ Entry lastTx=stream.getEvents().ceilingEntry(endTime); if(firstTx==null) firstTx = stream.getEvents().firstEntry(); if(lastTx==null) lastTx=stream.getEvents().lastEntry(); - gc.setFillRule(SWT.FILL_EVEN_ODD); - gc.setLineStyle(SWT.LINE_SOLID); - gc.setLineWidth(1); - gc.setForeground(this.waveCanvas.colors[WaveformColors.LINE.ordinal()]); + proj.setFillRule(SWT.FILL_EVEN_ODD); + proj.setLineStyle(SWT.LINE_SOLID); + proj.setLineWidth(1); + proj.setForeground(this.waveCanvas.colors[WaveformColors.LINE.ordinal()]); for( int y1=area.y+trackHeight/2; y1)firstTx.getValue()) - drawTx(gc, area, txEvent.getTransaction(), false); + drawTx(proj, area, txEvent.getTransaction(), false); }else{ seenTx.clear(); NavigableMap entries = stream.getEvents().subMap(firstTx.getKey(), true, lastTx.getKey(), true); boolean highlighed=false; - gc.setForeground(this.waveCanvas.colors[WaveformColors.LINE.ordinal()]); + proj.setForeground(this.waveCanvas.colors[WaveformColors.LINE.ordinal()]); for(Entry entry: entries.entrySet()) for(ITxEvent txEvent:(Collection)entry.getValue()){ @@ -106,38 +106,38 @@ public class StreamPainter extends TrackPainter{ if(txEvent.getType()==ITxEvent.Type.END){ ITx tx = txEvent.getTransaction(); highlighed|=waveCanvas.currentSelection!=null && waveCanvas.currentSelection.equals(tx); - drawTx(gc, area, tx, false); + drawTx(proj, area, tx, false); seenTx.remove(tx); } } for(ITx tx:seenTx){ - drawTx(gc, area, tx, false); + drawTx(proj, area, tx, false); } if(highlighed){ - gc.setForeground(this.waveCanvas.colors[WaveformColors.LINE_HIGHLITE.ordinal()]); - drawTx(gc, area, waveCanvas.currentSelection, true); + proj.setForeground(this.waveCanvas.colors[WaveformColors.LINE_HIGHLITE.ordinal()]); + drawTx(proj, area, waveCanvas.currentSelection, true); } } } - protected void drawTx(GC gc, Rectangle area, ITx tx, boolean highlighted ) { + protected void drawTx(Projection proj, Rectangle area, ITx tx, boolean highlighted ) { // compute colors java.awt.Color[] fallbackColors = trackEntry.getColors(); java.awt.Color[] transColor = TrackEntry.computeColor( tx.getGenerator().getName(), fallbackColors[0], fallbackColors[1] ); - gc.setBackground( toSwtColor( gc, transColor[highlighted?1:0] ) ); + proj.setBackground( toSwtColor( proj.getGC(), transColor[highlighted?1:0] ) ); int offset = tx.getConcurrencyIndex()*this.waveCanvas.getTrackHeight(); Rectangle bb = new Rectangle( - (int)(tx.getBeginTime()/this.waveCanvas.getScaleFactor()-waveCanvas.getXOffset()), area.y+offset+txBase, + (int)(tx.getBeginTime()/this.waveCanvas.getScaleFactor()), area.y+offset+txBase, (int)((tx.getEndTime()-tx.getBeginTime())/this.waveCanvas.getScaleFactor()), txHeight); if(bb.x+bb.widtharea.x+area.width) return; if(bb.width==0){ - gc.drawLine(bb.x, bb.y, bb.x, bb.y+bb.height); + proj.drawLine(bb.x, bb.y, bb.x, bb.y+bb.height); } else if(bb.width<10){ - gc.fillRectangle(bb); - gc.drawRectangle(bb); + proj.fillRectangle(bb); + proj.drawRectangle(bb); } else { if(bb.x < area.x) { bb.width = bb.width-(area.x-bb.x)+5; @@ -149,8 +149,8 @@ public class StreamPainter extends TrackPainter{ bb_x2=area_x2+5; bb.width= bb_x2-bb.x; } - gc.fillRoundRectangle(bb.x, bb.y, bb.width, bb.height, 5, 5); - gc.drawRoundRectangle(bb.x, bb.y, bb.width, bb.height, 5, 5); + proj.fillRoundRectangle(bb.x, bb.y, bb.width, bb.height, 5, 5); + proj.drawRoundRectangle(bb.x, bb.y, bb.width, bb.height, 5, 5); } } diff --git a/plugins/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/internal/TrackAreaPainter.java b/plugins/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/internal/TrackAreaPainter.java index ed7fc13..ad61f52 100644 --- a/plugins/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/internal/TrackAreaPainter.java +++ b/plugins/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/internal/TrackAreaPainter.java @@ -35,11 +35,11 @@ public class TrackAreaPainter implements IPainter { this.trackVerticalOffset= new TreeMap<>(); } - public void paintArea(GC gc, Rectangle a) { - Rectangle area = new Rectangle(a.x, a.y+waveCanvas.rulerHeight, a.width, a.height-waveCanvas.rulerHeight); - gc.setBackground(this.waveCanvas.colors[WaveformColors.TRACK_BG_EVEN.ordinal()]); - gc.setFillRule(SWT.FILL_EVEN_ODD); - gc.fillRectangle(area); + public void paintArea(Projection proj, Rectangle a) { + Rectangle area = proj.unProject(new Rectangle(a.x, a.y+waveCanvas.rulerHeight, a.width, a.height-waveCanvas.rulerHeight)); + proj.setBackground(this.waveCanvas.colors[WaveformColors.TRACK_BG_EVEN.ordinal()]); + proj.setFillRule(SWT.FILL_EVEN_ODD); + proj.fillRectangle(area); if(trackVerticalOffset.size()>0){ Integer firstKey=trackVerticalOffset.floorKey(area.y); if(firstKey==null) firstKey=trackVerticalOffset.firstKey(); @@ -49,12 +49,12 @@ public class TrackAreaPainter implements IPainter { subArea.y=firstKey; IWaveformPainter p = trackVerticalOffset.get(firstKey); subArea.height=p.getHeight(); - p.paintArea(gc, subArea); + p.paintArea(proj, subArea); }else{ for(Entry entry : trackVerticalOffset.subMap(firstKey, true, lastKey, true).entrySet()){ subArea.y=entry.getKey(); subArea.height=entry.getValue().getHeight(); - entry.getValue().paintArea(gc, subArea); + entry.getValue().paintArea(proj, subArea); } } } diff --git a/plugins/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/internal/WaveformCanvas.java b/plugins/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/internal/WaveformCanvas.java index dd29137..d3f34bc 100644 --- a/plugins/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/internal/WaveformCanvas.java +++ b/plugins/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/internal/WaveformCanvas.java @@ -45,7 +45,7 @@ import com.minres.scviewer.database.ui.IWaveformViewer; import com.minres.scviewer.database.ui.TrackEntry; import com.minres.scviewer.database.ui.WaveformColors; -public class WaveformCanvas extends Canvas{ +public class WaveformCanvas extends Canvas { Color[] colors = new Color[WaveformColors.values().length]; @@ -60,9 +60,7 @@ public class WaveformCanvas extends Canvas{ private long maxTime; protected Point origin; /* original size */ - - protected Transform transform; - + protected int rulerHeight=40; protected List painterList; @@ -89,7 +87,7 @@ public class WaveformCanvas extends Canvas{ * the style of this control. */ public WaveformCanvas(final Composite parent, int style) { - super(parent, style | SWT.DOUBLE_BUFFERED | SWT.NO_BACKGROUND | SWT.NO_REDRAW_RESIZE | SWT.V_SCROLL | SWT.H_SCROLL); + super(parent, style | SWT.DOUBLE_BUFFERED | SWT.NO_BACKGROUND | SWT.V_SCROLL | SWT.H_SCROLL); addControlListener(new ControlAdapter() { /* resize listener. */ public void controlResized(ControlEvent event) { syncScrollBars(); @@ -102,7 +100,6 @@ public class WaveformCanvas extends Canvas{ }); painterList = new LinkedList(); origin = new Point(0, 0); - transform = new Transform(getDisplay()); selectionListeners = new LinkedList<>(); cursorPainters= new ArrayList<>(); wave2painterMap=new HashMap<>(); @@ -150,10 +147,6 @@ public class WaveformCanvas extends Canvas{ } - public long getXOffset() { - return -origin.x; - } - public void addCursoPainter(CursorPainter cursorPainter){ painterList.add(cursorPainter); cursorPainters.add(cursorPainter); @@ -323,7 +316,6 @@ public class WaveformCanvas extends Canvas{ * Dispose the garbage here */ public void dispose() { - transform.dispose(); for (WaveformColors c : WaveformColors.values()) colors[c.ordinal()].dispose(); super.dispose(); @@ -402,24 +394,16 @@ public class WaveformCanvas extends Canvas{ vertical.setSelection(-origin.y); redraw(); fireSelectionEvent(); - } /* Paint function */ private void paint(GC gc) { Rectangle clientRect = getClientArea(); /* Canvas' painting area */ -// clientRect.x = -origin.x; - clientRect.y = -origin.y; - // reset the transform - transform.identity(); - // shift the content - // DO NOT SHIFT HORIZONTALLY, the range is WAY TOO BIG for float!!! - transform.translate(0, origin.y); - gc.setTransform(transform); - gc.setClipping(clientRect); + Projection p = new Projection(gc); + p.setTranslation(origin); if (painterList.size() > 0 ) { for (IPainter painter : painterList) - painter.paintArea(gc, clientRect); + painter.paintArea(p, clientRect); } else { gc.fillRectangle(clientRect); initScrollBars(); From 95e2db60b69c87339d1f7af939449d32e57f5e64 Mon Sep 17 00:00:00 2001 From: eyck Date: Sat, 20 Jun 2020 18:04:57 +0200 Subject: [PATCH 2/6] cleanup build and imports --- com.minres.scviewer.e4.product/scviewer.product | 6 +++--- .../com.minres.scviewer.target.target | 3 ++- features/com.minres.scviewer.e4.feature/feature.xml | 7 +++++++ .../scviewer/database/swt/internal/ArrowPainter.java | 1 - .../scviewer/database/swt/internal/CursorPainter.java | 2 -- .../scviewer/database/swt/internal/Projection.java | 1 - .../database/swt/internal/TrackAreaPainter.java | 1 - .../database/swt/internal/WaveformCanvas.java | 1 - .../META-INF/MANIFEST.MF | 4 +--- .../internal/status/StatusLineContributionItem.java | 1 - .../internal/status/WaveStatusBarControl.java | 11 ----------- .../e4/application/parts/TransactionDetails.java | 6 ------ pom.xml | 4 ++-- 13 files changed, 15 insertions(+), 33 deletions(-) diff --git a/com.minres.scviewer.e4.product/scviewer.product b/com.minres.scviewer.e4.product/scviewer.product index a367b8e..80bf054 100644 --- a/com.minres.scviewer.e4.product/scviewer.product +++ b/com.minres.scviewer.e4.product/scviewer.product @@ -3,7 +3,6 @@ - @@ -18,7 +17,6 @@ - @@ -35,7 +33,6 @@ - org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8 org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8 @@ -51,6 +48,9 @@ + + + diff --git a/com.minres.scviewer.target/com.minres.scviewer.target.target b/com.minres.scviewer.target/com.minres.scviewer.target.target index 5242f57..57ff270 100644 --- a/com.minres.scviewer.target/com.minres.scviewer.target.target +++ b/com.minres.scviewer.target/com.minres.scviewer.target.target @@ -8,8 +8,9 @@ - + + diff --git a/features/com.minres.scviewer.e4.feature/feature.xml b/features/com.minres.scviewer.e4.feature/feature.xml index d20eca7..ddfde0b 100644 --- a/features/com.minres.scviewer.e4.feature/feature.xml +++ b/features/com.minres.scviewer.e4.feature/feature.xml @@ -71,4 +71,11 @@ version="0.0.0" unpack="false"/> + + diff --git a/plugins/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/internal/ArrowPainter.java b/plugins/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/internal/ArrowPainter.java index df17fb2..4a65f2c 100644 --- a/plugins/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/internal/ArrowPainter.java +++ b/plugins/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/internal/ArrowPainter.java @@ -16,7 +16,6 @@ import java.util.List; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Color; -import org.eclipse.swt.graphics.GC; import org.eclipse.swt.graphics.Path; import org.eclipse.swt.graphics.Point; import org.eclipse.swt.graphics.Rectangle; diff --git a/plugins/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/internal/CursorPainter.java b/plugins/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/internal/CursorPainter.java index bd96c87..4559d2d 100644 --- a/plugins/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/internal/CursorPainter.java +++ b/plugins/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/internal/CursorPainter.java @@ -11,8 +11,6 @@ package com.minres.scviewer.database.swt.internal; import org.eclipse.swt.graphics.Color; -import org.eclipse.swt.graphics.GC; -import org.eclipse.swt.graphics.Point; import org.eclipse.swt.graphics.Rectangle; import com.minres.scviewer.database.ui.ICursor; diff --git a/plugins/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/internal/Projection.java b/plugins/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/internal/Projection.java index 7bd4592..79c68c9 100644 --- a/plugins/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/internal/Projection.java +++ b/plugins/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/internal/Projection.java @@ -4,7 +4,6 @@ import java.util.Arrays; import org.eclipse.swt.graphics.Color; import org.eclipse.swt.graphics.GC; -import org.eclipse.swt.graphics.Path; import org.eclipse.swt.graphics.Point; import org.eclipse.swt.graphics.Rectangle; diff --git a/plugins/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/internal/TrackAreaPainter.java b/plugins/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/internal/TrackAreaPainter.java index ad61f52..0820afd 100644 --- a/plugins/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/internal/TrackAreaPainter.java +++ b/plugins/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/internal/TrackAreaPainter.java @@ -14,7 +14,6 @@ import java.util.Map.Entry; import java.util.TreeMap; import org.eclipse.swt.SWT; -import org.eclipse.swt.graphics.GC; import org.eclipse.swt.graphics.Rectangle; import com.minres.scviewer.database.ui.WaveformColors; diff --git a/plugins/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/internal/WaveformCanvas.java b/plugins/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/internal/WaveformCanvas.java index d3f34bc..d65180a 100644 --- a/plugins/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/internal/WaveformCanvas.java +++ b/plugins/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/internal/WaveformCanvas.java @@ -28,7 +28,6 @@ import org.eclipse.swt.graphics.GC; import org.eclipse.swt.graphics.Point; import org.eclipse.swt.graphics.RGB; import org.eclipse.swt.graphics.Rectangle; -import org.eclipse.swt.graphics.Transform; import org.eclipse.swt.widgets.Canvas; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Display; diff --git a/plugins/com.minres.scviewer.e4.application/META-INF/MANIFEST.MF b/plugins/com.minres.scviewer.e4.application/META-INF/MANIFEST.MF index c96729f..49ee11d 100644 --- a/plugins/com.minres.scviewer.e4.application/META-INF/MANIFEST.MF +++ b/plugins/com.minres.scviewer.e4.application/META-INF/MANIFEST.MF @@ -26,12 +26,10 @@ Require-Bundle: javax.inject;bundle-version="1.0.0", org.eclipse.equinox.preferences, org.eclipse.core.expressions, org.eclipse.e4.core.commands;bundle-version="0.11.0", - org.eclipse.e4.ui.workbench.addons.swt, com.opcoach.e4.preferences, org.eclipse.e4.core.di.extensions, org.eclipse.e4.ui.css.swt.theme;bundle-version="0.10.0", - org.eclipse.core.resources;bundle-version="3.13.0", - com.opcoach.e4.preferences.mainmenu;bundle-version="1.2.0" + org.eclipse.core.resources;bundle-version="3.13.0" Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Import-Package: com.minres.scviewer.database, javax.inject;version="1.0.0" diff --git a/plugins/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/internal/status/StatusLineContributionItem.java b/plugins/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/internal/status/StatusLineContributionItem.java index 4b40081..9f19cb2 100644 --- a/plugins/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/internal/status/StatusLineContributionItem.java +++ b/plugins/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/internal/status/StatusLineContributionItem.java @@ -13,7 +13,6 @@ import org.eclipse.swt.widgets.Label; import org.eclipse.jface.action.ContributionItem; import org.eclipse.jface.action.IAction; -import org.eclipse.jface.action.LegacyActionTools; import org.eclipse.jface.action.StatusLineLayoutData; import org.eclipse.jface.resource.JFaceColors; diff --git a/plugins/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/internal/status/WaveStatusBarControl.java b/plugins/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/internal/status/WaveStatusBarControl.java index 767d22e..458860a 100644 --- a/plugins/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/internal/status/WaveStatusBarControl.java +++ b/plugins/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/internal/status/WaveStatusBarControl.java @@ -18,19 +18,8 @@ import org.eclipse.e4.ui.di.UIEventTopic; import org.eclipse.e4.ui.di.UISynchronize; import org.eclipse.e4.ui.services.IServiceConstants; import org.eclipse.e4.ui.workbench.modeling.EModelService; -import org.eclipse.jface.action.ContributionItem; import org.eclipse.jface.action.StatusLineManager; import org.eclipse.jface.viewers.IStructuredSelection; -import org.eclipse.swt.SWT; -import org.eclipse.swt.custom.CLabel; -import org.eclipse.swt.graphics.Font; -import org.eclipse.swt.graphics.FontData; -import org.eclipse.swt.graphics.Point; -import org.eclipse.swt.graphics.Rectangle; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.layout.GridLayout; -import org.eclipse.swt.widgets.Composite; - import com.minres.scviewer.e4.application.Messages; /** diff --git a/plugins/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/parts/TransactionDetails.java b/plugins/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/parts/TransactionDetails.java index 17bf32f..d8f1f7e 100644 --- a/plugins/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/parts/TransactionDetails.java +++ b/plugins/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/parts/TransactionDetails.java @@ -18,7 +18,6 @@ import java.util.Map; import java.util.Objects; import java.util.TreeMap; import java.util.Vector; -import java.util.function.Function; import java.util.regex.PatternSyntaxException; import java.util.stream.Collectors; @@ -38,7 +37,6 @@ import org.eclipse.jface.viewers.DelegatingStyledCellLabelProvider; import org.eclipse.jface.viewers.DelegatingStyledCellLabelProvider.IStyledLabelProvider; import org.eclipse.jface.viewers.DoubleClickEvent; import org.eclipse.jface.viewers.IDoubleClickListener; -import org.eclipse.jface.viewers.IElementComparer; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.ITreeContentProvider; @@ -152,15 +150,11 @@ public class TransactionDetails { @Override public void treeCollapsed(TreeExpansionEvent event) { - Object o = event.getElement(); - TreePath[] paths = treeViewer.getExpandedTreePaths(); treeViewer.getSelection(); } @Override public void treeExpanded(TreeExpansionEvent event) { - Object o = event.getElement(); - TreePath[] paths = treeViewer.getExpandedTreePaths(); treeViewer.getSelection(); } diff --git a/pom.xml b/pom.xml index 3943f88..b7518d0 100644 --- a/pom.xml +++ b/pom.xml @@ -39,7 +39,7 @@ ${tycho-version} true - +