From 91c4a8a818d34d328f712f188557d7f5a47d8eea Mon Sep 17 00:00:00 2001 From: "sanghyunnim.lee" Date: Thu, 29 Nov 2012 20:11:14 +0900 Subject: [PATCH] [Title]modify the Screenshot chart to work [Desc.] [Issue] --- .../widgets/chart/DACustomChartRenderer.java | 36 +++++++------ .../ui/timeline/chart/ScreenshotChart.java | 63 +++++++++++++++++++++- .../ui/timeline/chart/UIEventChart.java | 4 +- .../ui/timeline/common/TimelineView.java | 6 +++ 4 files changed, 91 insertions(+), 18 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 8c39199..649d4c1 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 @@ -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 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); } } diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/chart/ScreenshotChart.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/chart/ScreenshotChart.java index ca4665f..711b629 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/chart/ScreenshotChart.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/chart/ScreenshotChart.java @@ -26,12 +26,19 @@ 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> logList = logs.getLogs(); + + for(List log : logList) { + parsingLog(log); + } + } + + private void parsingLog(List 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)); + } + } } diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/chart/UIEventChart.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/chart/UIEventChart.java index be14647..cf5a911 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/chart/UIEventChart.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/chart/UIEventChart.java @@ -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> logList = logs.getLogs(); for (List log : logList) { diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/common/TimelineView.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/common/TimelineView.java index 9824b9e..3a4e904 100755 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/common/TimelineView.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/common/TimelineView.java @@ -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 -- 2.7.4