From da72ca610e20265694049cc8b27cca1ce3774e58 Mon Sep 17 00:00:00 2001 From: "yeongtaik.byeon" Date: Tue, 14 Aug 2012 17:29:06 +0900 Subject: [PATCH] [Title]chart widget interval(range) update [Type]update [Module]chart widget [Priority]normal [CQ#] [Redmine#]6184 [Problem] [Cause] [Solution] [TestCase] --- .../widgets/chart/DACustomChart.java | 5 ++ .../widgets/chart/DACustomChartPlot.java | 18 ++++- .../chart/DACustomChartPlotIntervalMarker.java | 92 ++++++++++++++++++++++ .../widgets/chart/DACustomChartRenderer.java | 23 +++--- .../timeline/TimelineItemManager.java | 22 +++++- .../dynamicanalyzer/timeline/chart/DACPUChart.java | 2 +- 6 files changed, 146 insertions(+), 16 deletions(-) create mode 100644 org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/chart/DACustomChartPlotIntervalMarker.java diff --git a/org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/chart/DACustomChart.java b/org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/chart/DACustomChart.java index ffd5fc9..97428cc 100644 --- a/org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/chart/DACustomChart.java +++ b/org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/chart/DACustomChart.java @@ -39,6 +39,11 @@ public class DACustomChart extends Canvas { return name; } + public void replacePlot(DACustomChartPlot plot) { + this.plot = plot; + this.plot.setChart(this); + } + public DACustomChartPlot getPlot() { return plot; } diff --git a/org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/chart/DACustomChartPlot.java b/org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/chart/DACustomChartPlot.java index fb034f1..017e054 100644 --- a/org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/chart/DACustomChartPlot.java +++ b/org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/chart/DACustomChartPlot.java @@ -16,11 +16,16 @@ public class DACustomChartPlot { private boolean bAutoHeightRange = false; private Image backgroundImage = null; private DACustomChart chart; + private DACustomChartPlotIntervalMarker marker = null; public DACustomChartPlot(DACustomChart chart) { this.chart = chart; } + public void setChart(DACustomChart chart){ + this.chart = chart; + } + public DACustomChart getChart() { return chart; } @@ -34,6 +39,15 @@ public class DACustomChartPlot { rangeEndX = 0; } + public void setIntervalMarker(DACustomChartPlotIntervalMarker marker){ + this.marker = marker; + this.marker.setChart(chart); + } + + public DACustomChartPlotIntervalMarker getIntervalMarker(){ + return marker; + } + public void setRange(double startX, double endX) { this.rangeStartX = startX; this.rangeEndX = endX; @@ -162,7 +176,7 @@ public class DACustomChartPlot { } public double getXFromXPixcel(int xPixcel, Rectangle r) { - return ((endX - startX) * (double) xPixcel) / (double) r.width; + return (((endX - startX) * (double) xPixcel) / (double) r.width) + startX; } public double getXFromXPixcel(int xPixcel) { @@ -172,7 +186,7 @@ public class DACustomChartPlot { public double getYFromYPixcel(int yPixcel, Rectangle r) { int y = yPixcel + r.height + 1; - return ((endY - startY) * (double) y) / (double) r.height; + return (((endY - startY) * (double) y) / (double) r.height) + startY; } public double getYFromYPixcel(int yPixcel) { diff --git a/org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/chart/DACustomChartPlotIntervalMarker.java b/org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/chart/DACustomChartPlotIntervalMarker.java new file mode 100644 index 0000000..94aa8e4 --- /dev/null +++ b/org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/chart/DACustomChartPlotIntervalMarker.java @@ -0,0 +1,92 @@ +package org.tizen.dynamicanalyzer.widgets.chart; + +import org.eclipse.swt.graphics.Color; +import org.eclipse.swt.widgets.Display; + +public class DACustomChartPlotIntervalMarker { + private double startVal; + private double endVal; + private int alpha = (int) (255*0.25); //default + private Color backgroundColor; + private Color foregroundColor; + private DACustomChart chart; + + public DACustomChartPlotIntervalMarker(double start, double end){ + startVal = start; + endVal = end; + } + + public DACustomChart getChart(){ + return chart; + } + + public void setChart(DACustomChart chart){ + this.chart = chart; + } + + public void setInterval(double start, double end){ + startVal = start; + endVal = end; + if(null != chart){ + chart.redraw(); + } + } + + public double getStartVal() { + return startVal; + } + + public void setStartVal(double startVal) { + this.startVal = startVal; + if(null != chart){ + chart.redraw(); + } + } + + public double getEndVal() { + return endVal; + } + + public void setEndVal(double endVal) { + this.endVal = endVal; + if(null != chart){ + chart.redraw(); + } + } + + public int getAlpha() { + return alpha; + } + + public void setAlpha(int alpha) { + this.alpha = alpha; + if(null != chart){ + chart.redraw(); + } + } + + public Color getBackgroundColor() { + if (null == backgroundColor) { + backgroundColor = new Color(Display.getCurrent(), 23, 98, 132); + } + return backgroundColor; + } + + public void setBackgroundColor(Color backgroundColor) { + this.backgroundColor = backgroundColor; + if(null != chart){ + chart.redraw(); + } + } + + public Color getForegroundColor() { + return foregroundColor; + } + + public void setForegroundColor(Color foregroundColor) { + this.foregroundColor = foregroundColor; + if(null != chart){ + chart.redraw(); + } + } +} diff --git a/org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/chart/DACustomChartRenderer.java b/org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/chart/DACustomChartRenderer.java index e3b17af..4ec119b 100644 --- a/org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/chart/DACustomChartRenderer.java +++ b/org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/chart/DACustomChartRenderer.java @@ -75,24 +75,27 @@ public class DACustomChartRenderer { } public void drawRange(GC gc) { - int pixcelStartX = plot.getXPixcelFromX(plot.getRangeStartX()); - int pixcelEndX = plot.getXPixcelFromX(plot.getRangeEndX()); - - Color color = plot.getRangeColor(); + DACustomChartPlotIntervalMarker marker = plot.getIntervalMarker(); + if(null == marker){ + return; + } + int pixcelStartX = plot.getXPixcelFromX(marker.getStartVal()); + int pixcelEndX = plot.getXPixcelFromX(marker.getEndVal()); + + Color color = marker.getBackgroundColor(); + int alpha = gc.getAlpha(); + gc.setAlpha(marker.getAlpha()); if (pixcelStartX == pixcelEndX) { gc.setForeground(color); gc.setLineWidth(2); - gc.setAlpha((int) (255 * 0.25)); gc.drawLine(pixcelStartX, r.y, pixcelStartX, r.height); - gc.setLineWidth(1); - gc.setAlpha(255); - } else { + } + else{ gc.setBackground(color); - gc.setAlpha((int) (255 * 0.25)); gc.fillRectangle(pixcelStartX, 0, pixcelEndX - pixcelStartX, r.height); - gc.setAlpha(255); } + gc.setAlpha(alpha); } private void drawBarSeries(GC gc, DACustomChartSeries series) { diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/timeline/TimelineItemManager.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/timeline/TimelineItemManager.java index dea2a8f..274de93 100755 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/timeline/TimelineItemManager.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/timeline/TimelineItemManager.java @@ -54,6 +54,8 @@ import org.tizen.dynamicanalyzer.ui.views.CoolbarArea; import org.tizen.dynamicanalyzer.utils.AnalyzerUtil; import org.tizen.dynamicanalyzer.utils.TimelineUtils; import org.tizen.dynamicanalyzer.widgets.chart.DACustomChart; +import org.tizen.dynamicanalyzer.widgets.chart.DACustomChartPlot; +import org.tizen.dynamicanalyzer.widgets.chart.DACustomChartPlotIntervalMarker; public class TimelineItemManager { private static final int ITEM_INFO_ZOOM_HEIGHT = 16; @@ -76,6 +78,7 @@ public class TimelineItemManager { private Image selectedItemImage; private IntervalMarker selectionMarker; + private DACustomChartPlotIntervalMarker intervalMarker; // for DACustomChart Selection private Shell tooltip; @@ -214,20 +217,21 @@ public class TimelineItemManager { @Override public void handleEvent(Event event) { DACustomChart chart = (DACustomChart) event.widget; + DACustomChartPlot plot = chart.getPlot(); switch (event.type) { case SWT.MouseMove: if ((event.stateMask & SWT.BUTTON1) != 0) { - chart.getPlot().setRangeEndFromPixcel(event.x); + intervalMarker.setEndVal(plot.getXFromXPixcel(event.x)); } else { // FIXME : tooltip } break; case SWT.MouseDown: - chart.getPlot().setRangeFromPixcel(event.x, event.x); + intervalMarker.setInterval(plot.getXFromXPixcel(event.x), plot.getXFromXPixcel(event.x)); break; case SWT.MouseUp: - chart.getPlot().setRangeEndFromPixcel(event.x); + intervalMarker.setEndVal(plot.getXFromXPixcel(event.x)); break; default: break; @@ -506,6 +510,12 @@ public class TimelineItemManager { TimelineMaster.getInstance().setSelectionMarker(selectionMarker); } + + private void initIntervalMarker(){ + intervalMarker = new DACustomChartPlotIntervalMarker(-1, -1); + intervalMarker.setBackgroundColor(ColorResources.SELECTION_RANGE); + intervalMarker.setAlpha((int) (255 * 0.25)); + } private void setSelectionMarkerEndVal(Double endTime) { double selectionMarkerStartValue = selectionMarker.getStartValue(); @@ -789,6 +799,12 @@ public class TimelineItemManager { // itemChartComposite.getChart().getXYPlot().addDomainMarker(selectionMarker, // Layer.FOREGROUND); + + if(null == intervalMarker){ + initIntervalMarker(); + } + + chart.getPlot().setIntervalMarker(intervalMarker); iteminfo.infoComp = itemInfoComp; iteminfo.DAChartComp = itemChartComposite; diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/timeline/chart/DACPUChart.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/timeline/chart/DACPUChart.java index 7a4ee82..6a5fb6b 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/timeline/chart/DACPUChart.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/timeline/chart/DACPUChart.java @@ -46,7 +46,7 @@ public class DACPUChart extends DATimelineChart { setChartStyle(); chart.getPlot().setAutoHeightRange(false); - chart.getPlot().setAxisRangeY(0, 100); + chart.getPlot().setAxisRangeY(0, 101); return chart; } -- 2.7.4