[Title] Add new timeline renderer
authorkamuru <kamuru@kamuru-Samsung-Desktop-System.(none)>
Thu, 19 Dec 2013 03:44:51 +0000 (12:44 +0900)
committerkamuru <kamuru@kamuru-Samsung-Desktop-System.(none)>
Thu, 19 Dec 2013 03:44:51 +0000 (12:44 +0900)
[Desc.] Add tiny timeline renderer for kernel page
[Issue]

org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/chartBoard/DAChartBoard.java
org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/timeline/DATimeline.java
org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/timeline/DATimelineTimeRenderer.java
org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/timeline/DATimelineTinyTimeRenderer.java [new file with mode: 0644]
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/chart/CPUChart.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/chart/CPUCoreChart.java

index c4cc7c0..12b0cb6 100644 (file)
@@ -66,6 +66,7 @@ import org.tizen.dynamicanalyzer.widgets.timeline.DATimeline;
 import org.tizen.dynamicanalyzer.widgets.timeline.DATimelineFrameRenderer;
 import org.tizen.dynamicanalyzer.widgets.timeline.DATimelineMarker;
 import org.tizen.dynamicanalyzer.widgets.timeline.DATimelineTimeRenderer;
+import org.tizen.dynamicanalyzer.widgets.timeline.DATimelineTinyTimeRenderer;
 
 public class DAChartBoard extends Composite {
 
@@ -108,13 +109,14 @@ public class DAChartBoard extends Composite {
 
        public final static int BOARD_STYLE_TIME = 0;
        public final static int BOARD_STYLE_FRAME = 1;
+       public final static int BOARD_STYLE_KERNEL = 2;
 
        public DAChartBoard(Composite parent, String title) {
                this(parent, title, BOARD_STYLE_TIME);
        }
 
        public DAChartBoard(Composite parent, String title, int[] scaleValues) {
-               this(parent, title, BOARD_STYLE_TIME);
+               this(parent, title, BOARD_STYLE_KERNEL);
                scale.setMaximum(scaleValues.length - 1);
                boardManager.setScaleValues(scaleValues);
        }
@@ -141,7 +143,7 @@ public class DAChartBoard extends Composite {
                                        }
                                });
 
