From 9d9d4db0751e7e938fde2b9bbeccf7661214a83b Mon Sep 17 00:00:00 2001 From: "yeongtaik.byeon" Date: Tue, 27 Nov 2012 20:56:13 +0900 Subject: [PATCH] [Title] thread page update [Desc.] thread load chart & selection update [Issue] redmine #5322 #7167 --- .../widgets/chart/DACustomChartRenderer.java | 29 ++++++------ .../widgets/chartBoard/DACustomChartBoard.java | 1 + .../ui/thread/ThreadAPIListView.java | 2 +- .../dynamicanalyzer/ui/thread/ThreadChartView.java | 12 +++++ .../dynamicanalyzer/ui/thread/ThreadPageData.java | 11 ++--- .../ui/thread/ThreadPageDataManager.java | 53 ++++++++++++++-------- 6 files changed, 67 insertions(+), 41 deletions(-) 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 31efe68..7b07350 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 @@ -620,8 +620,7 @@ public class DACustomChartRenderer { } seriesItem = seriesItems.get(index); - double currentX = - seriesItem.getX(); + double currentX = seriesItem.getX(); int newPixcelX = plot.getXPixcelFromX(currentX, r); int newPixcelY = plot.getYPixcelFromY(series, seriesItem.getY(), r); @@ -757,15 +756,17 @@ public class DACustomChartRenderer { if (null != itemColor) { gc.setBackground(itemColor); gc.fillRectangle(pixcelStartX, r.y + heightMargin, EVENT_WIDTH, - r.y + r.height - heightMargin - r.height/2); -// gc.drawRectangle(pixcelStartX, r.y + heightMargin, EVENT_WIDTH, -// r.y + r.height - heightMargin - r.height/2); + r.y + r.height - heightMargin - r.height / 2); + // gc.drawRectangle(pixcelStartX, r.y + heightMargin, + // EVENT_WIDTH, + // r.y + r.height - heightMargin - r.height/2); gc.setBackground(color); } else { gc.fillRectangle(pixcelStartX, r.y + heightMargin, EVENT_WIDTH, - r.y + r.height - heightMargin - r.height/2); -// gc.drawRectangle(pixcelStartX, r.y + heightMargin, EVENT_WIDTH, -// r.y + r.height - heightMargin - r.height/2); + r.y + r.height - heightMargin - r.height / 2); + // gc.drawRectangle(pixcelStartX, r.y + heightMargin, + // EVENT_WIDTH, + // r.y + r.height - heightMargin - r.height/2); } if (currentX > plot.getVisibleEndX()) { break; @@ -833,7 +834,7 @@ public class DACustomChartRenderer { color = seriesItem.getEventColor(); double load = seriesItem.getY(); - gc.setAlpha((int) (255 * load)); + gc.setAlpha((int) load); if (null != color) { gc.setBackground(color); @@ -887,8 +888,8 @@ public class DACustomChartRenderer { int heightMargin = (int) ((r.y + r.height) * EVENT_HEIGHT_MARGIN_RATIO); - gc.fillRectangle(pixcelStartX, r.y + r.height/2, EVENT_WIDTH, r.y - + r.height - heightMargin - r.height/2); + gc.fillRectangle(pixcelStartX, r.y + r.height / 2, EVENT_WIDTH, r.y + + r.height - heightMargin - r.height / 2); if (0 == arrowPosition) { @@ -904,9 +905,9 @@ public class DACustomChartRenderer { } gc.drawImage(arw, arrowRect.x, arrowRect.y); Point p = gc.textExtent(number, SWT.DRAW_MNEMONIC); - gc.drawText(number, (arrowRect.x + arrowRect.width/ 2 ) - p.x - / 2 - ARROW_MARGIN, (arrowRect.y + arrowRect.height/ 2) - p.y / 2, - true); + gc.drawText(number, (arrowRect.x + arrowRect.width / 2) - p.x + / 2 - ARROW_MARGIN, + (arrowRect.y + arrowRect.height / 2) - p.y / 2, true); } if (currentX > plot.getVisibleEndX()) { diff --git a/org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/chartBoard/DACustomChartBoard.java b/org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/chartBoard/DACustomChartBoard.java index 7c49389..5e189d7 100644 --- a/org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/chartBoard/DACustomChartBoard.java +++ b/org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/chartBoard/DACustomChartBoard.java @@ -443,6 +443,7 @@ public class DACustomChartBoard extends Composite { setChartBackgroundImage(selectItem.getChart(), ImageResources.CHART_BG_SELECT); selectItem.selectItem(true); + if (null != selectionListenrers) { for (int i = 0; i < selectionListenrers.size(); i++) { selectionListenrers.get(i).handleSelectionEvent(selectItem); diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/thread/ThreadAPIListView.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/thread/ThreadAPIListView.java index 8938e9b..d71a437 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/thread/ThreadAPIListView.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/thread/ThreadAPIListView.java @@ -112,7 +112,7 @@ public class ThreadAPIListView extends DAView { if (!(this.data instanceof ThreadPageData)) { return; } - + tableComp.getTable().removeAll(); tableComp.updateTable(); } diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/thread/ThreadChartView.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/thread/ThreadChartView.java index 450be73..1608bac 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/thread/ThreadChartView.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/thread/ThreadChartView.java @@ -29,6 +29,7 @@ import org.eclipse.swt.SWT; import org.eclipse.swt.layout.FillLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; +import org.tizen.dynamicanalyzer.common.AnalyzerManager; import org.tizen.dynamicanalyzer.common.DASelectionData; import org.tizen.dynamicanalyzer.logparser.LogPackage; import org.tizen.dynamicanalyzer.model.DAView; @@ -41,6 +42,8 @@ import org.tizen.dynamicanalyzer.ui.widgets.TitleComboPopupRenderer; import org.tizen.dynamicanalyzer.ui.widgets.TitleComboRenderer; import org.tizen.dynamicanalyzer.ui.widgets.ViewContainer; import org.tizen.dynamicanalyzer.widgets.chartBoard.DACustomChartBoard; +import org.tizen.dynamicanalyzer.widgets.chartBoard.DACustomChartBoardItem; +import org.tizen.dynamicanalyzer.widgets.chartBoard.DACustomChartBoardSelectionListener; import org.tizen.dynamicanalyzer.widgets.combo.DACustomCombo; public class ThreadChartView extends DAView { @@ -65,6 +68,15 @@ public class ThreadChartView extends DAView { contents.setLayout(new FillLayout()); threadChart = new DACustomChartBoard(contents, ThreadPageLabels.THREAD_CHART_TITLE); + + threadChart.addSelectionListener(new DACustomChartBoardSelectionListener() { + + @Override + public void handleSelectionEvent(DACustomChartBoardItem item) { + // TODO Auto-generated method stub + AnalyzerManager.getCurrentPage().updatePage(new DASelectionData(ThreadChartView.ID, 0, 0, item.getData(), null)); + } + }); combo = new DACustomCombo(threadChart.getTitleComp(), SWT.NONE); diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/thread/ThreadPageData.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/thread/ThreadPageData.java index e25dc9c..60df06d 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/thread/ThreadPageData.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/thread/ThreadPageData.java @@ -48,7 +48,6 @@ public class ThreadPageData { private DACustomChartSeries loadSeries; private DACustomChartSeries eventSeries; private DACustomChartSeries apiSeries; - private double load = 0; public ThreadPageData(ThreadPageDataManager manager, String name, int tid, String address) { @@ -117,13 +116,9 @@ public class ThreadPageData { if (null == loadSeries) { return ret; } - // FIXME : get load 0 ~ 1.0 - load += 0.01; - if (load <= 1.0) { - load -= 1; - } - // double load = Math.random(); - seriesItem = new DACustomChartSeriesItem(event.getTime(), load); + + seriesItem = new DACustomChartSeriesItem(event.getTime(), + (double) event.getThreadType()); loadSeries.addSeriesItem(seriesItem); break; diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/thread/ThreadPageDataManager.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/thread/ThreadPageDataManager.java index 1ecd8cf..42d5d2f 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/thread/ThreadPageDataManager.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/thread/ThreadPageDataManager.java @@ -41,7 +41,6 @@ import org.tizen.dynamicanalyzer.project.Project; import org.tizen.dynamicanalyzer.resources.ColorResources; import org.tizen.dynamicanalyzer.resources.ImageResources; import org.tizen.dynamicanalyzer.ui.timeline.common.TimelineConstants; -import org.tizen.dynamicanalyzer.ui.timeline.common.TimelineView; import org.tizen.dynamicanalyzer.widgets.chart.DACustomChart; import org.tizen.dynamicanalyzer.widgets.chart.DACustomChartPlot; import org.tizen.dynamicanalyzer.widgets.chart.DACustomChartSeries; @@ -59,8 +58,6 @@ public class ThreadPageDataManager { private List callEventQueue = new ArrayList(); private List calleeEventQueue = new ArrayList(); - private int tid; // FIXME for test - protected void pushRow(ThreadPageData data) { rowsQueue.add(data); hasUpdate = true; @@ -103,7 +100,7 @@ public class ThreadPageDataManager { if(startTime < 0){ startTime = 0; } - AnalyzerManager.getCurrentPage().updatePage(new DASelectionData(TimelineView.ID, startTime, endTime, chart.getData(), chart)); + AnalyzerManager.getCurrentPage().updatePage(new DASelectionData(ThreadChartView.ID, startTime, endTime, chart.getData(), chart)); } private Listener chartMouseListener = new Listener() { @@ -157,12 +154,12 @@ public class ThreadPageDataManager { plot.setAxisRangeY(0, 101); plot.setAxisRangeX(board.getVisibleStartTime(), board.getVisibleEndTime()); - plot.setIntervalMarker(board.getIntervalMarker()); - chart.addListener(SWT.MouseMove, chartMouseListener); - chart.addListener(SWT.MouseDown, chartMouseListener); - chart.addListener(SWT.MouseUp, chartMouseListener); - chart.addListener(SWT.MouseEnter, chartMouseListener); - chart.addListener(SWT.MouseExit, chartMouseListener); +// plot.setIntervalMarker(board.getIntervalMarker()); +// chart.addListener(SWT.MouseMove, chartMouseListener); +// chart.addListener(SWT.MouseDown, chartMouseListener); +// chart.addListener(SWT.MouseUp, chartMouseListener); +// chart.addListener(SWT.MouseEnter, chartMouseListener); +// chart.addListener(SWT.MouseExit, chartMouseListener); } private void setChartSeries(DACustomChart chart) { @@ -192,7 +189,6 @@ public class ThreadPageDataManager { isStart = true; Project project = AnalyzerManager.getProject(); int tid = project.getPID(); - this.tid = tid; if (0 == tid) { isStart = false; @@ -232,16 +228,37 @@ public class ThreadPageDataManager { return; } List input; + + String loads; + int tid; + int load; for (int i = 0; i < size; i++) { input = inputs.get(i); - double time = Double.parseDouble(input - .get(LogCenterConstants.DEVICE_TIME_INDEX)) - / TimelineConstants.MEGA; - ThreadPageDataEvent event = new ThreadPageDataEvent(this, - ThreadPageDataEvent.TYPE_LOAD, -1, -1, time, tid, null); - pushEvent(event); + loads = input.get(LogCenterConstants.DEVICE_THREAD_LOAD_INDEX); + String[] temp = loads.split(","); + int tempSize = temp.length; + double time; + for(int j=0; j+1 < tempSize; j+=2){ + try{ + tid = Integer.parseInt(temp[j]); + } catch(NumberFormatException nfe){ + System.out.println("error : parseLoad - tid parsing"); + break; + } + if(null == findParentData(tid)){ + continue; + } + + load = (int) (Double.parseDouble(temp[j+1]) * 2.55); + time = Double.parseDouble(input + .get(LogCenterConstants.DEVICE_TIME_INDEX)) + / TimelineConstants.MEGA; + + ThreadPageDataEvent event = new ThreadPageDataEvent(this, + ThreadPageDataEvent.TYPE_LOAD, load, -1, time, tid, null); + pushEvent(event); + } } - } private void parsePthread(List input) { -- 2.7.4