From 464b57fbcdf5d6b9fbb803fe8bdf47d8cb89be64 Mon Sep 17 00:00:00 2001 From: Lee Date: Thu, 16 Aug 2012 18:00:01 +0900 Subject: [PATCH] [Title] DAScale added [Type] new feature [Module] Dynamic Analyzer [Priority] normal [CQ#] [Redmine#] [Problem] [Cause] [Solution] [TestCase] --- .../META-INF/MANIFEST.MF | 1 + .../widgets/button/DACustomButton.java | 4 +- ...Attribute.java => DACustomButtonAttribute.java} | 4 +- .../button/DACustomButtonDefaultRenderer.java | 2 +- .../widgets/button/DACustomButtonRenderer.java | 8 +- .../toggle/DACustomToggleButtonRenderer.java | 4 +- .../widgets/scale/DACustomScaleRenderer.java | 39 +++ .../dynamicanalyzer/widgets/scale/DAScale.java | 382 +++++++++++++++++++++ .../widgets/scale/DAScaleAttribute.java | 72 ++++ .../widgets/scale/DAScaleDefaultRenderer.java | 8 + .../widgets/scale/DAScaleSelectionListener.java | 5 + .../dynamicanalyzer/widgets/test/TestClass.java | 45 ++- .../org/tizen/dynamicanalyzer/AnalyzerManager.java | 2 +- .../org/tizen/dynamicanalyzer/ColorResources.java | 36 +- .../org/tizen/dynamicanalyzer/ImageResources.java | 17 +- .../constants/TimelineConstants.java | 2 +- .../tizen/dynamicanalyzer/theme/DAThemeBlack.java | 7 + .../tizen/dynamicanalyzer/theme/DAThemeWhite.java | 7 + .../timeline/TimelineRangeSelector.java | 91 +++-- .../ui/renderers/ComboButtonRenderer.java | 10 +- .../ui/renderers/DAButtonRenderer.java | 4 +- .../ui/renderers/DAScaleRenderer.java | 43 +++ .../ui/renderers/TabButtonRenderer.java | 10 +- .../ui/views/filePage/fileChart/DAFileChart.java | 76 ++-- .../theme/black/img/scale_control_minus.png | Bin 0 -> 2906 bytes .../theme/black/img/scale_control_plus.png | Bin 0 -> 2975 bytes .../theme/black/img/scale_control_thumb.png | Bin 0 -> 3265 bytes .../theme/white/img/scale_control_minus.png | Bin 0 -> 2906 bytes .../theme/white/img/scale_control_plus.png | Bin 0 -> 2975 bytes .../theme/white/img/scale_control_thumb.png | Bin 0 -> 3265 bytes 30 files changed, 768 insertions(+), 111 deletions(-) rename org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/button/{DACustomWidgetAttribute.java => DACustomButtonAttribute.java} (97%) create mode 100644 org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/scale/DACustomScaleRenderer.java create mode 100644 org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/scale/DAScale.java create mode 100644 org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/scale/DAScaleAttribute.java create mode 100644 org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/scale/DAScaleDefaultRenderer.java create mode 100644 org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/scale/DAScaleSelectionListener.java create mode 100644 org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/renderers/DAScaleRenderer.java create mode 100644 org.tizen.dynamicanalyzer/theme/black/img/scale_control_minus.png create mode 100644 org.tizen.dynamicanalyzer/theme/black/img/scale_control_plus.png create mode 100644 org.tizen.dynamicanalyzer/theme/black/img/scale_control_thumb.png create mode 100644 org.tizen.dynamicanalyzer/theme/white/img/scale_control_minus.png create mode 100644 org.tizen.dynamicanalyzer/theme/white/img/scale_control_plus.png create mode 100644 org.tizen.dynamicanalyzer/theme/white/img/scale_control_thumb.png diff --git a/org.tizen.dynamicanalyzer.widgets/META-INF/MANIFEST.MF b/org.tizen.dynamicanalyzer.widgets/META-INF/MANIFEST.MF index af8c58c..1ca3955 100644 --- a/org.tizen.dynamicanalyzer.widgets/META-INF/MANIFEST.MF +++ b/org.tizen.dynamicanalyzer.widgets/META-INF/MANIFEST.MF @@ -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 diff --git a/org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/button/DACustomButton.java b/org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/button/DACustomButton.java index 3fad133..f5bd28f 100644 --- a/org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/button/DACustomButton.java +++ b/org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/button/DACustomButton.java @@ -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(); } diff --git a/org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/button/DACustomWidgetAttribute.java b/org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/button/DACustomButtonAttribute.java similarity index 97% rename from org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/button/DACustomWidgetAttribute.java rename to org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/button/DACustomButtonAttribute.java index cc24d45..0d1b8c1 100644 --- a/org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/button/DACustomWidgetAttribute.java +++ b/org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/button/DACustomButtonAttribute.java @@ -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 outlineInColors = new ArrayList(); private boolean enabled; - public DACustomWidgetAttribute() { + public DACustomButtonAttribute() { enabled = true; // init array diff --git a/org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/button/DACustomButtonDefaultRenderer.java b/org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/button/DACustomButtonDefaultRenderer.java index c87cd88..2fdda42 100644 --- a/org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/button/DACustomButtonDefaultRenderer.java +++ b/org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/button/DACustomButtonDefaultRenderer.java @@ -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); } diff --git a/org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/button/DACustomButtonRenderer.java b/org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/button/DACustomButtonRenderer.java index c86ab46..f84006c 100644 --- a/org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/button/DACustomButtonRenderer.java +++ b/org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/button/DACustomButtonRenderer.java @@ -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; diff --git a/org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/button/toggle/DACustomToggleButtonRenderer.java b/org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/button/toggle/DACustomToggleButtonRenderer.java index 0d8c30b..f582129 100644 --- a/org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/button/toggle/DACustomToggleButtonRenderer.java +++ b/org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/button/toggle/DACustomToggleButtonRenderer.java @@ -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 index 0000000..dd26b33 --- /dev/null +++ b/org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/scale/DACustomScaleRenderer.java @@ -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 index 0000000..32be598 --- /dev/null +++ b/org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/scale/DAScale.java @@ -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 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(); + + 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 index 0000000..8e97c18 --- /dev/null +++ b/org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/scale/DAScaleAttribute.java @@ -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 index 0000000..27555e5 --- /dev/null +++ b/org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/scale/DAScaleDefaultRenderer.java @@ -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 index 0000000..83f0843 --- /dev/null +++ b/org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/scale/DAScaleSelectionListener.java @@ -0,0 +1,5 @@ +package org.tizen.dynamicanalyzer.widgets.scale; + +public abstract class DAScaleSelectionListener { + public abstract void widgetSelected(); +} diff --git a/org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/test/TestClass.java b/org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/test/TestClass.java index 52895c4..aae15d5 100644 --- a/org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/test/TestClass.java +++ b/org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/test/TestClass.java @@ -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 testdata = new ArrayList(); @@ -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) { diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/AnalyzerManager.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/AnalyzerManager.java index 893fb9d..d5dc98c 100755 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/AnalyzerManager.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/AnalyzerManager.java @@ -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; diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ColorResources.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ColorResources.java index 0ac2e07..0e48f6d 100755 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ColorResources.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ColorResources.java @@ -29,7 +29,6 @@ public class ColorResources { public static final Color RED = getColor("red"); //$NON-NLS-1$ public static final Color PURPLE = getColor("purple"); //$NON-NLS-1$ - public static final Color GREEN = getColor("green"); //$NON-NLS-1$ public static final Color BBOWN = getColor("brown"); //$NON-NLS-1$ public static final Color NAVY = getColor("navy"); //$NON-NLS-1$ @@ -38,7 +37,7 @@ public class ColorResources { public static final Color TEAL = getColor("teal"); //$NON-NLS-1$ public static final Color INDIGO = getColor("indigo"); //$NON-NLS-1$ public static final Color DARKGOLDENROD = getColor("darkgoldenrod"); //$NON-NLS-1$ - + public static final Color GOLDENROD = getColor("goldenrod"); //$NON-NLS-1$ public static final Color TURQUOISE = getColor("turquoise"); //$NON-NLS-1$ public static final Color VIOLET = getColor("violet"); //$NON-NLS-1$ @@ -50,22 +49,21 @@ public class ColorResources { public static final Color SANDYBROWN = getColor("sandybrown"); //$NON-NLS-1$ public static final Color MEDIUMPURPLE = getColor("mediumpurple"); //$NON-NLS-1$ - // shell window background color public static Color WINDOW_BG_COLOR = getColor("window_bg_color"); //$NON-NLS-1$ - + public static Color DIALOG_BG_UPPER = getColor("dialg_bg_upper");//$NON-NLS-1$ public static Color DIALOG_BG_LOWER = getColor("dialg_bg_lower");//$NON-NLS-1$ public static Color DIALOG_SUNKEN_1 = getColor("dialg_sunken_1");//$NON-NLS-1$ public static Color DIALOG_SUNKEN_2 = getColor("dialg_sunken_2");//$NON-NLS-1$ - + public static Color EDIT_CHART_DIALOG_UPPER = getColor("edit_chart_dialog_upper");//$NON-NLS-1$ public static Color EDIT_CHART_DIALOG_LOWER = getColor("edit_chart_dialog_lower");//$NON-NLS-1$ public static Color VIEW_BORDER = getColor("view_border"); //$NON-NLS-1$ public static Color VIEW_BG_COLOR = getColor("view_bg_color"); //$NON-NLS-1$ public static Color VIEW_TITLE_FONT_COLOR = getColor("view_title_font_color");//$NON-NLS-1$ - + /** title bar colors **/ public static Color TITLEBAR_TEXT_COLOR = getColor("titlebar_text_color"); //$NON-NLS-1$ public static Color TITLEBAR_BG_COLOR = getColor("titlebar_bg"); //$NON-NLS-1$ @@ -117,7 +115,7 @@ public class ColorResources { public static Color BUTTON_OUTLINE_PUSH_IN_COLOR = getColor("button_outline_push_in_color"); //$NON-NLS-1$ public static Color BUTTON_OUTLINE_HOVER_IN_COLOR = getColor("button_outline_hover_in_color"); //$NON-NLS-1$ public static Color BUTTON_OUTLINE_DISABLE_IN_COLOR = getColor("button_outline_disable_in_color"); //$NON-NLS-1$ - + public static Color BUTTON_OUTLINE_NORMAL_COLOR = getColor("button_outline_normal_color"); //$NON-NLS-1$ public static Color BUTTON_OUTLINE_PUSH_COLOR = getColor("button_outline_push_color"); //$NON-NLS-1$ public static Color BUTTON_OUTLINE_HOVER_COLOR = getColor("button_outline_hover_color"); //$NON-NLS-1$ @@ -317,36 +315,43 @@ public class ColorResources { public static Color ADD_CHART_ENABLE_COLOR_END = getColor("add_chart_enable_color_end"); //$NON-NLS-1$ public static Color ADD_CHART_DISABLE_COLOR_START = getColor("add_chart_disable_color_start"); //$NON-NLS-1$ public static Color ADD_CHART_DISABLE_COLOR_END = getColor("add_chart_disable_color_end"); //$NON-NLS-1$ - + /** timeline chart **/ public static Color SERIESE_COLOR_CPU_SYSTEM = getColor("seriesColorCPUSystem"); //$NON-NLS-1$ public static Color SERIESE_COLOR_CPU_APP = getColor("seriesColorCPUApp"); //$NON-NLS-1$ - + public static Color SERIESE_COLOR_CPUCORE_CORE0 = getColor("seriesColorCPUCoreCore0"); //$NON-NLS-1$ public static Color SERIESE_COLOR_CPUCORE_CORE1 = getColor("seriesColorCPUCoreCore1"); //$NON-NLS-1$ public static Color SERIESE_COLOR_CPUCORE_CORE2 = getColor("seriesColorCPUCoreCore2"); //$NON-NLS-1$ public static Color SERIESE_COLOR_CPUCORE_CORE3 = getColor("seriesColorCPUCoreCore3"); //$NON-NLS-1$ - + public static Color SERIESE_COLOR_CPU_FREQ = getColor("seriesColorCPUFreq"); //$NON-NLS-1$ - + public static Color SERIESE_COLOR_HEAP_SYSTEM = getColor("seriesColorHeapSystem"); //$NON-NLS-1$ public static Color SERIESE_COLOR_HEAP_USER = getColor("seriesColorHeapApp"); //$NON-NLS-1$ public static Color SERIESE_COLOR_PROCESS_VSS = getColor("seriesColorProcessVSS"); //$NON-NLS-1$ public static Color SERIESE_COLOR_PROCESS_RSS = getColor("seriesColorProcessRSS"); //$NON-NLS-1$ public static Color SERIESE_COLOR_PROCESS_PSS = getColor("seriesColorProcessPSS"); //$NON-NLS-1$ - + public static Color SERIESE_COLOR_MEMORY_SYS_MAX = getColor("seriesColorMemorySysMax"); //$NON-NLS-1$ public static Color SERIESE_COLOR_MEMORY_SYS_USED = getColor("seriesColorMemorySysUsed"); //$NON-NLS-1$ public static Color SERIESE_COLOR_MEMORY_APP_USED = getColor("seriesColorMemoryAppUsed"); //$NON-NLS-1$ - + public static Color SERIESE_COLOR_FILE_READ = getColor("seriesColorFileRead"); //$NON-NLS-1$ public static Color SERIESE_COLOR_FILE_WRITE = getColor("seriesColorFileWrite"); //$NON-NLS-1$ public static Color SERIESE_COLOR_FILE_FD = getColor("seriesColorFileFD"); //$NON-NLS-1$ - + public static Color SELECTION_RANGE = getColor("selectionRange"); //$NON-NLS-1$ public static Color SELECTION_LINE = getColor("selectionLine"); //$NON-NLS-1$ + // scale widget + public static Color SCALE_OUTLINE_COLOR = getColor("scale_outline_color"); //$NON-NLS-1$ + public static Color SCALE_BG_COLOR_START = getColor("scale_bg_color_start"); //$NON-NLS-1$ + public static Color SCALE_BG_COLOR_END = getColor("scale_bg_color_end"); //$NON-NLS-1$ + public static Color SCALE_AREA_COLOR = getColor("scale_area_color"); //$NON-NLS-1$ + public static Color SCALE_AREA_OUTLINE_COLOR = getColor("scale_area_outline_color"); //$NON-NLS-1$ + public static void initColors() { // shell window background color WINDOW_BG_COLOR = getColor("window_bg_color"); //$NON-NLS-1$ @@ -517,6 +522,9 @@ public class ColorResources { ADD_CHART_DISABLE_COLOR_START = getColor("add_chart_disable_color_start"); //$NON-NLS-1$ ADD_CHART_DISABLE_COLOR_END = getColor("add_chart_disable_color_end"); //$NON-NLS-1$ + // scale widget + SCALE_OUTLINE_COLOR = getColor("scale_outline_color"); //$NON-NLS-1$ + } private static Color getColor(String colorName, RGB rgb) { diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ImageResources.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ImageResources.java index 89b775a..e4191d5 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ImageResources.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ImageResources.java @@ -124,7 +124,7 @@ public class ImageResources { public static final Image DIALOG_CLOSE_HOVER = getPngImage("dialog_control_close_hover"); //$NON-NLS-1$ public static final Image DIALOG_CLOSE_NORMAL = getPngImage("dialog_control_close_normal"); //$NON-NLS-1$ public static final Image DIALOG_CLOSE_PUSH = getPngImage("dialog_control_close_push"); //$NON-NLS-1$ - + // Dialog icon public static final Image DIALOG_WARNING_ICON = getPngImage("dialog_warning"); //$NON-NLS-1$ @@ -141,7 +141,7 @@ public class ImageResources { public static final Image COMBO_DROPDOWN_UP = getPngImage("dropdown_up"); //$NON-NLS-1$ public static final Image COMBO_DROPDOWN_DOWN = getPngImage("dropdown_down"); //$NON-NLS-1$ - + // On, Off button public static final Image ON_HOVER = getPngImage("onoff_on_hover"); //$NON-NLS-1$ public static final Image ON_NORMAL = getPngImage("onoff_on_unselected"); //$NON-NLS-1$ @@ -246,8 +246,7 @@ public class ImageResources { public static final Image SCORE_8 = getPngImage("score_8"); //$NON-NLS-1$ public static final Image SCORE_9 = getPngImage("score_9"); //$NON-NLS-1$ - - //Edit Chart + // Edit Chart public static final Image ADD_CHART_OFF = getPngImage("dialog_edit_chart_minus"); //$NON-NLS-1$ public static final Image ADD_CHART_ON = getPngImage("dialog_edit_chart_plus"); //$NON-NLS-1$ public static final Image ADD_CHART_CPU = getPngImage("edit_chart_icon_cpu"); //$NON-NLS-1$ @@ -267,7 +266,11 @@ public class ImageResources { public static final Image ADD_CHART_SNAPSHOT = getPngImage("edit_chart_icon_snapshot"); //$NON-NLS-1$ public static final Image ADD_CHART_SOUND = getPngImage("edit_chart_icon_sound"); //$NON-NLS-1$ public static final Image ADD_CHART_VIBRATION = getPngImage("edit_chart_icon_vibration"); //$NON-NLS-1$ - + + /*** scale ***/ + public static final Image SCALE_CONTROL_MINUS = getPngImage("scale_control_minus"); //$NON-NLS-1$ + public static final Image SCALE_CONTROL_PLUS = getPngImage("scale_control_plus"); //$NON-NLS-1$ + public static final Image SCALE_CONTROL_THUMB = getPngImage("scale_control_thumb"); //$NON-NLS-1$ private static Image getImage(String pluginId, String folderName, String imageName, String extension) { @@ -295,8 +298,8 @@ public class ImageResources { private static Image getImageFromWorkbench(String imageName) { return getImage(WORKBENCH_ID, - AnalyzerConstants.ICON_WORKBENCH_FOLDER_NAME + File.separator, imageName, - AnalyzerConstants.EXTENSION_PNG_IMAGE); + AnalyzerConstants.ICON_WORKBENCH_FOLDER_NAME + File.separator, + imageName, AnalyzerConstants.EXTENSION_PNG_IMAGE); } @SuppressWarnings("unused") diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/constants/TimelineConstants.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/constants/TimelineConstants.java index 11a6063..8967d55 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/constants/TimelineConstants.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/constants/TimelineConstants.java @@ -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 */ diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/theme/DAThemeBlack.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/theme/DAThemeBlack.java index 832c60e..003fe44 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/theme/DAThemeBlack.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/theme/DAThemeBlack.java @@ -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) { diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/theme/DAThemeWhite.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/theme/DAThemeWhite.java index 96b7069..bd9ca00 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/theme/DAThemeWhite.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/theme/DAThemeWhite.java @@ -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) { diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/timeline/TimelineRangeSelector.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/timeline/TimelineRangeSelector.java index 8d72f85..16b0902 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/timeline/TimelineRangeSelector.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/timeline/TimelineRangeSelector.java @@ -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); diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/renderers/ComboButtonRenderer.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/renderers/ComboButtonRenderer.java index 556155f..f11c06a 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/renderers/ComboButtonRenderer.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/renderers/ComboButtonRenderer.java @@ -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; diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/renderers/DAButtonRenderer.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/renderers/DAButtonRenderer.java index f840185..8ca7c85 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/renderers/DAButtonRenderer.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/renderers/DAButtonRenderer.java @@ -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 index 0000000..32f954b --- /dev/null +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/renderers/DAScaleRenderer.java @@ -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); + } + } + +} diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/renderers/TabButtonRenderer.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/renderers/TabButtonRenderer.java index 0bcad11..8e87006 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/renderers/TabButtonRenderer.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/renderers/TabButtonRenderer.java @@ -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; diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/views/filePage/fileChart/DAFileChart.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/views/filePage/fileChart/DAFileChart.java index 41708cf..b872e7a 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/views/filePage/fileChart/DAFileChart.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/views/filePage/fileChart/DAFileChart.java @@ -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 index 0000000000000000000000000000000000000000..2502e598e379d23ecb0237bcff96a0760ab9eb1e GIT binary patch literal 2906 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 VMX;{x{Sg2F002ovPDHLkV1gHMggXEL literal 0 HcmV?d00001 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 index 0000000000000000000000000000000000000000..a411402c3c43cd059fbed24992ddff8a0a9f7605 GIT binary patch literal 3265 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 literal 0 HcmV?d00001 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 index 0000000000000000000000000000000000000000..2502e598e379d23ecb0237bcff96a0760ab9eb1e GIT binary patch literal 2906 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 VMX;{x{Sg2F002ovPDHLkV1gHMggXEL literal 0 HcmV?d00001 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 index 0000000000000000000000000000000000000000..a411402c3c43cd059fbed24992ddff8a0a9f7605 GIT binary patch literal 3265 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 literal 0 HcmV?d00001 -- 2.7.4