-               if (BOARD_STYLE_TIME == boardStyle) {
+               if (boardStyle == BOARD_STYLE_TIME) {
                        interval = DATimelineTimeRenderer.DEFAULT_INTERVAL;
                        timeline = new DATimeline(this, true);
                        timelineTooltip = new DefaultToolTip(timeline);
@@ -152,9 +154,16 @@ public class DAChartBoard extends Composite {
                        lifecycleBarTooltip = new DefaultToolTip(lifecycleBar);
                        lifecycleBarTooltip.deactivate();
                        lifecycleBar.addMouseTrackListener(timelineMouseTrackAdapter);
-               } else { // BOARD_STYLE_FRAME == boardStyle
+               } else if(boardStyle == BOARD_STYLE_FRAME) {
+                       interval = DATimelineFrameRenderer.DEFAULT_INTERVAL;
+                       timeline = new DATimeline(this, false);
+                       timeline.setRenderer(new DATimelineFrameRenderer());
+               } else {
+                       lifecycleBar = new LifecycleBar(this);
+                       
                        interval = DATimelineFrameRenderer.DEFAULT_INTERVAL;
                        timeline = new DATimeline(this, false);
+                       timeline.setRenderer(new DATimelineTinyTimeRenderer());
                }
 
                scale = new DAScale(this, 4, SWT.NONE);
@@ -743,21 +752,10 @@ public class DAChartBoard extends Composite {
                return selectItem;
        }
 
-       public double getLifecycleEndTime() {
-               if (null == lifecycleBar) {
-                       return -1;
-               }
-               return lifecycleBar.getEndTime();
-       }
-
        protected int getInterval() {
                return interval;
        }
 
-       protected void setInterval(int interval) {
-               this.interval = interval;
-       }
-       
        public ScrollBar getHScrollBar() {
                return hScroll;
        }
index 2c49d44..9924060 100644 (file)
@@ -58,15 +58,11 @@ public class DATimeline extends Canvas {
        private DATimelineMarker startRangeMarker;
        private DATimelineMarker endRangeMarker;
 
-       public DATimeline(Composite parent) {
-               this(parent, false);
-       }
-
        public DATimeline(Composite parent, boolean useMarker) {
                super(parent, SWT.NONE);
                this.addPaintListener(chartPaintListener);
-               if (true == useMarker) {
-                       timelineRenderer = new DATimelineTimeRenderer();
+               timelineRenderer = new DATimelineTimeRenderer();
+               if (useMarker) {
                        startRangeMarker = new DATimelineMarker(
                                        ImageResources.RANGE_MARKER_START,
                                        ImageResources.RANGE_MARKER_START_PUSH);
@@ -75,11 +71,12 @@ public class DATimeline extends Canvas {
                                        ImageResources.RANGE_MARKER_END_PUSH);
                        this.addMouseListener(new RangeMarkerMouseEventListener());
                        this.addMouseMoveListener(new RangeMarkerMouseMoveEventListener());
-               } else {
-                       timelineRenderer = new DATimelineFrameRenderer();
                }
        }
 
+       public void setRenderer(DATimelineRenderer renderer) {
+               timelineRenderer = renderer;
+       }
        public double getStartTime() {
                return startTime;
        }
index acda475..59171e6 100644 (file)
@@ -36,13 +36,16 @@ import org.tizen.dynamicanalyzer.widgets.helper.Formatter;
 import org.tizen.dynamicanalyzer.widgets.helper.ImageResources;
 
 public class DATimelineTimeRenderer extends DATimelineRenderer {
-       public static final int DEFAULT_INTERVAL = 5;
-       private final Image balloon = ImageResources.TIMELINE_DETAILED_TIME_BALLOON;
-       private final int balloonHalfWidth = balloon.getBounds().width / 2;
-       private final int balloonHalfHeight = balloon.getBounds().height / 2;
+       protected final Image balloon = ImageResources.TIMELINE_DETAILED_TIME_BALLOON;
+       protected final int balloonHalfWidth = balloon.getBounds().width / 2;
+       protected final int balloonHalfHeight = balloon.getBounds().height / 2;
 
-       private int startTime;
-       int scale;
+       protected static final int TICK_LINE_HEIGHT_TALL = 7;
+       protected static final int TICK_LINE_HEIGHT_MID = 5;
+       protected static final int TICK_LINE_HEIGHT_SMALL = 3;
+
+       protected int startTime;
+       protected int scale;
 
        private void drawRangeMarkers(GC gc, DATimeline timeline) {
                DATimelineMarker startMarker = timeline.getStartRangeMarker();
@@ -66,7 +69,7 @@ public class DATimelineTimeRenderer extends DATimelineRenderer {
                }
        }
 
-       private void drawTimeString(GC gc, int totalSecond, int pixcelX, int pixcelY) {
+       protected void drawTimeString(GC gc, int totalSecond, int pixcelX, int pixcelY) {
                Point p;
                String timeString = Formatter.toTimelineFormat(totalSecond);
 
@@ -96,17 +99,20 @@ public class DATimelineTimeRenderer extends DATimelineRenderer {
                for (; pixcelX < rt.width; startTime++, pixcelX += secondInterval) {
                        if (startTime % 10 == 0) {
                                drawTimeString(gc, startTime, pixcelX, 1);
-                               gc.drawLine(pixcelX, rt.height - 7, pixcelX, rt.height - 1);
+                               gc.drawLine(pixcelX, rt.height - TICK_LINE_HEIGHT_TALL,
+                                               pixcelX, rt.height - 1);
                        } else if (startTime % 5 == 0) {
                                if (scale >= DATimeline.SCALE_400) {
                                        drawTimeString(gc, startTime, pixcelX, 1);
                                }
-                               gc.drawLine(pixcelX, rt.height - 5, pixcelX, rt.height - 1);
+                               gc.drawLine(pixcelX, rt.height - TICK_LINE_HEIGHT_MID, pixcelX,
+                                               rt.height - 1);
                        } else {
                                if (scale >= DATimeline.SCALE_800) {
                                        drawTimeString(gc, startTime, pixcelX, 1);
                                }
-                               gc.drawLine(pixcelX, rt.height - 3, pixcelX, rt.height - 1);
+                               gc.drawLine(pixcelX, rt.height - TICK_LINE_HEIGHT_SMALL,
+                                               pixcelX, rt.height - 1);
                        }
                }
 
@@ -128,5 +134,4 @@ public class DATimelineTimeRenderer extends DATimelineRenderer {
                                                        - gc.stringExtent(time).y / 2 - 4, true);
                }
        }
-
 }
diff --git a/org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/timeline/DATimelineTinyTimeRenderer.java b/org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/timeline/DATimelineTinyTimeRenderer.java
new file mode 100644 (file)
index 0000000..43abe90
--- /dev/null
@@ -0,0 +1,65 @@
+package org.tizen.dynamicanalyzer.widgets.timeline;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.GC;
+import org.eclipse.swt.graphics.Point;
+import org.eclipse.swt.graphics.Rectangle;
+import org.tizen.dynamicanalyzer.widgets.helper.ColorResources;
+import org.tizen.dynamicanalyzer.widgets.helper.Formatter;
+
+public class DATimelineTinyTimeRenderer extends DATimelineTimeRenderer {
+       private static final int STRING_GAP = 100;
+
+       @Override
+       public void draw(GC gc, DATimeline timeline) {
+               Rectangle rt = timeline.getClientArea();
+               gc.setFont(timeTickFont);
+               gc.setBackground(ColorResources.TIMELINE_BG_COLOR);
+               gc.fillRectangle(rt);
+
+               // draw underLine
+               gc.drawLine(0, rt.height - 1, rt.width, rt.height - 1);
+
+               // draw time
+               int pixcelX = 0;
+               scale = timeline.getScale();
+               double oneSecondInterval = scale * DEFAULT_INTERVAL;
+               double startTime = timeline.getStartTime();
+
+               double timeInterval = STRING_GAP / oneSecondInterval;
+
+               double firstTime = timeInterval * ((int) (startTime / timeInterval));
+               pixcelX = (int) (oneSecondInterval * (firstTime - startTime));
+
+               for (; pixcelX < rt.width; firstTime += timeInterval, pixcelX += STRING_GAP) {
+                       gc.drawLine(pixcelX, rt.height - TICK_LINE_HEIGHT_TALL, pixcelX,
+                                       rt.height - 1);
+
+                       String timeString = null;
+                       if (firstTime - (int) firstTime == 0) {
+                               timeString = Formatter.toTimelineFormat((int) firstTime);
+                       } else {
+                               String minorityString = Double.toString(firstTime).substring(1);
+                               int timeIntervalMinorityStringLength = Double.toString(
+                                               timeInterval).length() - 1;
+                               if (minorityString.length() > timeIntervalMinorityStringLength) {
+                                       minorityString = minorityString.substring(0,
+                                                       timeIntervalMinorityStringLength + 1);
+                               }
+
+                               while (minorityString.endsWith("0")) {
+                                       minorityString = minorityString.substring(0,
+                                                       minorityString.length() - 1);
+                               }
+                               timeString = Formatter.toTimelineFormat((int) firstTime)
+                                               + minorityString;
+                       }
+
+                       Point p;
+                       p = gc.textExtent(timeString, SWT.DRAW_MNEMONIC);
+                       gc.setForeground(ColorResources.TIMELINE_NUMBER_COLOR);
+                       gc.drawText(timeString, pixcelX - p.x / 2, 1, true);
+                       gc.setForeground(ColorResources.TIMELINE_TICK_COLOR);
+               }
+       }
+}
index 131ed1d..0f1a7cc 100644 (file)
@@ -189,6 +189,7 @@ public class CPUChart extends TimelineChart {
                        });
                }
 
+               /* processes load */
                String[] processLoadDatas = logData.getProcessLoad().split(
                                CommonConstants.COMMA);
 
index ccc348c..9921bef 100644 (file)
@@ -29,8 +29,6 @@ package org.tizen.dynamicanalyzer.ui.timeline.chart;
 import java.util.ArrayList;
 import java.util.List;
 
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.widgets.Display;
 import org.tizen.dynamicanalyzer.common.CommonConstants;
 import org.tizen.dynamicanalyzer.communicator.DACommunicator;
 import org.tizen.dynamicanalyzer.nl.TimelineChartLabels;
@@ -41,19 +39,13 @@ import org.tizen.dynamicanalyzer.swap.logparser.LogPackage;
 import org.tizen.dynamicanalyzer.swap.logparser.Logs;
 import org.tizen.dynamicanalyzer.swap.model.data.LogData;
 import org.tizen.dynamicanalyzer.swap.model.data.SystemData;
-import org.tizen.dynamicanalyzer.ui.kernel.CallFlowChartRenderer;
-import org.tizen.dynamicanalyzer.ui.kernel.ContextSwitchingChartRenderer;
-import org.tizen.dynamicanalyzer.ui.kernel.ContextSwitchingChartSeriesItem;
 import org.tizen.dynamicanalyzer.ui.timeline.common.TimelineConstants;
 import org.tizen.dynamicanalyzer.utils.Formatter;
-import org.tizen.dynamicanalyzer.widgets.chart.DAChart;
 import org.tizen.dynamicanalyzer.widgets.chart.DAChartPlot.AutoRangeType;
 import org.tizen.dynamicanalyzer.widgets.chart.DAChartSeries;
 import org.tizen.dynamicanalyzer.widgets.chart.DAChartSeriesItem;
 import org.tizen.dynamicanalyzer.widgets.chartBoard.DAChartBoard;
-import org.tizen.dynamicanalyzer.widgets.chartBoard.DAChartBoardHeightChangeableItem;
 import org.tizen.dynamicanalyzer.widgets.chartBoard.DAChartBoardItem;
-import org.tizen.dynamicanalyzer.widgets.popupMenu.DAPopupMenu;
 
 public class CPUCoreChart extends TimelineChart {
        private static CPUCoreChart instance = null;