[Title]modify the Screenshot chart to work
authorsanghyunnim.lee <sanghyunnim.lee@samsung.com>
Thu, 29 Nov 2012 11:11:14 +0000 (20:11 +0900)
committersanghyunnim.lee <sanghyunnim.lee@samsung.com>
Thu, 29 Nov 2012 11:11:14 +0000 (20:11 +0900)
[Desc.]
[Issue]

org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/chart/DACustomChartRenderer.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/chart/ScreenshotChart.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/chart/UIEventChart.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/common/TimelineView.java

index 8c39199..649d4c1 100644 (file)
@@ -41,26 +41,26 @@ import org.tizen.dynamicanalyzer.widgets.helper.FontResources;
 import org.tizen.dynamicanalyzer.widgets.helper.ImageResources;
 
 public class DACustomChartRenderer {
-       public static final int MARGIN = 3; // FIXME
-       public static final int ARROW_MARGIN = 2;
-       public static final int EVENT_WIDTH = 2;
-       public static final double EVENT_HEIGHT_MARGIN_RATIO = 0.25;
-       public static final double LOAD_HEIGHT_MARGIN_RATIO = 0.25;
+       private final int MARGIN = 3;
+       private final int ARROW_MARGIN = 2;
+       private final int EVENT_WIDTH = 2;
+       private final double EVENT_HEIGHT_MARGIN_RATIO = 0.25;
+       private final double LOAD_HEIGHT_MARGIN_RATIO = 0.25;
        private boolean bInitialized = false;
        private List<DACustomChartSeries> seriesList = null;
        private DACustomChartPlot plot = null;
        private Rectangle r = null;
 
-       public final int SCREENSHOT_WIDTH = 40;
-       public final int SCREENSHOT_HEIGHT = 66;
-       public final int SCREENSHOT_TOP_MARGIN = 10;
-       public final int SCREENSHOT_HORIZONTAL_TOP_MARGIN = 13;
-       public final int SCREENSHOT_SELECTED_MOVE_SIZE = 6;
-       public final int SCREENSHOT_HORIZONTAL_SELECTED_MOVE_SIZE = 19;
-       public final int SCREENSHOT_SELECTED_LINE_WIDTH = 4;
-       public final int SCREENSHOT_BORDER_LINE_WIDTH = 1;
+       private final int SCREENSHOT_WIDTH = 40;
+       private final int SCREENSHOT_HEIGHT = 66;
+       private final int SCREENSHOT_TOP_MARGIN = 10;
+       private final int SCREENSHOT_HORIZONTAL_TOP_MARGIN = 13;
+       private final int SCREENSHOT_SELECTED_MOVE_SIZE = 6;
+       private final int SCREENSHOT_HORIZONTAL_SELECTED_MOVE_SIZE = 19;
+       private final int SCREENSHOT_SELECTED_LINE_WIDTH = 2;
+       private final int SCREENSHOT_BORDER_LINE_WIDTH = 1;
 
-       public final int MULTY_CHECK_BAR_WIDTH = 2;
+       private final int MULTY_CHECK_BAR_WIDTH = 2;
 
        public void draw(GC gc, DACustomChart chart) {
                if (false == bInitialized) {
@@ -683,6 +683,9 @@ public class DACustomChartRenderer {
 
                        if (i != highlightedImageIndex && i != selectedImageIndex) {
                                gc.drawImage(image, pixcelStartX, SCREENSHOT_TOP_MARGIN);
+                               gc.setLineWidth(SCREENSHOT_BORDER_LINE_WIDTH);
+                               gc.setForeground(ColorResources.SCREENSHOT_CHART_BORDER_LINE);
+                               gc.drawRectangle(pixcelStartX, SCREENSHOT_TOP_MARGIN, SCREENSHOT_WIDTH, SCREENSHOT_HEIGHT);
                        }
 
                        if (currentX > plot.getVisibleEndX()) {
@@ -698,7 +701,7 @@ public class DACustomChartRenderer {
                        double currentX = seriesItems.get(selectedImageIndex).getX();
                        int pixcelStartX = plot.getXPixcelFromX(currentX, r);
                        if (selectedImageIndex == highlightedImageIndex) {
-                               gc.drawRectangle(pixcelStartX - 1, r.y + SCREENSHOT_TOP_MARGIN
+                               gc.drawRectangle(pixcelStartX, r.y + SCREENSHOT_TOP_MARGIN
                                                - SCREENSHOT_SELECTED_MOVE_SIZE,
                                                selectedImage.getBounds().width + 1,
                                                selectedImage.getBounds().height + 1);
@@ -718,6 +721,9 @@ public class DACustomChartRenderer {
 
                        gc.drawImage(highlightedImage, pixcelStartX, SCREENSHOT_TOP_MARGIN
                                        - SCREENSHOT_SELECTED_MOVE_SIZE);
+                       gc.setLineWidth(SCREENSHOT_BORDER_LINE_WIDTH);
+                       gc.setForeground(ColorResources.SCREENSHOT_CHART_BORDER_LINE);
+                       gc.drawRectangle(pixcelStartX, SCREENSHOT_TOP_MARGIN - SCREENSHOT_SELECTED_MOVE_SIZE, SCREENSHOT_WIDTH, SCREENSHOT_HEIGHT);
                }
        }
 
index ca4665f..711b629 100644 (file)
 
 package org.tizen.dynamicanalyzer.ui.timeline.chart;
 
+import java.io.File;
 import java.util.ArrayList;
 import java.util.List;
 
+import org.eclipse.swt.SWTException;
+import org.eclipse.swt.graphics.Image;
 import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
+import org.tizen.dynamicanalyzer.common.AnalyzerConstants;
+import org.tizen.dynamicanalyzer.common.AnalyzerManager;
 import org.tizen.dynamicanalyzer.logparser.LogCenterConstants;
 import org.tizen.dynamicanalyzer.logparser.LogPackage;
+import org.tizen.dynamicanalyzer.logparser.Logs;
 import org.tizen.dynamicanalyzer.nl.TimelineChartLabels;
 import org.tizen.dynamicanalyzer.resources.ImageResources;
 import org.tizen.dynamicanalyzer.ui.timeline.common.TimelineConstants;
@@ -125,7 +132,30 @@ public class ScreenshotChart extends TimelineChart {
 
        @Override
        public void parsingLogPackage(LogPackage logPack) {
-               // TODO Auto-generated method stub
+               if (!isAbleToParse(logPack, probeType)) {
+                       return;
+               }
+               
+               Logs logs = logPack.getLogs(probeType);
+               List<List<String>> logList = logs.getLogs();
+               
+               for(List<String> log : logList) {
+                       parsingLog(log);
+               }
+       }
+       
+       private void parsingLog(List<String> log) {
+               String imagePath = AnalyzerManager.getProject().getSavePath() + File.separator
+                               + AnalyzerConstants.IMAGE_FOLDER_NAME + File.separator
+                               + AnalyzerConstants.SMALL_IMAGE_FOLDER_NAME;
+               String imagePathLog = log.get(LogCenterConstants.SNAPSHOT_IMAGE_PATH_INDEX);
+               String[] splitedImagePathLog = imagePathLog.split("/");
+               String fileName = splitedImagePathLog[splitedImagePathLog.length - 1];
+               imagePath += File.separator + fileName;
+               
+               double time = Double.parseDouble(log.get(LogCenterConstants.TIME_INDEX)) /  TimelineConstants.MEGA;
+               
+               new CreateImageThread(imagePath, time).run();
        }
 
        @Override
@@ -135,4 +165,35 @@ public class ScreenshotChart extends TimelineChart {
                
                return serieslist;
        }
+       
+       private class CreateImageThread extends Thread{
+               private String imagePath;
+               private double time;
+               
+               private CreateImageThread(String imagePath, double time) {
+                       this.imagePath = imagePath;
+                       this.time = time;
+               }
+               
+               public void run() {
+                       Image image = null;
+                       
+                       while(true) {
+                               try {
+                                       image = new Image(Display.getDefault(), imagePath);
+                               } catch (SWTException se) {
+                                       try{
+                                               Thread.sleep(1000);
+                                               continue;
+                                       } catch (InterruptedException ie) {
+                                               continue;
+                                       }
+                               }
+                               
+                               break;
+                       }
+                       
+                       screenshotSeries.addSeriesItem(new DACustomChartSeriesItem(time, image));
+               }
+       }
 }
index be14647..cf5a911 100644 (file)
@@ -123,11 +123,11 @@ public class UIEventChart extends TimelineChart {
 
        @Override
        public void parsingLogPackage(LogPackage logPack) {
-               if (!isAbleToParse(logPack, LogCenterConstants.LOG_RECODER)) {
+               if (!isAbleToParse(logPack, probeType)) {
                        return;
                }
 
-               Logs logs = logPack.getLogs(LogCenterConstants.LOG_RECODER);
+               Logs logs = logPack.getLogs(probeType);
                List<List<String>> logList = logs.getLogs();
 
                for (List<String> log : logList) {
index 9824b9e..3a4e904 100755 (executable)
@@ -43,6 +43,7 @@ import org.tizen.dynamicanalyzer.logparser.Logs;
 import org.tizen.dynamicanalyzer.model.DAView;
 import org.tizen.dynamicanalyzer.model.SnapshotData;
 import org.tizen.dynamicanalyzer.resources.ColorResources;
+import org.tizen.dynamicanalyzer.ui.timeline.chart.ScreenshotChart;
 import org.tizen.dynamicanalyzer.ui.timeline.chart.TimelineChart;
 import org.tizen.dynamicanalyzer.ui.timeline.chart.UIEventChart;
 import org.tizen.dynamicanalyzer.ui.timeline.custom.CustomLogParser;
@@ -274,6 +275,11 @@ public class TimelineView extends DAView {
                if(lifecycleLogs != null && lifecycleLogs.getLogs() != null && lifecycleLogs.getLogs().size() > 0) {
                        lifecycleLogParser.parsingLogPackage(logPack);
                }
+               
+               Logs screenShotLogs = logPack.getLogs(LogCenterConstants.LOG_SCREENSHOT);
+               if(screenShotLogs != null && screenShotLogs.getLogs() != null && screenShotLogs.getLogs().size() > 0) {
+                       ScreenshotChart.getInstance().parsingLogPackage(logPack);
+               }
        }
 
        @Override