[Title] thread page update
authoryeongtaik.byeon <yeongtaik.byeon@samsung.com>
Tue, 27 Nov 2012 11:56:13 +0000 (20:56 +0900)
committeryeongtaik.byeon <yeongtaik.byeon@samsung.com>
Tue, 27 Nov 2012 11:56:13 +0000 (20:56 +0900)
[Desc.] thread load chart & selection update
[Issue] redmine #5322 #7167

org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/chart/DACustomChartRenderer.java
org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/chartBoard/DACustomChartBoard.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/thread/ThreadAPIListView.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/thread/ThreadChartView.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/thread/ThreadPageData.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/thread/ThreadPageDataManager.java

index 31efe68..7b07350 100644 (file)
@@ -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()) {
index 7c49389..5e189d7 100644 (file)
@@ -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);
index 8938e9b..d71a437 100644 (file)
@@ -112,7 +112,7 @@ public class ThreadAPIListView extends DAView {
                if (!(this.data instanceof ThreadPageData)) {
                        return;
                }
-
+               tableComp.getTable().removeAll();
                tableComp.updateTable();
        }
 
index 450be73..1608bac 100644 (file)
@@ -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);
 
index e25dc9c..60df06d 100644 (file)
@@ -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;
index 1ecd8cf..42d5d2f 100644 (file)
@@ -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<ThreadPageDataEvent> callEventQueue = new ArrayList<ThreadPageDataEvent>();
        private List<ThreadPageDataEvent> calleeEventQueue = new ArrayList<ThreadPageDataEvent>();
 
-       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<String> 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<String> input) {