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) {
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()) {
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);
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);
}
}
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;
@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
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));
+ }
+ }
}
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;
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