[Title] DAScale added
authorLee <jy.exe.lee@samsung.com>
Thu, 16 Aug 2012 09:00:01 +0000 (18:00 +0900)
committerLee <jy.exe.lee@samsung.com>
Thu, 16 Aug 2012 09:00:01 +0000 (18:00 +0900)
[Type] new feature
[Module] Dynamic Analyzer
[Priority] normal
[CQ#]
[Redmine#]
[Problem]
[Cause]
[Solution]
[TestCase]

30 files changed:
org.tizen.dynamicanalyzer.widgets/META-INF/MANIFEST.MF
org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/button/DACustomButton.java
org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/button/DACustomButtonAttribute.java [moved from org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/button/DACustomWidgetAttribute.java with 97% similarity]
org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/button/DACustomButtonDefaultRenderer.java
org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/button/DACustomButtonRenderer.java
org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/button/toggle/DACustomToggleButtonRenderer.java
org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/scale/DACustomScaleRenderer.java [new file with mode: 0644]
org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/scale/DAScale.java [new file with mode: 0644]
org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/scale/DAScaleAttribute.java [new file with mode: 0644]
org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/scale/DAScaleDefaultRenderer.java [new file with mode: 0644]
org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/scale/DAScaleSelectionListener.java [new file with mode: 0644]
org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/test/TestClass.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/AnalyzerManager.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ColorResources.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ImageResources.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/constants/TimelineConstants.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/theme/DAThemeBlack.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/theme/DAThemeWhite.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/timeline/TimelineRangeSelector.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/renderers/ComboButtonRenderer.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/renderers/DAButtonRenderer.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/renderers/DAScaleRenderer.java [new file with mode: 0644]
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/renderers/TabButtonRenderer.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/views/filePage/fileChart/DAFileChart.java
org.tizen.dynamicanalyzer/theme/black/img/scale_control_minus.png [new file with mode: 0644]
org.tizen.dynamicanalyzer/theme/black/img/scale_control_plus.png [new file with mode: 0644]
org.tizen.dynamicanalyzer/theme/black/img/scale_control_thumb.png [new file with mode: 0644]
org.tizen.dynamicanalyzer/theme/white/img/scale_control_minus.png [new file with mode: 0644]
org.tizen.dynamicanalyzer/theme/white/img/scale_control_plus.png [new file with mode: 0644]
org.tizen.dynamicanalyzer/theme/white/img/scale_control_thumb.png [new file with mode: 0644]

index af8c58c..1ca3955 100644 (file)
@@ -16,4 +16,5 @@ Export-Package: org.tizen.dynamicanalyzer.widgets,
  org.tizen.dynamicanalyzer.widgets.graph.bar,
  org.tizen.dynamicanalyzer.widgets.graph.circular,
  org.tizen.dynamicanalyzer.widgets.helper,
+ org.tizen.dynamicanalyzer.widgets.scale,
  org.tizen.dynamicanalyzer.widgets.timer
index 3fad133..f5bd28f 100644 (file)
@@ -51,7 +51,7 @@ public class DACustomButton extends Canvas {
     protected boolean enabled = true;
 
     protected int state = STATE_NORMAL;
-    protected DACustomWidgetAttribute attr;
+    protected DACustomButtonAttribute attr;
     protected DACustomButtonDefaultRenderer buttonRenderer = null;
 
     public void addListeners() {
@@ -72,7 +72,7 @@ public class DACustomButton extends Canvas {
         this.addPaintListener(buttonPaintListener);
         addListeners();
         buttonRenderer = new DACustomButtonRenderer();
-        attr = new DACustomWidgetAttribute();
+        attr = new DACustomButtonAttribute();
         setDefaultColors();
     }
 
@@ -27,7 +27,7 @@ import org.eclipse.swt.graphics.Font;
 import org.eclipse.swt.graphics.Image;
 import org.eclipse.swt.graphics.Point;
 
-public class DACustomWidgetAttribute {
+public class DACustomButtonAttribute {
        private final int MAX_SIZE = 10;
        private String text;
        private Image buttonImage = null;
@@ -42,7 +42,7 @@ public class DACustomWidgetAttribute {
        private List<Color> outlineInColors = new ArrayList<Color>();
        private boolean enabled;
 
-       public DACustomWidgetAttribute() {
+       public DACustomButtonAttribute() {
                enabled = true;
 
                // init array
index c87cd88..2fdda42 100644 (file)
@@ -24,6 +24,6 @@ import org.eclipse.swt.widgets.Canvas;
 
 public abstract class DACustomButtonDefaultRenderer {
        public abstract void draw(GC gc, Canvas canvas, int state,
-                       DACustomWidgetAttribute attr);
+                       DACustomButtonAttribute attr);
 
 }
index c86ab46..f84006c 100644 (file)
@@ -34,7 +34,7 @@ public class DACustomButtonRenderer extends DACustomButtonDefaultRenderer {
 
        @Override
        public void draw(GC gc, Canvas canvas, int state,
-                       DACustomWidgetAttribute attr) {
+                       DACustomButtonAttribute attr) {
                Rectangle rect = canvas.getClientArea();
 
                if (attr.getDrawType() == DACustomButton.TYPE_IMAGE) {
@@ -60,7 +60,7 @@ public class DACustomButtonRenderer extends DACustomButtonDefaultRenderer {
        }
 
        public void drawButton(GC gc, Rectangle rect, int state,
-                       DACustomWidgetAttribute attr) {
+                       DACustomButtonAttribute attr) {
                if (attr.getDrawType() == DACustomButton.TYPE_COLOR) {
                        gc.setBackground(attr.getColor(state));
                        gc.fillRectangle(rect);
@@ -87,7 +87,7 @@ public class DACustomButtonRenderer extends DACustomButtonDefaultRenderer {
        }
 
        protected void drawButtonImage(GC gc, Rectangle rect,
-                       DACustomWidgetAttribute attr) {
+                       DACustomButtonAttribute attr) {
                if (attr != null && attr.getButtonImage() != null) {
                        Image img = attr.getButtonImage();
                        Rectangle imgRect = img.getBounds();
@@ -106,7 +106,7 @@ public class DACustomButtonRenderer extends DACustomButtonDefaultRenderer {
        }
 
        protected void drawButtonText(GC gc, Rectangle rect,
-                       DACustomWidgetAttribute attr, int state) {
+                       DACustomButtonAttribute attr, int state) {
                String s = null;
                Font f = null;
                Point p = null;
index 0d8c30b..f582129 100644 (file)
@@ -25,13 +25,13 @@ import org.eclipse.swt.graphics.Rectangle;
 import org.eclipse.swt.widgets.Canvas;
 import org.tizen.dynamicanalyzer.widgets.button.DACustomButton;
 import org.tizen.dynamicanalyzer.widgets.button.DACustomButtonRenderer;
-import org.tizen.dynamicanalyzer.widgets.button.DACustomWidgetAttribute;
+import org.tizen.dynamicanalyzer.widgets.button.DACustomButtonAttribute;
 
 public class DACustomToggleButtonRenderer extends DACustomButtonRenderer {
 
        @Override
        public void draw(GC gc, Canvas canvas, int state,
-                       DACustomWidgetAttribute attr) {
+                       DACustomButtonAttribute attr) {
                Rectangle rect = canvas.getClientArea();
                if (attr.getDrawType() == DACustomButton.TYPE_IMAGE) {
                        Image image = attr.getImage(state);
diff --git a/org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/scale/DACustomScaleRenderer.java b/org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/scale/DACustomScaleRenderer.java
new file mode 100644 (file)
index 0000000..dd26b33
--- /dev/null
@@ -0,0 +1,39 @@
+package org.tizen.dynamicanalyzer.widgets.scale;
+
+import org.eclipse.swt.graphics.GC;
+import org.eclipse.swt.graphics.Rectangle;
+import org.eclipse.swt.widgets.Canvas;
+import org.tizen.dynamicanalyzer.widgets.helper.ColorResources;
+
+public class DACustomScaleRenderer extends DAScaleDefaultRenderer {
+
+       @Override
+       public void draw(GC gc, Canvas canvas, DAScaleAttribute attr) {
+               Rectangle rect = canvas.getClientArea();
+               gc.setBackground(ColorResources.PURPLE);
+               gc.fillRectangle(rect);
+
+               if (null != attr.getLeftImage() && null != attr.getRightImage()) {
+                       gc.drawImage(attr.getLeftImage(), attr.getLeftRect().x,
+                                       attr.getLeftRect().y);
+                       gc.drawImage(attr.getRightImage(), attr.getRightRect().x,
+                                       attr.getRightRect().y);
+               } else {
+                       gc.setBackground(ColorResources.BLUE);
+                       gc.fillRectangle(attr.getLeftRect());
+                       gc.fillRectangle(attr.getRightRect());
+               }
+
+               gc.setBackground(ColorResources.BLACK);
+               gc.fillRectangle(attr.getAreaRect());
+
+               if (null != attr.getThumbImage()) {
+                       gc.drawImage(attr.getThumbImage(), attr.getThumbRect().x,
+                                       attr.getThumbRect().y);
+               } else {
+                       gc.setBackground(ColorResources.RED);
+                       gc.fillOval(attr.getThumbRect().x, attr.getThumbRect().y,
+                                       attr.getThumbRect().width, attr.getThumbRect().height);
+               }
+       }
+}
diff --git a/org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/scale/DAScale.java b/org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/scale/DAScale.java
new file mode 100644 (file)
index 0000000..32be598
--- /dev/null
@@ -0,0 +1,382 @@
+package org.tizen.dynamicanalyzer.widgets.scale;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.ControlEvent;
+import org.eclipse.swt.events.ControlListener;
+import org.eclipse.swt.events.PaintEvent;
+import org.eclipse.swt.events.PaintListener;
+import org.eclipse.swt.graphics.Color;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.graphics.Point;
+import org.eclipse.swt.graphics.Rectangle;
+import org.eclipse.swt.widgets.Canvas;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Listener;
+
+public class DAScale extends Canvas {
+
+       private static final int LEFT_AREA_WIDTH = 20;
+       private static final int RIGHT_AREA_WIDTH = 20;
+       private static final int LEFT_MARGIN = 3;
+       private static final int RIGHT_MARGIN = 3;
+       // private static final int TOP_MARGIN = 10;
+       // private static final int BOTTOM_MARGIN = 10;
+       private static final int DEFAULT_AREA_HEIGHT = 6;
+       private static final int THUMB_AREA_START = LEFT_AREA_WIDTH + LEFT_MARGIN;
+
+       private static final int THUMB_HEIGHT = 14;
+       private static final int THUMB_WIDTH = 14;
+
+       private DAScaleAttribute attr;
+       private DAScaleDefaultRenderer renderer;
+       private DAScaleSelectionListener selectionListener = null;
+
+       private List<Integer> selectPositions = null;
+       private int selection = 0;
+
+       private int increment;
+       private int pageIncrement;
+       private int maxValue;
+       private int minValue;
+
+       private int areaWidth = 0;
+       private int areaHeight = 0;
+
+       private int mouseX;
+
+       private boolean mouseDown = false;
+
+       private Rectangle thumbRect = null;
+       private Rectangle areaRect= null;
+       private Rectangle leftRect= null;
+       private Rectangle rightRect= null;
+
+       private Color bgColor;
+       private Color thumbColor;
+
+       public DAScale(Composite parent, int style) {
+               super(parent, style);
+               increment = 1;
+               pageIncrement = 1;
+               maxValue = 2;
+               minValue = 0;
+               attr = new DAScaleAttribute();
+               renderer = new DACustomScaleRenderer();
+               selectPositions = new ArrayList<Integer>();
+
+               addListener(SWT.MouseDown, mouseListener);
+               addListener(SWT.MouseUp, mouseListener);
+               addListener(SWT.MouseMove, mouseListener);
+
+               addPaintListener(paintListener);
+               addControlListener(controlListener);
+       }
+
+       public void setIncrement(int increment) {
+               this.increment = increment;
+       }
+
+       public int getIncrement() {
+               return increment;
+       }
+
+       public void setPageIncrement(int increment) {
+               this.pageIncrement = increment;
+       }
+
+       public int getPageIncrement() {
+               return pageIncrement;
+       }
+
+       public void setMaximum(int max) {
+               maxValue = max;
+       }
+
+       public int getMaximum() {
+               return maxValue;
+       }
+
+       public void setMinimum(int min) {
+               minValue = min;
+       }
+
+       public int getMinimum() {
+               return minValue;
+       }
+
+       public int getSelection() {
+               int tick = getTickTize();
+
+               int thumbX = thumbRect.x + THUMB_WIDTH / 2;
+               int width = thumbX - areaRect.x;
+
+               if (width == 0) {
+                       return minValue;
+               } else if (areaRect.width == width) {
+                       return maxValue;
+               }
+
+               else {
+                       int quotient = width / tick;
+                       int reminder = width % tick;
+                       int result = 0;
+
+                       if (reminder == 0) {
+                               result = quotient + minValue;
+                       } else {
+                               result = quotient + minValue + 1;
+                       }
+                       return result;
+               }
+       }
+
+       public void setLeftImage(Image left) {
+               attr.setLeftImage(left);
+       }
+
+       public void setRightImage(Image right) {
+               attr.setRightImage(right);
+       }
+
+       public void setThumbImage(Image thumb) {
+               attr.setThumbImage(thumb);
+       }
+
+       public void setSelection(int selection) {
+               if (selection > maxValue) {
+                       selection = maxValue;
+               } else if (selection < minValue) {
+                       selection = minValue;
+               }
+               this.selection = selection - minValue;
+               int thumbPos = selectPositions.get(this.selection);
+               thumbRect = getThumbRect(thumbPos);
+               redraw();
+       }
+
+       public void addSelectionListener(DAScaleSelectionListener listener) {
+               if (null == listener) {
+                       return;
+               }
+               selectionListener = listener;
+       }
+
+       public void setRenderer(DAScaleDefaultRenderer renderer) {
+               this.renderer = renderer;
+       }
+
+       private boolean pointInRect(Rectangle rect, Point p) {
+               if ((p.x > rect.x) && (p.x > rect.y) && (p.x < rect.x + rect.width)
+                               && (p.y < rect.y + rect.height)) {
+                       return true;
+               }
+               return false;
+       }
+
+       private Rectangle getThumbRect(int pointX) {
+
+               int thumbHeight = THUMB_HEIGHT;
+               int thumbWidth = THUMB_WIDTH;
+
+               if (null != attr.getThumbImage()) {
+                       Rectangle thumbImageRect = attr.getThumbImage().getBounds();
+                       thumbHeight = thumbImageRect.height;
+                       thumbWidth = thumbImageRect.width;
+               }
+
+               if (pointX < areaRect.x) {
+                       pointX = areaRect.x;
+               } else if (pointX > areaRect.x + areaRect.width) {
+                       pointX = areaRect.x + areaRect.width;
+               }
+               int y = areaRect.y - (thumbHeight - areaRect.height) / 2;
+               int x = pointX - thumbWidth / 2;
+               return new Rectangle(x, y, thumbWidth, thumbHeight);
+       }
+
+       private void setSelectionInternal(int pointX) {
+               if (pointX <= areaRect.x) {
+                       selection = 0;
+               } else if (pointX >= areaRect.x + areaRect.width) {
+                       selection = maxValue - minValue;
+               } else {
+                       int tick = getTickTize();
+
+                       int width = pointX - areaRect.x;
+
+                       int quotient = width / tick;
+                       int reminder = width % tick;
+
+                       if (reminder == 0) {
+                               selection = quotient;
+                       } else {
+                               selection = quotient + 1;
+                       }
+               }
+       }
+
+       private int getScaleSize() {
+               return maxValue - minValue - 1;
+       }
+
+       private int getTickTize() {
+               return areaRect.width / getScaleSize();
+       }
+
+       private void increaseSelection() {
+               if (selection < maxValue - minValue) {
+                       selection += 1;
+               }
+       }
+
+       private void decreaseSelection() {
+               if (selection > 0) {
+                       selection -= 1;
+               }
+       }
+
+       /*** listeners ***/
+       private Listener mouseListener = new Listener() {
+
+               @Override
+               public void handleEvent(Event event) {
+                       if (event.type == SWT.MouseDown) {
+                               if (pointInRect(thumbRect, new Point(event.x, event.y))) {
+                                       mouseDown = true;
+                               } else if ((event.x >= areaRect.x)
+                                               && (event.x <= areaRect.x + areaRect.width)) {
+                                       int thumbX = thumbRect.x + THUMB_WIDTH / 2;
+                                       if (event.x < thumbX) {
+                                               decreaseSelection();
+                                       } else {
+                                               increaseSelection();
+                                       }
+                                       int delta = selectPositions.get(selection);
+                                       thumbRect = getThumbRect(delta);
+                                       redraw();
+                               }
+                       }
+
+                       if (event.type == SWT.MouseUp) {
+                               mouseDown = false;
+
+                               if (pointInRect(leftRect, new Point(event.x, event.y))) {
+                                       decreaseSelection();
+                                       int delta = selectPositions.get(selection);
+                                       thumbRect = getThumbRect(delta);
+                                       redraw();
+                               }
+
+                               if (pointInRect(rightRect, new Point(event.x, event.y))) {
+                                       increaseSelection();
+                                       int delta = selectPositions.get(selection);
+                                       thumbRect = getThumbRect(delta);
+                                       redraw();
+                               }
+                       }
+
+                       if (event.type == SWT.MouseMove) {
+                               if (mouseDown) {
+                                       setSelectionInternal(event.x);
+                                       thumbRect = getThumbRect(event.x);
+                                       mouseX = event.x;
+                                       redraw();
+                               }
+                       }
+                       if (null != selectionListener) {
+                               selectionListener.widgetSelected();
+                       }
+               }
+       };
+
+       private PaintListener paintListener = new PaintListener() {
+
+               @Override
+               public void paintControl(PaintEvent e) {
+                       attr.setAreaRect(areaRect);
+                       attr.setLeftRect(leftRect);
+                       attr.setRightRect(rightRect);
+                       attr.setThumbRect(thumbRect);
+                       renderer.draw(e.gc, (Canvas) e.widget, attr);
+               }
+       };
+
+       private ControlListener controlListener = new ControlListener() {
+
+               @Override
+               public void controlResized(ControlEvent e) {
+                       Canvas canvas = (Canvas) e.widget;
+                       Rectangle rect = canvas.getClientArea();
+
+                       if ((null != attr.getLeftImage())
+                                       && ((null != attr.getRightImage()))) {
+                               leftRect = attr.getLeftImage().getBounds();
+                               if (leftRect.height < rect.height) {
+                                       leftRect.y += (rect.height - leftRect.height) / 2;
+                               }
+
+                               if (leftRect.width < LEFT_AREA_WIDTH) {
+                                       leftRect.x += (LEFT_AREA_WIDTH - leftRect.width) / 2;
+                               }
+                               rightRect = attr.getRightImage().getBounds();
+
+                               if (rightRect.height < rect.height) {
+                                       rightRect.y += (rect.height - rightRect.height) / 2;
+                               }
+
+                               if (rightRect.width < RIGHT_AREA_WIDTH) {
+                                       rightRect.x += (RIGHT_AREA_WIDTH - rightRect.width) / 2;
+                               }
+
+                               rightRect = new Rectangle(
+                                               rect.x + rect.width - rightRect.width, rightRect.y,
+                                               rightRect.width, rightRect.height);
+                       } else {
+                               leftRect = new Rectangle(rect.x, rect.y, LEFT_AREA_WIDTH,
+                                               rect.height);
+                               rightRect = new Rectangle(rect.x + rect.width
+                                               - RIGHT_AREA_WIDTH, rect.y, RIGHT_AREA_WIDTH,
+                                               rect.height);
+                       }
+                       areaWidth = rect.width
+                                       - (leftRect.width + LEFT_MARGIN + rightRect.width + RIGHT_MARGIN);
+                       areaHeight = DEFAULT_AREA_HEIGHT;
+                       int areaY = rect.y + (rect.height - areaHeight) / 2;
+                       areaRect = new Rectangle(rect.x + THUMB_AREA_START, areaY,
+                                       areaWidth, areaHeight);
+
+                       if (thumbRect == null) {
+                               thumbRect = getThumbRect(areaRect.x);
+                       }
+
+                       initSelectPosition();
+               }
+
+               @Override
+               public void controlMoved(ControlEvent e) {
+                       // TODO Auto-generated method stub
+
+               }
+       };
+
+       private void initSelectPosition() {
+               selectPositions.clear();
+               int size = maxValue - minValue + 1;
+               int tickSize = getTickTize();
+
+               for (int i = 0; i < size; i++) {
+                       if (i == 0) {
+                               selectPositions.add(areaRect.x);
+                       } else if (i == (size - 1)) {
+                               selectPositions.add(areaRect.x + areaRect.width);
+                       } else {
+                               int pos = tickSize * (i - 1) + tickSize / 2 + areaRect.x;
+                               selectPositions.add(pos);
+                       }
+               }
+       }
+}
diff --git a/org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/scale/DAScaleAttribute.java b/org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/scale/DAScaleAttribute.java
new file mode 100644 (file)
index 0000000..8e97c18
--- /dev/null
@@ -0,0 +1,72 @@
+package org.tizen.dynamicanalyzer.widgets.scale;
+
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.graphics.Rectangle;
+
+public class DAScaleAttribute {
+       private Image leftImage = null;
+       private Image rightImage = null;
+       private Image thumbImage = null;
+       
+       private Rectangle thumbRect = null;
+       private Rectangle areaRect = null;
+       private Rectangle leftRect = null;
+       private Rectangle rightRect = null;
+
+       public Rectangle getThumbRect() {
+               return thumbRect;
+       }
+
+       public void setThumbRect(Rectangle thumbRect) {
+               this.thumbRect = thumbRect;
+       }
+
+       public Rectangle getAreaRect() {
+               return areaRect;
+       }
+
+       public void setAreaRect(Rectangle areaRect) {
+               this.areaRect = areaRect;
+       }
+
+       public Rectangle getLeftRect() {
+               return leftRect;
+       }
+
+       public void setLeftRect(Rectangle leftRect) {
+               this.leftRect = leftRect;
+       }
+
+       public Rectangle getRightRect() {
+               return rightRect;
+       }
+
+       public void setRightRect(Rectangle rightRect) {
+               this.rightRect = rightRect;
+       }
+
+       public Image getLeftImage() {
+               return leftImage;
+       }
+
+       public void setLeftImage(Image leftImage) {
+               this.leftImage = leftImage;
+       }
+
+       public Image getRightImage() {
+               return rightImage;
+       }
+
+       public void setRightImage(Image rightImage) {
+               this.rightImage = rightImage;
+       }
+
+       public Image getThumbImage() {
+               return thumbImage;
+       }
+
+       public void setThumbImage(Image thumbImage) {
+               this.thumbImage = thumbImage;
+       }
+
+}
diff --git a/org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/scale/DAScaleDefaultRenderer.java b/org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/scale/DAScaleDefaultRenderer.java
new file mode 100644 (file)
index 0000000..27555e5
--- /dev/null
@@ -0,0 +1,8 @@
+package org.tizen.dynamicanalyzer.widgets.scale;
+
+import org.eclipse.swt.graphics.GC;
+import org.eclipse.swt.widgets.Canvas;
+
+public abstract class DAScaleDefaultRenderer {
+       public abstract void draw(GC gc, Canvas canvas, DAScaleAttribute attr);
+}
diff --git a/org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/scale/DAScaleSelectionListener.java b/org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/scale/DAScaleSelectionListener.java
new file mode 100644 (file)
index 0000000..83f0843
--- /dev/null
@@ -0,0 +1,5 @@
+package org.tizen.dynamicanalyzer.widgets.scale;
+
+public abstract class DAScaleSelectionListener {
+       public abstract void widgetSelected();
+}
index 52895c4..aae15d5 100644 (file)
@@ -39,6 +39,8 @@ import org.tizen.dynamicanalyzer.widgets.graph.bar.SingleBar;
 import org.tizen.dynamicanalyzer.widgets.graph.circular.CircularGraph;
 import org.tizen.dynamicanalyzer.widgets.helper.ColorResources;
 import org.tizen.dynamicanalyzer.widgets.helper.ImageResources;
+import org.tizen.dynamicanalyzer.widgets.scale.DAScale;
+import org.tizen.dynamicanalyzer.widgets.scale.DAScaleSelectionListener;
 import org.tizen.dynamicanalyzer.widgets.timer.TimerClock;
 
 public class TestClass {
@@ -67,9 +69,9 @@ public class TestClass {
                        }
                });
 
-               DACustomButton imgButton = new DACustomButton(shell, ImageResources.ABOUT,
-                               ImageResources.ABOUT_PUSH, ImageResources.ABOUT_HOVER,
-                               ImageResources.ABOUT_DISABLE);
+               DACustomButton imgButton = new DACustomButton(shell,
+                               ImageResources.ABOUT, ImageResources.ABOUT_PUSH,
+                               ImageResources.ABOUT_HOVER, ImageResources.ABOUT_DISABLE);
                imgButton.setText("test2");
                data = new FormData();
                data.top = new FormAttachment(button, 10);
@@ -123,7 +125,7 @@ public class TestClass {
                circle.update(50);
                circle.setTextColor(ColorResources.BLACK);
                circle.setText("circlular graph test");
-               
+
                SingleBar bar = new SingleBar(shell, SWT.NONE);
                data = new FormData();
                data.top = new FormAttachment(circle, 10);
@@ -131,18 +133,19 @@ public class TestClass {
                data.width = 20;
                data.height = 80;
                bar.setLayoutData(data);
-               
+
                bar.setMaxSize(100);
                bar.setCurrentSize(45);
 
-               FourBarGraph fbar = new FourBarGraph(shell, SWT.NONE, FourBarGraph.TYPE_PERCENT);
+               FourBarGraph fbar = new FourBarGraph(shell, SWT.NONE,
+                               FourBarGraph.TYPE_PERCENT);
                data = new FormData();
                data.top = new FormAttachment(bar, 10);
                data.left = new FormAttachment(10, 0);
                data.width = 100;
                data.height = 100;
                fbar.setLayoutData(data);
-               
+
                fbar.setMaxSize(100);
                fbar.setText("CALL");
                List<Long> testdata = new ArrayList<Long>();
@@ -153,18 +156,36 @@ public class TestClass {
                fbar.setCurrentValue(testdata);
                fbar.setTextColor(ColorResources.RED);
                fbar.setBgColor(ColorResources.WHITE);
-               
-               
+
                TimerClock clock = new TimerClock(shell, SWT.NONE);
                data = new FormData();
                data.top = new FormAttachment(fbar, 10);
                data.left = new FormAttachment(10, 0);
-               data.width = 100;
-               data.height = 100;
+               data.width = 140;
+               data.height = 25;
                clock.setLayoutData(data);
-               
+
                clock.start();
+
+               DAScale scale = new DAScale(shell, SWT.NONE);
+               data = new FormData();
+               data.top = new FormAttachment(clock, 10);
+               data.left = new FormAttachment(10, 0);
+               data.width = 140;
+               data.height = 20;
+               scale.setLayoutData(data);
+               scale.setMaximum(10);
+               scale.setMinimum(5);
+               scale.addSelectionListener(new DAScaleSelectionListener() {
+                       
+                       @Override
+                       public void widgetSelected() {
+                               System.out.println("test selection listener");
+                               
+                       }
+               });
                
+
                DACustomComboSelectionListener comboSelectionListener = new DACustomComboSelectionListener() {
                        @Override
                        public void selectionEvent(DACustomCombo combo) {
index 893fb9d..d5dc98c 100755 (executable)
@@ -111,7 +111,7 @@ public class AnalyzerManager {
 
        public static DATheme getTheme() {
                if (null == theme) {
-                       // theme = DAThemeBlack.getInstance();
+//                      theme = DAThemeBlack.getInstance();
                        theme = DAThemeWhite.getInstance();
                }
                return theme;
index 0ac2e07..0e48f6d 100755 (executable)
@@ -29,7 +29,6 @@ public class ColorResources {
        public static final Color RED = getColor("red"); //$NON-NLS-1$\r
        public static final Color PURPLE = getColor("purple"); //$NON-NLS-1$\r
 \r
-\r
        public static final Color GREEN = getColor("green"); //$NON-NLS-1$\r
        public static final Color BBOWN = getColor("brown"); //$NON-NLS-1$\r
        public static final Color NAVY = getColor("navy"); //$NON-NLS-1$\r
@@ -38,7 +37,7 @@ public class ColorResources {
        public static final Color TEAL = getColor("teal"); //$NON-NLS-1$\r
        public static final Color INDIGO = getColor("indigo"); //$NON-NLS-1$\r
        public static final Color DARKGOLDENROD = getColor("darkgoldenrod"); //$NON-NLS-1$\r
-       \r
+\r
        public static final Color GOLDENROD = getColor("goldenrod"); //$NON-NLS-1$\r
        public static final Color TURQUOISE = getColor("turquoise"); //$NON-NLS-1$\r
        public static final Color VIOLET = getColor("violet"); //$NON-NLS-1$\r
@@ -50,22 +49,21 @@ public class ColorResources {
        public static final Color SANDYBROWN = getColor("sandybrown"); //$NON-NLS-1$\r
        public static final Color MEDIUMPURPLE = getColor("mediumpurple"); //$NON-NLS-1$\r
 \r
-       \r
        // shell window background color\r
        public static Color WINDOW_BG_COLOR = getColor("window_bg_color"); //$NON-NLS-1$\r
-       \r
+\r
        public static Color DIALOG_BG_UPPER = getColor("dialg_bg_upper");//$NON-NLS-1$\r
        public static Color DIALOG_BG_LOWER = getColor("dialg_bg_lower");//$NON-NLS-1$\r
        public static Color DIALOG_SUNKEN_1 = getColor("dialg_sunken_1");//$NON-NLS-1$\r
        public static Color DIALOG_SUNKEN_2 = getColor("dialg_sunken_2");//$NON-NLS-1$\r
-       \r
+\r
        public static Color EDIT_CHART_DIALOG_UPPER = getColor("edit_chart_dialog_upper");//$NON-NLS-1$\r
        public static Color EDIT_CHART_DIALOG_LOWER = getColor("edit_chart_dialog_lower");//$NON-NLS-1$\r
 \r
        public static Color VIEW_BORDER = getColor("view_border"); //$NON-NLS-1$\r
        public static Color VIEW_BG_COLOR = getColor("view_bg_color"); //$NON-NLS-1$\r
        public static Color VIEW_TITLE_FONT_COLOR = getColor("view_title_font_color");//$NON-NLS-1$\r
-       \r
+\r
        /** title bar colors **/\r
        public static Color TITLEBAR_TEXT_COLOR = getColor("titlebar_text_color"); //$NON-NLS-1$\r
        public static Color TITLEBAR_BG_COLOR = getColor("titlebar_bg"); //$NON-NLS-1$\r
@@ -117,7 +115,7 @@ public class ColorResources {
        public static Color BUTTON_OUTLINE_PUSH_IN_COLOR = getColor("button_outline_push_in_color"); //$NON-NLS-1$\r
        public static Color BUTTON_OUTLINE_HOVER_IN_COLOR = getColor("button_outline_hover_in_color"); //$NON-NLS-1$\r
        public static Color BUTTON_OUTLINE_DISABLE_IN_COLOR = getColor("button_outline_disable_in_color"); //$NON-NLS-1$\r
-       \r
+\r
        public static Color BUTTON_OUTLINE_NORMAL_COLOR = getColor("button_outline_normal_color"); //$NON-NLS-1$\r
        public static Color BUTTON_OUTLINE_PUSH_COLOR = getColor("button_outline_push_color"); //$NON-NLS-1$\r
        public static Color BUTTON_OUTLINE_HOVER_COLOR = getColor("button_outline_hover_color"); //$NON-NLS-1$\r
@@ -317,36 +315,43 @@ public class ColorResources {
        public static Color ADD_CHART_ENABLE_COLOR_END = getColor("add_chart_enable_color_end"); //$NON-NLS-1$\r
        public static Color ADD_CHART_DISABLE_COLOR_START = getColor("add_chart_disable_color_start"); //$NON-NLS-1$\r
        public static Color ADD_CHART_DISABLE_COLOR_END = getColor("add_chart_disable_color_end"); //$NON-NLS-1$\r
-       \r
+\r
        /** timeline chart **/\r
        public static Color SERIESE_COLOR_CPU_SYSTEM = getColor("seriesColorCPUSystem"); //$NON-NLS-1$\r
        public static Color SERIESE_COLOR_CPU_APP = getColor("seriesColorCPUApp"); //$NON-NLS-1$\r
-       \r
+\r
        public static Color SERIESE_COLOR_CPUCORE_CORE0 = getColor("seriesColorCPUCoreCore0"); //$NON-NLS-1$\r
        public static Color SERIESE_COLOR_CPUCORE_CORE1 = getColor("seriesColorCPUCoreCore1"); //$NON-NLS-1$\r
        public static Color SERIESE_COLOR_CPUCORE_CORE2 = getColor("seriesColorCPUCoreCore2"); //$NON-NLS-1$\r
        public static Color SERIESE_COLOR_CPUCORE_CORE3 = getColor("seriesColorCPUCoreCore3"); //$NON-NLS-1$\r
-       \r
+\r
        public static Color SERIESE_COLOR_CPU_FREQ = getColor("seriesColorCPUFreq"); //$NON-NLS-1$\r
-       \r
+\r
        public static Color SERIESE_COLOR_HEAP_SYSTEM = getColor("seriesColorHeapSystem"); //$NON-NLS-1$\r
        public static Color SERIESE_COLOR_HEAP_USER = getColor("seriesColorHeapApp"); //$NON-NLS-1$\r
 \r
        public static Color SERIESE_COLOR_PROCESS_VSS = getColor("seriesColorProcessVSS"); //$NON-NLS-1$\r
        public static Color SERIESE_COLOR_PROCESS_RSS = getColor("seriesColorProcessRSS"); //$NON-NLS-1$\r
        public static Color SERIESE_COLOR_PROCESS_PSS = getColor("seriesColorProcessPSS"); //$NON-NLS-1$\r
-       \r
+\r
        public static Color SERIESE_COLOR_MEMORY_SYS_MAX = getColor("seriesColorMemorySysMax"); //$NON-NLS-1$\r
        public static Color SERIESE_COLOR_MEMORY_SYS_USED = getColor("seriesColorMemorySysUsed"); //$NON-NLS-1$\r
        public static Color SERIESE_COLOR_MEMORY_APP_USED = getColor("seriesColorMemoryAppUsed"); //$NON-NLS-1$\r
-       \r
+\r
        public static Color SERIESE_COLOR_FILE_READ = getColor("seriesColorFileRead"); //$NON-NLS-1$\r
        public static Color SERIESE_COLOR_FILE_WRITE = getColor("seriesColorFileWrite"); //$NON-NLS-1$\r
        public static Color SERIESE_COLOR_FILE_FD = getColor("seriesColorFileFD"); //$NON-NLS-1$\r
-       \r
+\r
        public static Color SELECTION_RANGE = getColor("selectionRange"); //$NON-NLS-1$\r
        public static Color SELECTION_LINE = getColor("selectionLine"); //$NON-NLS-1$\r
 \r
+       // scale widget\r
+       public static Color SCALE_OUTLINE_COLOR = getColor("scale_outline_color"); //$NON-NLS-1$\r
+       public static Color SCALE_BG_COLOR_START = getColor("scale_bg_color_start"); //$NON-NLS-1$\r
+       public static Color SCALE_BG_COLOR_END = getColor("scale_bg_color_end"); //$NON-NLS-1$\r
+       public static Color SCALE_AREA_COLOR = getColor("scale_area_color"); //$NON-NLS-1$\r
+       public static Color SCALE_AREA_OUTLINE_COLOR = getColor("scale_area_outline_color"); //$NON-NLS-1$\r
+\r
        public static void initColors() {\r
                // shell window background color\r
                WINDOW_BG_COLOR = getColor("window_bg_color"); //$NON-NLS-1$\r
@@ -517,6 +522,9 @@ public class ColorResources {
                ADD_CHART_DISABLE_COLOR_START = getColor("add_chart_disable_color_start"); //$NON-NLS-1$\r
                ADD_CHART_DISABLE_COLOR_END = getColor("add_chart_disable_color_end"); //$NON-NLS-1$\r
 \r
+               // scale widget\r
+               SCALE_OUTLINE_COLOR = getColor("scale_outline_color"); //$NON-NLS-1$\r
+\r
        }\r
 \r
        private static Color getColor(String colorName, RGB rgb) {\r
index 89b775a..e4191d5 100644 (file)
@@ -124,7 +124,7 @@ public class ImageResources {
        public static final Image DIALOG_CLOSE_HOVER = getPngImage("dialog_control_close_hover"); //$NON-NLS-1$\r
        public static final Image DIALOG_CLOSE_NORMAL = getPngImage("dialog_control_close_normal"); //$NON-NLS-1$\r
        public static final Image DIALOG_CLOSE_PUSH = getPngImage("dialog_control_close_push"); //$NON-NLS-1$\r
-       \r
+\r
        // Dialog icon\r
        public static final Image DIALOG_WARNING_ICON = getPngImage("dialog_warning"); //$NON-NLS-1$\r
 \r
@@ -141,7 +141,7 @@ public class ImageResources {
 \r
        public static final Image COMBO_DROPDOWN_UP = getPngImage("dropdown_up"); //$NON-NLS-1$\r
        public static final Image COMBO_DROPDOWN_DOWN = getPngImage("dropdown_down"); //$NON-NLS-1$\r
-       \r
+\r
        // On, Off button\r
        public static final Image ON_HOVER = getPngImage("onoff_on_hover"); //$NON-NLS-1$\r
        public static final Image ON_NORMAL = getPngImage("onoff_on_unselected"); //$NON-NLS-1$\r
@@ -246,8 +246,7 @@ public class ImageResources {
        public static final Image SCORE_8 = getPngImage("score_8"); //$NON-NLS-1$\r
        public static final Image SCORE_9 = getPngImage("score_9"); //$NON-NLS-1$\r
 \r
-       \r
-       //Edit Chart\r
+       // Edit Chart\r
        public static final Image ADD_CHART_OFF = getPngImage("dialog_edit_chart_minus"); //$NON-NLS-1$\r
        public static final Image ADD_CHART_ON = getPngImage("dialog_edit_chart_plus"); //$NON-NLS-1$\r
        public static final Image ADD_CHART_CPU = getPngImage("edit_chart_icon_cpu"); //$NON-NLS-1$\r
@@ -267,7 +266,11 @@ public class ImageResources {
        public static final Image ADD_CHART_SNAPSHOT = getPngImage("edit_chart_icon_snapshot"); //$NON-NLS-1$\r
        public static final Image ADD_CHART_SOUND = getPngImage("edit_chart_icon_sound"); //$NON-NLS-1$\r
        public static final Image ADD_CHART_VIBRATION = getPngImage("edit_chart_icon_vibration"); //$NON-NLS-1$\r
-       \r
+\r
+       /*** scale ***/\r
+       public static final Image SCALE_CONTROL_MINUS = getPngImage("scale_control_minus"); //$NON-NLS-1$\r
+       public static final Image SCALE_CONTROL_PLUS = getPngImage("scale_control_plus"); //$NON-NLS-1$\r
+       public static final Image SCALE_CONTROL_THUMB = getPngImage("scale_control_thumb"); //$NON-NLS-1$\r
 \r
        private static Image getImage(String pluginId, String folderName,\r
                        String imageName, String extension) {\r
@@ -295,8 +298,8 @@ public class ImageResources {
 \r
        private static Image getImageFromWorkbench(String imageName) {\r
                return getImage(WORKBENCH_ID,\r
-                               AnalyzerConstants.ICON_WORKBENCH_FOLDER_NAME  + File.separator, imageName,\r
-                               AnalyzerConstants.EXTENSION_PNG_IMAGE);\r
+                               AnalyzerConstants.ICON_WORKBENCH_FOLDER_NAME + File.separator,\r
+                               imageName, AnalyzerConstants.EXTENSION_PNG_IMAGE);\r
        }\r
 \r
        @SuppressWarnings("unused")\r
index 11a6063..8967d55 100644 (file)
@@ -60,7 +60,7 @@ public class TimelineConstants {
        /* Range Selector */
        public static final int TIMELINE_ITEM_INFO_WIDTH = 100;
        public static final int RANGE_SELECTOR_SCALE_HEIGHT = 20;
-       public static final int RANGE_SELECTOR_SCALE_WIDTH = 90;
+       public static final int RANGE_SELECTOR_SCALE_WIDTH = 100;
        public static final int RANGE_SELECTOR_MS_OFFSET = 1000; // 1 Sec
 
        /* item list editor */
index 832c60e..003fe44 100644 (file)
@@ -335,6 +335,13 @@ public class DAThemeBlack extends DATheme {
                
                setColor("selectionRange", new RGB(193, 253, 255)); //$NON-NLS-1$
                setColor("selectionLine", new RGB(193, 253, 255)); //$NON-NLS-1$
+               
+               /***  scale ***/
+               setColor("scale_outline_color", new RGB(31, 31, 31)); //$NON-NLS-1$
+               setColor("scale_bg_color_start", new RGB(177, 177, 177)); //$NON-NLS-1$
+               setColor("scale_bg_color_end", new RGB(99, 99, 99)); //$NON-NLS-1$
+               setColor("scale_area_color", new RGB(46, 46, 47)); //$NON-NLS-1$
+               setColor("scale_area_outline_color", new RGB(208, 208, 208)); //$NON-NLS-1$
        }
 
        public Color getColor(String colorName, RGB rgb) {
index 96b7069..bd9ca00 100644 (file)
@@ -341,6 +341,13 @@ public class DAThemeWhite extends DATheme {
                
                setColor("selectionRange", new RGB(23, 98, 132)); //$NON-NLS-1$
                setColor("selectionLine", new RGB(23, 98, 132)); //$NON-NLS-1$
+               
+               /***  scale ***/
+               setColor("scale_outline_color", new RGB(150, 150, 150)); //$NON-NLS-1$
+               setColor("scale_bg_color_start", new RGB(253, 253, 253)); //$NON-NLS-1$
+               setColor("scale_bg_color_end", new RGB(186, 186, 186)); //$NON-NLS-1$
+               setColor("scale_area_color", new RGB(103, 103, 103)); //$NON-NLS-1$
+               setColor("scale_area_outline_color", new RGB(250, 250, 250)); //$NON-NLS-1$
        }
 
        public Color getColor(String colorName, RGB rgb) {
index 8d72f85..16b0902 100644 (file)
@@ -20,7 +20,6 @@
 package org.tizen.dynamicanalyzer.timeline;
 
 import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionAdapter;
 import org.eclipse.swt.events.SelectionEvent;
 import org.eclipse.swt.events.SelectionListener;
 import org.eclipse.swt.graphics.GC;
@@ -35,11 +34,13 @@ import org.eclipse.swt.widgets.Display;
 import org.eclipse.swt.widgets.Event;
 import org.eclipse.swt.widgets.Label;
 import org.eclipse.swt.widgets.Listener;
-import org.eclipse.swt.widgets.Scale;
 import org.eclipse.swt.widgets.Slider;
 import org.tizen.dynamicanalyzer.ColorResources;
+import org.tizen.dynamicanalyzer.ImageResources;
 import org.tizen.dynamicanalyzer.constants.TimelineConstants;
-
+import org.tizen.dynamicanalyzer.ui.renderers.DAScaleRenderer;
+import org.tizen.dynamicanalyzer.widgets.scale.DAScale;
+import org.tizen.dynamicanalyzer.widgets.scale.DAScaleSelectionListener;
 
 public class TimelineRangeSelector {
 
@@ -47,11 +48,11 @@ public class TimelineRangeSelector {
        private Composite rangeScaleComp;
        private Composite rangeSelectorComp;
        private Canvas rangeCanvas;
-       private Scale rangeScale;
+       private DAScale rangeScale;
        private Slider rangeSlider;
 
-       private final int MARGIN_HORIZONTAL = 3;
-       private final int MARGIN_VERTICAL = 3;
+       private final int MARGIN_HORIZONTAL = 0;
+       private final int MARGIN_VERTICAL = 0;
 
        private Double chartRunningSec;
        private Double rangeScaleSec;
@@ -140,9 +141,9 @@ public class TimelineRangeSelector {
 
                resetRangeRectSec();
 
-//             if (isEndSticky) {
-//                     setRangeSelection(rangeRectInfo.startSec, rangeScaleSec.intValue());
-//             }
+               // if (isEndSticky) {
+               // setRangeSelection(rangeRectInfo.startSec, rangeScaleSec.intValue());
+               // }
        }
 
        public void clear() {
@@ -161,34 +162,61 @@ public class TimelineRangeSelector {
 
        private Composite createRangeScaleComp(Composite selectorComp, int style) {
                Composite rangeScaleComp = new Composite(selectorComp, SWT.None);
-               rangeScale = new Scale(rangeScaleComp, SWT.NONE);
+               rangeScaleComp.setLayout(new FillLayout());
+               rangeScale = new DAScale(rangeScaleComp, SWT.NONE);
 
-               rangeScale.setBounds(MARGIN_HORIZONTAL, MARGIN_VERTICAL / 2, TimelineConstants.RANGE_SELECTOR_SCALE_WIDTH,
-                               TimelineConstants.RANGE_SELECTOR_SCALE_HEIGHT);
+               // rangeScale.setBounds(MARGIN_HORIZONTAL, MARGIN_VERTICAL / 2,
+               // TimelineConstants.RANGE_SELECTOR_SCALE_WIDTH,
+               // TimelineConstants.RANGE_SELECTOR_SCALE_HEIGHT);
                rangeScale.setMaximum(TempConstants.MAX_SCALE);
                rangeScale.setMinimum(0);
                rangeScale.setIncrement(1);
                rangeScale.setPageIncrement(1);
+               rangeScale.setRenderer(new DAScaleRenderer());
+               rangeScale.setLeftImage(ImageResources.SCALE_CONTROL_MINUS);
+               rangeScale.setRightImage(ImageResources.SCALE_CONTROL_PLUS);
+               rangeScale.setThumbImage(ImageResources.SCALE_CONTROL_THUMB);
+//             rangeScale.setSelection(TempConstants.DEFAULT_SCALE);
+
+               // FIXME scale
+               rangeScale.addSelectionListener(new DAScaleSelectionListener() {
 
-               //FIXME scale
-               rangeScale.addSelectionListener(new SelectionAdapter() {
                        @Override
-                       public void widgetSelected(SelectionEvent e) {
-                               if(!TempConstants.allowRedrawTimeTickCanvas) {
+                       public void widgetSelected() {
+                               if (!TempConstants.allowRedrawTimeTickCanvas) {
                                        return;
                                }
                                int oriScaleValue = TempConstants.currentScaleValue;
                                TempConstants.currentScaleValue = rangeScale.getSelection();
-                               if(oriScaleValue == TempConstants.currentScaleValue) {
+                               if (oriScaleValue == TempConstants.currentScaleValue) {
                                        return;
                                }
                                TempConstants.oriScaleValue = oriScaleValue;
                                TempConstants.scaleChanged = true;
-                               isTotalRange = (TempConstants.currentScaleValue == TempConstants.MAX_SCALE ? true : false);
+                               isTotalRange = (TempConstants.currentScaleValue == TempConstants.MAX_SCALE ? true
+                                               : false);
                                TempConstants.allowRedrawTimeTickCanvas = false;
                                TimelineMaster.getInstance().redrawTimeTickCanvas();
                        }
                });
+               // @Override
+               // public void widgetSelected(SelectionEvent e) {
+               // if(!TempConstants.allowRedrawTimeTickCanvas) {
+               // return;
+               // }
+               // int oriScaleValue = TempConstants.currentScaleValue;
+               // TempConstants.currentScaleValue = rangeScale.getSelection();
+               // if(oriScaleValue == TempConstants.currentScaleValue) {
+               // return;
+               // }
+               // TempConstants.oriScaleValue = oriScaleValue;
+               // TempConstants.scaleChanged = true;
+               // isTotalRange = (TempConstants.currentScaleValue ==
+               // TempConstants.MAX_SCALE ? true : false);
+               // TempConstants.allowRedrawTimeTickCanvas = false;
+               // TimelineMaster.getInstance().redrawTimeTickCanvas();
+               // }
+               // });
                initRangeMagScale();
 
                return rangeScaleComp;
@@ -196,7 +224,7 @@ public class TimelineRangeSelector {
 
        private void initRangeMagScale() {
                rangeScaleSec = TimelineConstants.RANGE_SCALE_LEVEL_3;
-               rangeScale.setSelection(TempConstants.DEFAULT_SCALE);
+               // rangeScale.setSelection(TempConstants.DEFAULT_SCALE);
        }
 
        private Composite createRangeComp(Composite parent) {
@@ -204,9 +232,10 @@ public class TimelineRangeSelector {
                rangeSelectorComp.setLayout(new FillLayout());
 
                rangeSlider = new Slider(rangeSelectorComp, SWT.HORIZONTAL);
-               rangeSlider.setBackground(Display.getDefault().getSystemColor(SWT.COLOR_WIDGET_BACKGROUND));
+               rangeSlider.setBackground(Display.getDefault().getSystemColor(
+                               SWT.COLOR_WIDGET_BACKGROUND));
                TimelineMaster.getInstance().setRangeSlider(rangeSlider);
-               //FIXME slider
+               // FIXME slider
                rangeSlider.addSelectionListener(new SelectionListener() {
                        @Override
                        public void widgetSelected(SelectionEvent e) {
@@ -214,10 +243,12 @@ public class TimelineRangeSelector {
                                        return;
                                }
 
-                               if (rangeSlider.getMaximum() == rangeSlider.getSelection() + rangeSlider.getThumb()) {
+                               if (rangeSlider.getMaximum() == rangeSlider.getSelection()
+                                               + rangeSlider.getThumb()) {
                                        TimelineMaster.getInstance().setRangeSliderStuckState(true);
                                } else {
-                                       TimelineMaster.getInstance().setRangeSliderStuckState(false);
+                                       TimelineMaster.getInstance()
+                                                       .setRangeSliderStuckState(false);
                                }
                                TempConstants.startPx = rangeSlider.getSelection();
                                TimelineMaster.getInstance().redrawTimeTickCanvas();
@@ -239,14 +270,16 @@ public class TimelineRangeSelector {
                if (chartRunningSec < rangeSec) {
                        rangeSec = chartRunningSec.intValue();
                }
-               
-               TimelineChartManager.getInstance().setRangeSelection(startSec, rangeSec);
+
+               TimelineChartManager.getInstance()
+                               .setRangeSelection(startSec, rangeSec);
        }
 
        private void setRangeRect(Double startTime) {
                /* Calculate start X */
                Rectangle rangeCanvasRect = rangeCanvas.getBounds();
-               int rangeCanvasRectWidth = rangeCanvasRect.width - MARGIN_HORIZONTAL - MARGIN_HORIZONTAL;
+               int rangeCanvasRectWidth = rangeCanvasRect.width - MARGIN_HORIZONTAL
+                               - MARGIN_HORIZONTAL;
 
                Double pixPerSec = rangeCanvasRectWidth / chartRunningSec;
                Double startX = pixPerSec * startTime + MARGIN_HORIZONTAL;
@@ -255,7 +288,8 @@ public class TimelineRangeSelector {
                Double rangeScaleRatio = rangeScaleSec / chartRunningSec;
                Double rangeRectWidth = rangeCanvasRectWidth * rangeScaleRatio;
 
-               Rectangle rect = new Rectangle(startX.intValue(), 0, rangeRectWidth.intValue(), rangeCanvasRect.height);
+               Rectangle rect = new Rectangle(startX.intValue(), 0,
+                               rangeRectWidth.intValue(), rangeCanvasRect.height);
 
                rangeRectInfo.rangeRect = null;
                rangeRectInfo.rangeRect = rect;
@@ -309,7 +343,8 @@ public class TimelineRangeSelector {
         */
        private void drawGradientGreyBG(Composite composite) {
                Rectangle rect = composite.getClientArea();
-               Image newImage = new Image(composite.getDisplay(), 1, Math.max(1, rect.height));
+               Image newImage = new Image(composite.getDisplay(), 1, Math.max(1,
+                               rect.height));
                GC gc = new GC(newImage);
                gc.setForeground(ColorResources.GRAY_210);
                gc.setBackground(ColorResources.GRAY_130);
index 556155f..f11c06a 100644 (file)
@@ -31,13 +31,13 @@ import org.eclipse.swt.widgets.Display;
 import org.tizen.dynamicanalyzer.ColorResources;
 import org.tizen.dynamicanalyzer.widgets.button.DACustomButton;
 import org.tizen.dynamicanalyzer.widgets.button.DACustomButtonDefaultRenderer;
-import org.tizen.dynamicanalyzer.widgets.button.DACustomWidgetAttribute;
+import org.tizen.dynamicanalyzer.widgets.button.DACustomButtonAttribute;
 
 public class ComboButtonRenderer extends DACustomButtonDefaultRenderer {
 
        @Override
        public void draw(GC gc, Canvas canvas, int state,
-                       DACustomWidgetAttribute attr) {
+                       DACustomButtonAttribute attr) {
                Rectangle rect = canvas.getClientArea();
 
                if (attr.getDrawType() == DACustomButton.TYPE_IMAGE) {
@@ -63,7 +63,7 @@ public class ComboButtonRenderer extends DACustomButtonDefaultRenderer {
        }
 
        public void drawButton(GC gc, Rectangle rect, int state,
-                       DACustomWidgetAttribute attr) {
+                       DACustomButtonAttribute attr) {
                if (attr.getDrawType() == DACustomButton.TYPE_COLOR) {
                        gc.setBackground(attr.getColor(state));
                        gc.fillRectangle(rect);
@@ -88,7 +88,7 @@ public class ComboButtonRenderer extends DACustomButtonDefaultRenderer {
        }
 
        protected void drawButtonImage(GC gc, Rectangle rect,
-                       DACustomWidgetAttribute attr) {
+                       DACustomButtonAttribute attr) {
                if (attr != null && attr.getButtonImage() != null) {
                        Image img = attr.getButtonImage();
                        Rectangle imgRect = img.getBounds();
@@ -107,7 +107,7 @@ public class ComboButtonRenderer extends DACustomButtonDefaultRenderer {
        }
 
        protected void drawButtonText(GC gc, Rectangle rect, int state,
-                       DACustomWidgetAttribute attr) {
+                       DACustomButtonAttribute attr) {
                String s = null;
                Font f = null;
                Point p = null;
index f840185..8ca7c85 100644 (file)
@@ -24,13 +24,13 @@ import org.eclipse.swt.graphics.GC;
 import org.eclipse.swt.graphics.Rectangle;
 import org.tizen.dynamicanalyzer.widgets.button.DACustomButton;
 import org.tizen.dynamicanalyzer.widgets.button.DACustomButtonRenderer;
-import org.tizen.dynamicanalyzer.widgets.button.DACustomWidgetAttribute;
+import org.tizen.dynamicanalyzer.widgets.button.DACustomButtonAttribute;
 import org.tizen.dynamicanalyzer.widgets.helper.ColorResources;
 
 public class DAButtonRenderer extends DACustomButtonRenderer {
        @Override
        public void drawButton(GC gc, Rectangle rect, int state,
-                       DACustomWidgetAttribute attr) {
+                       DACustomButtonAttribute attr) {
                if (attr.getDrawType() == DACustomButton.TYPE_COLOR) {
                        gc.setBackground(attr.getColor(state));
                        gc.fillRectangle(rect);
diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/renderers/DAScaleRenderer.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/renderers/DAScaleRenderer.java
new file mode 100644 (file)
index 0000000..32f954b
--- /dev/null
@@ -0,0 +1,43 @@
+package org.tizen.dynamicanalyzer.ui.renderers;
+
+import org.eclipse.swt.graphics.GC;
+import org.eclipse.swt.graphics.Rectangle;
+import org.eclipse.swt.widgets.Canvas;
+import org.tizen.dynamicanalyzer.ColorResources;
+import org.tizen.dynamicanalyzer.widgets.scale.DAScaleAttribute;
+import org.tizen.dynamicanalyzer.widgets.scale.DAScaleDefaultRenderer;
+
+public class DAScaleRenderer extends DAScaleDefaultRenderer {
+
+       @Override
+       public void draw(GC gc, Canvas canvas, DAScaleAttribute attr) {
+               Rectangle rect = canvas.getClientArea();
+               gc.setForeground(ColorResources.SCALE_BG_COLOR_START);
+               gc.setBackground(ColorResources.SCALE_BG_COLOR_END);
+               gc.fillGradientRectangle(rect.x, rect.y, rect.width, rect.height, true);
+               gc.setForeground(ColorResources.SCALE_OUTLINE_COLOR);
+               gc.drawRectangle(rect.x, rect.y, rect.width - 1, rect.height - 1);
+
+               if (null != attr.getLeftImage() && null != attr.getRightImage()) {
+                       gc.drawImage(attr.getLeftImage(), attr.getLeftRect().x,
+                                       attr.getLeftRect().y);
+                       gc.drawImage(attr.getRightImage(), attr.getRightRect().x,
+                                       attr.getRightRect().y);
+               }
+
+               gc.setBackground(ColorResources.SCALE_AREA_COLOR);
+               gc.fillRectangle(attr.getAreaRect());
+               gc.setForeground(ColorResources.SCALE_AREA_OUTLINE_COLOR);
+               gc.drawRectangle(attr.getAreaRect());
+
+               if (null != attr.getThumbImage()) {
+                       gc.drawImage(attr.getThumbImage(), attr.getThumbRect().x,
+                                       attr.getThumbRect().y);
+               } else {
+                       gc.setBackground(ColorResources.RED);
+                       gc.fillOval(attr.getThumbRect().x, attr.getThumbRect().y,
+                                       attr.getThumbRect().width, attr.getThumbRect().height);
+               }
+       }
+
+}
index 0bcad11..8e87006 100644 (file)
@@ -31,13 +31,13 @@ import org.eclipse.swt.widgets.Display;
 import org.tizen.dynamicanalyzer.ColorResources;
 import org.tizen.dynamicanalyzer.widgets.button.DACustomButton;
 import org.tizen.dynamicanalyzer.widgets.button.DACustomButtonDefaultRenderer;
-import org.tizen.dynamicanalyzer.widgets.button.DACustomWidgetAttribute;
+import org.tizen.dynamicanalyzer.widgets.button.DACustomButtonAttribute;
 
 
 public class TabButtonRenderer extends DACustomButtonDefaultRenderer {
 
     @Override
-    public void draw(GC gc, Canvas canvas, int state, DACustomWidgetAttribute attr) {
+    public void draw(GC gc, Canvas canvas, int state, DACustomButtonAttribute attr) {
         Rectangle rect = canvas.getClientArea();
 
         if (attr.getDrawType() == DACustomButton.TYPE_IMAGE) {
@@ -62,7 +62,7 @@ public class TabButtonRenderer extends DACustomButtonDefaultRenderer {
             return 8;
     }
 
-    public void drawButton(GC gc, Rectangle rect, int state, DACustomWidgetAttribute attr) {
+    public void drawButton(GC gc, Rectangle rect, int state, DACustomButtonAttribute attr) {
         if (attr.getDrawType() == DACustomButton.TYPE_COLOR) {
             gc.setBackground(attr.getColor(state));
             gc.fillRectangle(rect);
@@ -84,7 +84,7 @@ public class TabButtonRenderer extends DACustomButtonDefaultRenderer {
         gc.setForeground(c);
     }
 
-    protected void drawButtonImage(GC gc, Rectangle rect, DACustomWidgetAttribute attr) {
+    protected void drawButtonImage(GC gc, Rectangle rect, DACustomButtonAttribute attr) {
         if (attr != null && attr.getButtonImage() != null) {
             Image img = attr.getButtonImage();
             Rectangle imgRect = img.getBounds();
@@ -102,7 +102,7 @@ public class TabButtonRenderer extends DACustomButtonDefaultRenderer {
         }
     }
 
-    protected void drawButtonText(GC gc, Rectangle rect, int state, DACustomWidgetAttribute attr) {
+    protected void drawButtonText(GC gc, Rectangle rect, int state, DACustomButtonAttribute attr) {
         String s = null;
         Font f = null;
         Point p = null;
index 41708cf..b872e7a 100644 (file)
@@ -43,15 +43,16 @@ import org.eclipse.swt.layout.FormLayout;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Event;
 import org.eclipse.swt.widgets.Listener;
-import org.eclipse.swt.widgets.Scale;
 import org.eclipse.swt.widgets.ScrollBar;
 import org.tizen.dynamicanalyzer.AnalyzerManager;
 import org.tizen.dynamicanalyzer.ColorResources;
 import org.tizen.dynamicanalyzer.FontResources;
+import org.tizen.dynamicanalyzer.ImageResources;
 import org.tizen.dynamicanalyzer.model.DASelectionData;
 import org.tizen.dynamicanalyzer.model.DATableDataFormat;
 import org.tizen.dynamicanalyzer.model.FileChartItemData;
 import org.tizen.dynamicanalyzer.model.LogCenter;
+import org.tizen.dynamicanalyzer.ui.renderers.DAScaleRenderer;
 import org.tizen.dynamicanalyzer.ui.views.CoolbarArea;
 import org.tizen.dynamicanalyzer.ui.views.filePage.FileApiListView;
 import org.tizen.dynamicanalyzer.ui.views.filePage.FileChartView;
@@ -59,13 +60,15 @@ import org.tizen.dynamicanalyzer.ui.views.filePage.FileDetailInfoView;
 import org.tizen.dynamicanalyzer.ui.widgets.DATable.DATableEmptyCellRenderer;
 import org.tizen.dynamicanalyzer.ui.widgets.DATable.DATableEmptyColumnHeaderRenderer;
 import org.tizen.dynamicanalyzer.utils.AnalyzerUtil;
+import org.tizen.dynamicanalyzer.widgets.scale.DAScale;
+import org.tizen.dynamicanalyzer.widgets.scale.DAScaleSelectionListener;
 
 public class DAFileChart extends Composite {
 
        protected Grid tree;
        protected Composite hScrollComp;
        protected ScrollBar hScroll;
-       protected Scale scale;
+       protected DAScale scale;
        protected int fileColumnWidth = 0;
        private int itemCount = 0;
        protected int id = -1;
@@ -89,10 +92,14 @@ public class DAFileChart extends Composite {
                hScrollComp.setBackground(ColorResources.TABLE_CONTENTS_NORMAL);
                hScrollComp.setLayout(new FillLayout());
 
-               scale = new Scale(this, SWT.NONE);
+               scale = new DAScale(this, SWT.NONE);
                scale.addSelectionListener(scaleSelectionListener);
                scale.setMinimum(0);
                scale.setMaximum(2);
+               scale.setLeftImage(ImageResources.SCALE_CONTROL_MINUS);
+               scale.setRightImage(ImageResources.SCALE_CONTROL_PLUS);
+               scale.setThumbImage(ImageResources.SCALE_CONTROL_THUMB);
+               scale.setRenderer(new DAScaleRenderer());
 
                hScroll = hScrollComp.getHorizontalBar();
                hScroll.setMaximum(hScrollMax);
@@ -481,28 +488,47 @@ public class DAFileChart extends Composite {
                }
        };
 
-       private SelectionListener scaleSelectionListener = new SelectionListener() {
-
-               @Override
-               public void widgetSelected(SelectionEvent e) {
-                       int sel = scale.getSelection();
-                       if (sel == 0) {
-                               FileChartManager.setScale(1);
-                       } else if (sel == 1) {
-                               FileChartManager.setScale(5);
-                       } else if (sel == 2) {
-                               FileChartManager.setScale(10);
-                       }
+//     private SelectionListener scaleSelectionListener = new SelectionListener() {
+               private DAScaleSelectionListener scaleSelectionListener = new DAScaleSelectionListener() {
+                       
+                       @Override
+                       public void widgetSelected() {
+                               int sel = scale.getSelection();
+                               if (sel == 0) {
+                                       FileChartManager.setScale(1);
+                               } else if (sel == 1) {
+                                       FileChartManager.setScale(5);
+                               } else if (sel == 2) {
+                                       FileChartManager.setScale(10);
+                               }
 
-                       updateTree();
-                       if (tree.getItems().length == 0) {
-                               tree.redraw();
+                               updateTree();
+                               if (tree.getItems().length == 0) {
+                                       tree.redraw();
+                               }
                        }
-               }
-
-               @Override
-               public void widgetDefaultSelected(SelectionEvent e) {
-                       System.out.print("15\n");
-               }
-       };
+               };
+
+//             @Override
+//             public void widgetSelected(SelectionEvent e) {
+//                     int sel = scale.getSelection();
+//                     if (sel == 0) {
+//                             FileChartManager.setScale(1);
+//                     } else if (sel == 1) {
+//                             FileChartManager.setScale(5);
+//                     } else if (sel == 2) {
+//                             FileChartManager.setScale(10);
+//                     }
+//
+//                     updateTree();
+//                     if (tree.getItems().length == 0) {
+//                             tree.redraw();
+//                     }
+//             }
+//
+//             @Override
+//             public void widgetDefaultSelected(SelectionEvent e) {
+//                     System.out.print("15\n");
+//             }
+//     };
 }
diff --git a/org.tizen.dynamicanalyzer/theme/black/img/scale_control_minus.png b/org.tizen.dynamicanalyzer/theme/black/img/scale_control_minus.png
new file mode 100644 (file)
index 0000000..2502e59
Binary files /dev/null and b/org.tizen.dynamicanalyzer/theme/black/img/scale_control_minus.png differ
diff --git a/org.tizen.dynamicanalyzer/theme/black/img/scale_control_plus.png b/org.tizen.dynamicanalyzer/theme/black/img/scale_control_plus.png
new file mode 100644 (file)
index 0000000..c0b859c
Binary files /dev/null and b/org.tizen.dynamicanalyzer/theme/black/img/scale_control_plus.png differ
diff --git a/org.tizen.dynamicanalyzer/theme/black/img/scale_control_thumb.png b/org.tizen.dynamicanalyzer/theme/black/img/scale_control_thumb.png
new file mode 100644 (file)
index 0000000..a411402
Binary files /dev/null and b/org.tizen.dynamicanalyzer/theme/black/img/scale_control_thumb.png differ
diff --git a/org.tizen.dynamicanalyzer/theme/white/img/scale_control_minus.png b/org.tizen.dynamicanalyzer/theme/white/img/scale_control_minus.png
new file mode 100644 (file)
index 0000000..2502e59
Binary files /dev/null and b/org.tizen.dynamicanalyzer/theme/white/img/scale_control_minus.png differ
diff --git a/org.tizen.dynamicanalyzer/theme/white/img/scale_control_plus.png b/org.tizen.dynamicanalyzer/theme/white/img/scale_control_plus.png
new file mode 100644 (file)
index 0000000..c0b859c
Binary files /dev/null and b/org.tizen.dynamicanalyzer/theme/white/img/scale_control_plus.png differ
diff --git a/org.tizen.dynamicanalyzer/theme/white/img/scale_control_thumb.png b/org.tizen.dynamicanalyzer/theme/white/img/scale_control_thumb.png
new file mode 100644 (file)
index 0000000..a411402
Binary files /dev/null and b/org.tizen.dynamicanalyzer/theme/white/img/scale_control_thumb.png differ