[Title]page chart header draw start up
authoryeongtaik.byeon <yeongtaik.byeon@samsung.com>
Thu, 19 Jul 2012 12:00:24 +0000 (21:00 +0900)
committeryeongtaik.byeon <yeongtaik.byeon@samsung.com>
Thu, 19 Jul 2012 12:00:24 +0000 (21:00 +0900)
[Type]feature
[Module]thread page
[Priority]high
[CQ#]
[Redmine#]5322
[Problem]
[Cause]
[Solution]
[TestCase]

org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ColorResources.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/nl/DAPageChartLabels.java [new file with mode: 0644]
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/nl/DAPageChartLabels.properties [new file with mode: 0644]
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/ui/views/CoolbarArea.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/widgets/DAPageChart/DAPageChart.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/widgets/DAPageChart/DAPageChartNameHeaderRenderer.java [new file with mode: 0644]
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/widgets/DAPageChart/DAPageChartTimelineHeaderRenderer.java [new file with mode: 0644]

index 053a66a..9337fc1 100644 (file)
@@ -173,6 +173,12 @@ public class ColorResources {
     /** snapshot viewer colors **/\r
     public static Color SNAPSHOT_VIEWER_BORDER = getColor("snapshot_viewer_border"); //$NON-NLS-1$\r
 \r
+    /** Page chart colors**/\r
+    public static Color PAGE_CHART_HAEDER_BG = getColor("page_chart_header_bg"); //$NON-NLS-1$\r
+    public static Color PAGE_CHART_SELECTION_BG = getColor("page_chart_selection_bg"); //$NON-NLS-1$\r
+    public static Color PAGE_CHART_PARENT_BG = getColor("page_chart_parent_bg"); //$NON-NLS-1$\r
+    public static Color PAGE_CHART_CHILD_BG = getColor("page_chart_child_bg"); //$NON-NLS-1$\r
+    \r
     /** File chart colors **/\r
     public static Color FILE_CLOSED_START = getColor("file_closed_start"); //$NON-NLS-1$\r
     public static Color FILE_CLOSED_END = getColor("file_closed_end"); //$NON-NLS-1$\r
@@ -335,6 +341,12 @@ public class ColorResources {
         /** snapshot viewer colors **/\r
         SNAPSHOT_VIEWER_BORDER = getColor("snapshot_viewer_border"); //$NON-NLS-1$\r
 \r
+        /** Page chart colors **/\r
+        PAGE_CHART_HAEDER_BG = getColor("page_chart_header_bg"); //$NON-NLS-1$\r
+        PAGE_CHART_SELECTION_BG = getColor("page_chart_selection_bg"); //$NON-NLS-1$\r
+        PAGE_CHART_PARENT_BG = getColor("page_chart_parent_bg"); //$NON-NLS-1$\r
+        PAGE_CHART_CHILD_BG = getColor("page_chart_child_bg"); //$NON-NLS-1$\r
+\r
         /** File chart colors **/\r
         FILE_CLOSED_START = getColor("file_closed_start"); //$NON-NLS-1$\r
         FILE_CLOSED_END = getColor("file_closed_end"); //$NON-NLS-1$\r
diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/nl/DAPageChartLabels.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/nl/DAPageChartLabels.java
new file mode 100644 (file)
index 0000000..0887df5
--- /dev/null
@@ -0,0 +1,19 @@
+package org.tizen.dynamicanalyzer.nl;
+
+import org.eclipse.osgi.util.NLS;
+
+public class DAPageChartLabels extends NLS {
+       private static final String BUNDLE_NAME = "org.tizen.dynamicanalyzer.nl.DAPageChartLabels"; //$NON-NLS-1$
+       public static String KEY_COLUMN_HEADER_IMAGE_LEFT_MARGIN;
+       public static String KEY_COLUMN_HEADER_IMAGE_TOP_MARGIN;
+       public static String KEY_COLUMN_HEADER_TEXT_LEFT_MARGIN;
+       public static String KEY_COLUMN_HEADER_TEXT_TOP_MARGIN;
+       public static String KEY_CHART_SCALE;
+       public static String KEY_CHART_START_TIME;
+       static {
+               // initialize resource bundle
+               NLS.initializeMessages(BUNDLE_NAME, DAPageChartLabels.class);
+       }
+       private DAPageChartLabels() {
+       }
+}
diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/nl/DAPageChartLabels.properties b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/nl/DAPageChartLabels.properties
new file mode 100644 (file)
index 0000000..a085bb8
--- /dev/null
@@ -0,0 +1,6 @@
+KEY_COLUMN_HEADER_IMAGE_LEFT_MARGIN=ImageLeftMargin
+KEY_COLUMN_HEADER_IMAGE_TOP_MARGIN=ImageTopMargin
+KEY_COLUMN_HEADER_TEXT_LEFT_MARGIN=TextLeftMargin
+KEY_COLUMN_HEADER_TEXT_TOP_MARGIN=TextTopMargin
+KEY_CHART_SCALE=ChartScale
+KEY_CHART_START_TIME=StartTime
\ No newline at end of file
index 768a0e8..14e3ad7 100644 (file)
@@ -129,6 +129,12 @@ public class DAThemeBlack extends DATheme {
         /** snapshot viewer colors **/
         setColor("snapshot_viewer_border", new RGB(49, 104, 127)); //$NON-NLS-1$
 
+        /** Page chart colors **/
+        setColor("page_chart_header_bg", new RGB(45, 45, 46)); //$NON-NLS-1$
+        setColor("page_chart_selection_bg", new RGB(0, 151, 201)); //$NON-NLS-1$
+        setColor("page_chart_parent_bg", new RGB(84, 85, 86)); //$NON-NLS-1$
+        setColor("page_chart_child_bg", new RGB(59, 59, 60)); //$NON-NLS-1$
+        
         /** File chart colors **/
         setColor("file_closed_start", new RGB(168, 198, 71)); //$NON-NLS-1$
         setColor("file_closed_end", new RGB(130, 152, 54)); //$NON-NLS-1$
index a67e09c..befd6bb 100644 (file)
@@ -124,7 +124,13 @@ public class DAThemeWhite extends DATheme {
         setColor("tab_bg_color_start", new RGB(205, 205, 205));
         setColor("tab_bg_color_end", new RGB(216, 216, 216));
         setColor("tab_bg_outline_color", new RGB(160, 160, 160));
-
+        /** Page chart colors **/
+        setColor("page_chart_header_bg", new RGB(45, 45, 46)); //$NON-NLS-1$
+        setColor("page_chart_selection_bg", new RGB(0, 151, 201)); //$NON-NLS-1$
+        setColor("page_chart_parent_bg", new RGB(84, 85, 86)); //$NON-NLS-1$
+        setColor("page_chart_child_bg", new RGB(59, 59, 60)); //$NON-NLS-1$
         /** File chart colors **/
         setColor("file_closed_start", new RGB(168, 198, 71)); //$NON-NLS-1$
         setColor("file_closed_end", new RGB(130, 152, 54)); //$NON-NLS-1$
index 27191f5..b6b940d 100755 (executable)
@@ -127,7 +127,7 @@ public class CoolbarArea {
 
     private static int COMBO_FIRST_INDEX = 0;
 
-    public static boolean bThreadPageWork = false; // FIXME
+    public static boolean bThreadPageWork = true; // FIXME
 
     private ShellListener shellListener = new ShellListener() {
 
index 885ab08..ae136e8 100644 (file)
@@ -5,13 +5,17 @@ import java.util.List;
 
 import org.eclipse.nebula.widgets.grid.Grid;
 import org.eclipse.nebula.widgets.grid.GridColumn;
+import org.eclipse.nebula.widgets.grid.internal.DefaultColumnHeaderRenderer;
 import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.Image;
 import org.eclipse.swt.layout.FormAttachment;
 import org.eclipse.swt.layout.FormData;
 import org.eclipse.swt.layout.FormLayout;
 import org.eclipse.swt.widgets.Composite;
 import org.tizen.dynamicanalyzer.ColorResources;
 import org.tizen.dynamicanalyzer.FontResources;
+import org.tizen.dynamicanalyzer.nl.DAPageChartLabels;
+import org.tizen.dynamicanalyzer.ui.views.filePage.fileChart.DAFileChartHeaderRenderer;
 import org.tizen.dynamicanalyzer.ui.views.filePage.fileChart.FileChartManager;
 import org.tizen.dynamicanalyzer.ui.views.pageInfo.PageChartGraphItem;
 import org.tizen.dynamicanalyzer.ui.views.pageInfo.PageChartItem;
@@ -25,11 +29,19 @@ public class DAPageChart extends Composite {
        public final static int DEFAULT_CHART_HEIGHT = 40;
        public final static int DEFAULT_CHART_FIRST_COLUMN_WIDTH = 125;
        public final static int DEFAULT_CHART_SECOND_COLUMN_WIDTH = 700;
+       private final static int SCALE_100 = 100;
+       private final static int SCALE_200 = 200;
+       private final static int SCALE_400 = 400;
        private int chartHeight = DEFAULT_CHART_HEIGHT;
        private int chartFirstColumnWidth = DEFAULT_CHART_FIRST_COLUMN_WIDTH;
        private int chartSecondColumnWidth = DEFAULT_CHART_SECOND_COLUMN_WIDTH;
+       private int startTime = 0;
+       private int scale = SCALE_100;
+       
+       private GridColumn columnName;
+       private GridColumn columnTime;
 
-       public DAPageChart(Composite parent, int style, String chartName) {
+       public DAPageChart(Composite parent, int style, String ColumnHeaderText) {
                super(parent, SWT.NONE);
                this.setLayout(new FormLayout());
                this.setBackground(ColorResources.TABLE_BG_COLOR);
@@ -53,8 +65,11 @@ public class DAPageChart extends Composite {
                data.top = new FormAttachment(0, 0);
                data.bottom = new FormAttachment(100, -20);
                chart.setLayoutData(data);
+               
+               SetChartScale(scale);
+               SetChartStartTime(startTime);
 
-               SetColumns(chartName);
+               SetColumns(ColumnHeaderText);
        }
 
        public void AddItem(PageChartItem item) {
@@ -103,20 +118,58 @@ public class DAPageChart extends Composite {
        }
 
        private void SetColumns(String name) {
-               GridColumn columnName = new GridColumn(chart, SWT.NONE);
+               columnName = new GridColumn(chart, SWT.NONE);
                columnName.setText(name);
                columnName.setResizeable(false);
                columnName.setWidth(chartFirstColumnWidth);
+               columnName.setHeaderRenderer(new DAPageChartNameHeaderRenderer());
                // columnName.pack();
 
-               GridColumn columnTime = new GridColumn(chart, SWT.NONE);
+               columnTime = new GridColumn(chart, SWT.NONE);
                columnTime.setResizeable(false);
                columnTime.setWidth(chartSecondColumnWidth);
+               columnTime.setHeaderRenderer(new DAPageChartTimelineHeaderRenderer());
                // columnTime.pack();
        }
 
        public Grid GetInnerChart() {
                return chart;
        }
-
+       
+       public void SetColumnHeaderImage(Image image){
+               columnName.setImage(image);
+       }
+       
+       public void SetColumnHeaderText(String columnText){
+               columnName.setText(columnText);
+       }
+       
+       public void SetColumnHeaderImageMargin(int left, int top){
+               columnName.setData(DAPageChartLabels.KEY_COLUMN_HEADER_IMAGE_LEFT_MARGIN, left);
+               columnName.setData(DAPageChartLabels.KEY_COLUMN_HEADER_IMAGE_TOP_MARGIN, top);
+               
+       }
+       
+       public void SetColumnHeaderTextMargin(int left, int top){
+               columnName.setData(DAPageChartLabels.KEY_COLUMN_HEADER_TEXT_LEFT_MARGIN, left);
+               columnName.setData(DAPageChartLabels.KEY_COLUMN_HEADER_TEXT_TOP_MARGIN, top);
+       }
+       
+       public int GetChartScale(){
+               return scale;
+       }
+       
+       public int GetChartStartTime(){
+               return startTime;
+       }
+       
+       private void SetChartScale(int scale){
+               this.scale = scale;
+               chart.setData(DAPageChartLabels.KEY_CHART_SCALE, this.scale);
+       }
+       
+       private void SetChartStartTime(int time){
+               this.startTime = time;
+               chart.setData(DAPageChartLabels.KEY_CHART_START_TIME, this.startTime);
+       }
 }
diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/widgets/DAPageChart/DAPageChartNameHeaderRenderer.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/widgets/DAPageChart/DAPageChartNameHeaderRenderer.java
new file mode 100644 (file)
index 0000000..23069aa
--- /dev/null
@@ -0,0 +1,69 @@
+package org.tizen.dynamicanalyzer.ui.widgets.DAPageChart;
+
+import org.eclipse.nebula.widgets.grid.GridColumn;
+import org.eclipse.nebula.widgets.grid.internal.DefaultColumnHeaderRenderer;
+import org.eclipse.nebula.widgets.grid.internal.TextUtils;
+import org.eclipse.swt.graphics.GC;
+import org.eclipse.swt.graphics.Rectangle;
+import org.tizen.dynamicanalyzer.ColorResources;
+import org.tizen.dynamicanalyzer.nl.DAPageChartLabels;
+
+public class DAPageChartNameHeaderRenderer extends DefaultColumnHeaderRenderer {
+       public final static int DEFAULT_IMAGE_TOP_MARGIN = 2;
+       public final static int DEFAULT_IMAGE_LEFT_MARGIN = 2;
+       public final static int DEFAULT_TEXT_TOP_MARGIN = 5;
+       public final static int DEFAULT_TEXT_LEFT_MARGIN = 5;
+       private int imageTopMargin = DEFAULT_IMAGE_TOP_MARGIN;
+       private int imageLeftMargin = DEFAULT_IMAGE_LEFT_MARGIN;
+       private int textTopMargin = DEFAULT_TEXT_TOP_MARGIN;
+       private int textLeftMargin = DEFAULT_TEXT_LEFT_MARGIN;
+
+       public void paint(GC gc, Object value) {
+               GridColumn column = (GridColumn) value;
+               gc.setBackground(ColorResources.PAGE_CHART_HAEDER_BG);
+               gc.setForeground(ColorResources.TABLE_LINE_COLOR);
+               Rectangle r = getBounds();
+               // draw bg colcumn box
+               gc.fillRectangle(r);
+               gc.drawRectangle(r);
+               // draw image
+               int x = 0;
+               int y = 0;
+               if (column.getImage() != null) {
+                       if (column
+                                       .getData(DAPageChartLabels.KEY_COLUMN_HEADER_IMAGE_LEFT_MARGIN) != null) {
+                               imageLeftMargin = (Integer) column
+                                               .getData(DAPageChartLabels.KEY_COLUMN_HEADER_IMAGE_LEFT_MARGIN);
+                       }
+                       if (column
+                                       .getData(DAPageChartLabels.KEY_COLUMN_HEADER_IMAGE_TOP_MARGIN) != null) {
+                               imageTopMargin = (Integer) column
+                                               .getData(DAPageChartLabels.KEY_COLUMN_HEADER_IMAGE_TOP_MARGIN);
+                       }
+                       x = r.x + imageLeftMargin;
+                       y = r.y + imageTopMargin;
+                       gc.drawImage(column.getImage(), x, y);
+                       x += column.getImage().getBounds().width;
+                       y += column.getImage().getBounds().height;
+               }
+               // draw text
+               if (column.getText() != null) {
+                       if (column
+                                       .getData(DAPageChartLabels.KEY_COLUMN_HEADER_TEXT_LEFT_MARGIN) != null) {
+                               textLeftMargin = (Integer) column
+                                               .getData(DAPageChartLabels.KEY_COLUMN_HEADER_TEXT_LEFT_MARGIN);
+                       }
+                       if (column
+                                       .getData(DAPageChartLabels.KEY_COLUMN_HEADER_TEXT_TOP_MARGIN) != null) {
+                               textTopMargin = (Integer) column
+                                               .getData(DAPageChartLabels.KEY_COLUMN_HEADER_TEXT_TOP_MARGIN);
+                       }
+                       x += r.x + textLeftMargin;
+                       y += r.y + textTopMargin;
+                       gc.setForeground(ColorResources.TITLEBAR_TEXT_COLOR);
+                       gc.drawString(
+                                       TextUtils.getShortString(gc, column.getText(), r.width - x
+                                                       - 1), x, y);
+               }
+       }
+}
diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/widgets/DAPageChart/DAPageChartTimelineHeaderRenderer.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/widgets/DAPageChart/DAPageChartTimelineHeaderRenderer.java
new file mode 100644 (file)
index 0000000..a8d1427
--- /dev/null
@@ -0,0 +1,31 @@
+package org.tizen.dynamicanalyzer.ui.widgets.DAPageChart;
+
+import org.eclipse.nebula.widgets.grid.GridColumn;
+import org.eclipse.nebula.widgets.grid.internal.DefaultColumnHeaderRenderer;
+import org.eclipse.swt.graphics.GC;
+import org.eclipse.swt.graphics.Rectangle;
+import org.tizen.dynamicanalyzer.ColorResources;
+import org.tizen.dynamicanalyzer.nl.DAPageChartLabels;
+
+public class DAPageChartTimelineHeaderRenderer extends
+               DefaultColumnHeaderRenderer {
+       int startTime;
+       int scale;
+
+       public void paint(GC gc, Object value) {
+               GridColumn column = (GridColumn) value;
+               gc.setBackground(ColorResources.PAGE_CHART_HAEDER_BG);
+               gc.setForeground(ColorResources.TABLE_LINE_COLOR);
+               Rectangle r = getBounds();
+
+               // draw bg colcumn box
+               gc.fillRectangle(r);
+               gc.drawRectangle(r);
+
+               // draw gradation
+               startTime = (Integer) (column.getParent()
+                               .getData(DAPageChartLabels.KEY_CHART_START_TIME));
+               scale = (Integer) (column.getParent()
+                               .getData(DAPageChartLabels.KEY_CHART_SCALE));
+       }
+}