RENDERER: prepare a new style on Tizen tab renderer
authorGiWoong Kim <giwoong.kim@samsung.com>
Tue, 17 May 2016 06:03:40 +0000 (15:03 +0900)
committerGiWoong Kim <giwoong.kim@samsung.com>
Tue, 17 May 2016 07:39:27 +0000 (16:39 +0900)
- add setter functions to apply CSS styling
- unselected tab separator is considered

Change-Id: Ic5c3f835d2077f2fa8afbefbcccaf4845a436792
Signed-off-by: GiWoong Kim <giwoong.kim@samsung.com>
bundles/org.eclipse.e4.ui.workbench.renderers.swt/src/org/eclipse/e4/ui/workbench/renderers/swt/TizenTabRendering.java

index d4c68e1..d1bc86b 100644 (file)
@@ -89,8 +89,10 @@ ICTabRendering {
 
        Color[] selectedTabFillColors;
        int[] selectedTabFillPercents;
-       /// Tizen
+       /* Tizen */
        boolean selectedTabUnderline = true;
+       boolean unselectedTabSeparator = false;
+       /* ===== */
 
        Color[] unselectedTabsColors;
        int[] unselectedTabsPercents;
@@ -553,7 +555,11 @@ ICTabRendering {
                }
                /* Tizen */
                // gc.drawPolyline(tmpPoints);
-               gc.drawLine(tmpPoints[0], tmpPoints[1], tmpPoints[tmpPoints.length - 2], tmpPoints[1]);
+               if (selectedTabUnderline) {
+                       gc.drawLine(tmpPoints[0], tmpPoints[1], tmpPoints[tmpPoints.length - 2], tmpPoints[1]);
+               } else {
+                       gc.drawPolyline(tmpPoints);
+               }
                /* ===== */
 
                Rectangle rect = null;
@@ -581,6 +587,7 @@ ICTabRendering {
 
                /* Tizen */
                if (selectedTabUnderline) {
+                       // draw a underline
                        Color prevColor = gc.getForeground();
                        int prevLineWidth = gc.getLineWidth();
 
@@ -725,8 +732,10 @@ ICTabRendering {
                        gc.setForeground(tempBorder);
                        tempBorder.dispose();
                        if (active) {
-                               /// Tizen
+                               /* Tizen */
+                               // no need to draw hot tab outlines
                                // gc.drawPolyline(tmpPoints);
+                               /* ===== */
                        } else {
                                gc.drawLine(inactive[0], inactive[1], inactive[2], inactive[3]);
                                gc.drawLine(inactive[4], inactive[5], inactive[6], inactive[7]);
@@ -740,6 +749,22 @@ ICTabRendering {
                        // gc.setForeground(outerKeyline);
                        // gc.drawPolyline(shape);
                }
+
+               /* Tizen */
+               if (unselectedTabSeparator) {
+                       // draw a tab separator
+                       if (itemIndex != parent.getSelectionIndex() - 1) {
+                               Color prevColor = gc.getForeground();
+                               gc.setForeground(new Color(gc.getDevice(), new RGB(170, 170, 170)));
+
+                               Rectangle itemBounds = parent.getItem(itemIndex).getBounds();
+                               gc.drawLine(itemBounds.x + itemBounds.width - 1, itemBounds.y + 5, itemBounds.x + itemBounds.width - 1,
+                                               itemBounds.height - 5);
+
+                               gc.setForeground(prevColor);
+                       }
+               }
+               /* ===== */
        }
 
        static int[] drawCircle(int xC, int yC, int r, int circlePart) {
@@ -1114,6 +1139,18 @@ ICTabRendering {
                parent.redraw();
        }
 
+       /* Tizen */
+       public void setSelectedTabUnderline(boolean on) {
+               selectedTabUnderline = on;
+               parent.redraw();
+       }
+
+       public void setUnselectedTabSeparator(boolean on) {
+               unselectedTabSeparator = on;
+               parent.redraw();
+       }
+       /* ===== */
+
        @Override
        public void setUnselectedTabsColor(Color color) {
                setUnselectedTabsColor(new Color[] { color }, new int[] { 100 });