Title: [120245] trunk/Source/WebCore
Revision
120245
Author
[email protected]
Date
2012-06-13 13:56:42 -0700 (Wed, 13 Jun 2012)

Log Message

[BlackBerry] Update Select Popup's styling
https://bugs.webkit.org/show_bug.cgi?id=89005

Patch by Christopher Hutten-Czapski <[email protected]> on 2012-06-13
Reviewed by Rob Buis.

Add in some nicely-styled CSS and JS for the BlackBerry port's <select>

* Resources/blackberry/popupControlBlackBerry.css:
(body):
(.popup-area):
(.popup-area>:first-child):
(.popup-buttons):
(.popup-button-divider):
(.popup-button):
(.popup-button:active):
(.popup-button:first-child:active):
(.popup-button:last-child:active):
(.popup-button:only-child:active):
* Resources/blackberry/selectControlBlackBerry.css: Added.
(.select-area):
(.select-area:last-child):
(.option):
(.optgroup:last-child):
(.selected):
(.optgroup):
(.optgroup .option):
* Resources/blackberry/selectControlBlackBerry.js: Added.

Modified Paths

Added Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (120244 => 120245)


--- trunk/Source/WebCore/ChangeLog	2012-06-13 20:53:52 UTC (rev 120244)
+++ trunk/Source/WebCore/ChangeLog	2012-06-13 20:56:42 UTC (rev 120245)
@@ -1,3 +1,35 @@
+2012-06-13  Christopher Hutten-Czapski  <[email protected]>
+
+        2012-06-13  Christopher Hutten-Czapski  <[email protected]>
+
+        [BlackBerry] Update Select Popup's styling
+        https://bugs.webkit.org/show_bug.cgi?id=89005
+
+        Reviewed by Rob Buis.
+
+        Add in some nicely-styled CSS and JS for the BlackBerry port's <select>
+
+        * Resources/blackberry/popupControlBlackBerry.css:
+        (body):
+        (.popup-area):
+        (.popup-area>:first-child):
+        (.popup-buttons):
+        (.popup-button-divider):
+        (.popup-button):
+        (.popup-button:active):
+        (.popup-button:first-child:active):
+        (.popup-button:last-child:active):
+        (.popup-button:only-child:active):
+        * Resources/blackberry/selectControlBlackBerry.css: Added.
+        (.select-area):
+        (.select-area:last-child):
+        (.option):
+        (.optgroup:last-child):
+        (.selected):
+        (.optgroup):
+        (.optgroup .option):
+        * Resources/blackberry/selectControlBlackBerry.js: Added.
+
 2012-06-13  Alec Flett  <[email protected]>
 
         [V8] IndexedDB: Cursor value modifications should be preserved until cursor iterates

Modified: trunk/Source/WebCore/Resources/blackberry/popupControlBlackBerry.css (120244 => 120245)


--- trunk/Source/WebCore/Resources/blackberry/popupControlBlackBerry.css	2012-06-13 20:53:52 UTC (rev 120244)
+++ trunk/Source/WebCore/Resources/blackberry/popupControlBlackBerry.css	2012-06-13 20:56:42 UTC (rev 120245)
@@ -1,9 +1,8 @@
+/*
+ * Copyright (C) Research In Motion Limited, 2012. All rights reserved.
+ */
+
 html {
-    position: fixed;
-    left: 0;
-    top: 0;
-    bottom: 0;
-    right: 0;
     overflow: hidden;
 }
 
@@ -11,56 +10,103 @@
     padding: 0;
     margin: 0;
     font-family: "Myriad Pro", "Arial", "Helvetica", sans-serif;
-}
+    font-size: 40px;
 
-.bottombuttonOK {
-    font-family: Arial, Helvetica, sans-serif;
-    font-size: 14px;
-    font-style: oblique;
-    color: rgba(16, 16, 16, 0.6);
-    background-color: rgba(6, 6, 6, 0.6);
-    text-align: center;
-    vertical-align: middle;
-    display: block;
-    height: 30px;
-    width: 70px;
-    border: 1px solid #000;
-    position: fixed;
-    bottom: auto;
-}
+    -webkit-user-select: none;
+    user-select: none;
 
-.bottombuttonCancel {
-    font-family: Arial, Helvetica, sans-serif;
-    font-size: 14px;
-    font-style: oblique;
-    color: rgba(16, 16, 16, 0.6);
-    background-color: rgba(6, 6, 6, 0.6);
-    text-align: center;
-    vertical-align: middle;
-    display: block;
-    height: 30px;
-    width: 70px;
-    border: 1px solid #000;
-    position: fixed;
-    bottom: auto;
-    left: 80px;
+    display: -webkit-box;
+    -webkit-box-orient: vertical;
+    -webkit-box-align: center;
+    -webkit-box-pack: center;
+
+    display: box;
+    box-orient: vertical;
+    box-align: center;
+    box-pack: center;
 }
 
-.tablebutton {
-    font-family: Arial, Helvetica, sans-serif;
-    font-size: 16px;
-    font-weight: bold;
-    background-color: #E2E4E3;
+.popup-area {
+    width: 100%;
     height: 100%;
-    width: 100%;
-    border-top-style: none;
-    border-right-style: none;
-    border-left-style: none;
-    border-bottom-style: none;
-    margin: 0 auto;
-    position:relative;
-    top:0%;
-    left:0%;
-    bottom:0%;
-    right:0%;
+
+    display: -webkit-box;
+    display: box;
+    -webkit-box-orient: vertical;
+    box-orient: vertical;
 }
+
+    .popup-area>:first-child {
+        -webkit-box-flex: 1;
+        box-flex: 1;
+    }
+
+    .popup-buttons {
+        display: -webkit-box;
+        -webkit-box-orient: horizontal;
+        -webkit-box-pack: center;
+        -webkit-box-align: stretch;
+
+        border-image-source: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB8AAAB6CAMAAABwSXjiAAAAvVBMVEXc3Nzd3d3e3t7d3d3c3Nzd3d3f39/e3t7e3t7c3Nzc3Nzd3d3c3Nzc3Nzc3Nze3t7d3d3e3t7e3t7d3d3c3Nzd3d3c3Nzc3Nzd3d3c3Nzd3d3c3Nzd3d3c3Nzd3d3e3t7c3Nzf39/e3t7d3d3l5eXg4ODq6urj4+Pn5+fp6enk5OTm5ubo6Oji4uLh4eH09PT29vb6+vrx8fHw8PDv7+/u7u7t7e3r6+v19fX5+fn4+Pjz8/Py8vL39/fs7OxBzuRYAAAAIHRSTlMAAOqH6qj5xksJP1HJzIcG5JYDEuF+VFd4cud1CeSEk7PB98YAAADeSURBVHhezMlHEYBAAARBHF1OJP+ycDCfra2jv30kZv/Ffv8n2/4P2/6R2X8y+wdm/4vJfzP7ZyZ/YfavTP7G5O9M/pfJP5j6X3fzkYNAEANR1O7JkZxzztz/eDQaIRhB18byhr99KhXtcep+won9ihP7ESf2C07sW5y6n3FiP+DU/YYT+x33977DqfsKp+4h5JDMGmUogh7RAnqLYugxtQ26bxD3Nu6GTNwZO7k5tc6Z0zN+Os8d7HHlHPzkgF/OnmNtvarfXdabDahWMvI/1J8k9FVa5oW1Ii/TNzwAJkil621gpK4AAAAASUVORK5CYII=");
+        border-image-slice: 14 14 14 14 fill;
+        border-width: 14px;
+
+        text-align: center;
+    }
+
+        .popup-button-divider {
+            width: 2px;
+            background-color: rgba(0, 0, 0, 0.2);
+            border-width: 14px 0;
+            /* border image takes an image, so use a solid-colour gradient */
+            border-image-source: -webkit-linear-gradient(top, rgba(0, 0, 0, 0.2) 0%, rgba(0, 0, 0, 0.2) 0%);
+            border-image-slice: 1 0 1 0;
+            border-image-outset: 1 0 1 0;
+        }
+
+        .popup-button {
+            color: inherit;
+            font: inherit;
+            text-shadow: rgba(255, 255, 255, 0.5) 0 -2px;
+            padding: 0;
+            margin: 0;
+            background: none;
+            line-height: 200%;
+            display: block;
+
+            width: 0;
+            -webkit-box-flex: 1;
+
+            border: 14px solid transparent;
+        }
+
+        .popup-button:active { /* all current popups have at most two buttons, so this is unused atm */
+            border-image-source: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAB4AQMAAAAJ9grDAAAAA1BMVEUAAACnej3aAAAAAXRSTlMz/za5cAAAABVJREFUeF7lwIEAAAAAgKD9qQepMAMA8AABd9vWlQAAAABJRU5ErkJggg==");
+            border-image-slice: 1 0 1 0 fill;
+            padding: 14px;
+            margin: -14px;
+        }
+
+        .popup-button:first-child:active { /* TODO: RTL */
+            border-image-source: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAB4CAMAAADMioJkAAAAPFBMVEUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQLyYwAAAAFHRSTlMzAC8BGygeDzIuEBoiGBEtAhcNKSH3iKYAAABFSURBVHhe7cy5AYAwEMTA27PN/9N/r0QQqAVW4QSKX+Wcc84NhCQ0QkfoCYUTrYQyAjQRNBO0EFQJ2naAjjNf+LpquyMeT+sA9bsu6t8AAAAASUVORK5CYII=");
+            border-image-slice: 14 0 14 14 fill;
+            border-image-width: 1 0 1 1;
+            padding: 14px;
+            margin: -14px;
+        }
+
+        .popup-button:last-child:active { /* TODO: RTL */
+            border-image-source: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAB3CAMAAAA93DCxAAAAM1BMVEUAAAAAAAD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACin91XAAAAEXRSTlMzAAAvLhsCKBgyARAeDyIRFxtQtTsAAAA/SURBVHhe7ci3AYAAEAJA8YM57D+thY2wglx5w5+ZmZktGqExaewah0SsEvPIkS2xgaPAcYKjQJEXvhF3440HSAQAwP9T2mwAAAAASUVORK5CYII=");
+            border-image-slice: 14 14 14 0 fill;
+            border-image-width: 1 1 1 0;
+            padding: 14px;
+            margin: -14px;
+        }
+
+        .popup-button:only-child:active {
+            border-image-source: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAB4CAMAAACkeQBcAAAAPFBMVEUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQLyYwAAAAFHRSTlMzAC8bKAEuAjIeDxAXGCIRDSktGtImyaoAAABzSURBVHhe7c5LDsIwEATR6rGdkH+A+9+VRUQUCWx2rPptp0Zq/szMzMzMzMxuv85BU5Bpygw0DYw0jZSgIQpaaFiESkdV1wtpomqSkPSkIukItPLVqnegVPk/A22Pj32broH6ObiIudcBnfaU7wD3nHadXi1ZAc/vLQEmAAAAAElFTkSuQmCC");
+            border-image-slice: 14 14 14 14 fill;
+            border-image-width: 1 1 1 1;
+            padding: 14px;
+            margin: -14px;
+        }

Added: trunk/Source/WebCore/Resources/blackberry/selectControlBlackBerry.css (0 => 120245)


--- trunk/Source/WebCore/Resources/blackberry/selectControlBlackBerry.css	                        (rev 0)
+++ trunk/Source/WebCore/Resources/blackberry/selectControlBlackBerry.css	2012-06-13 20:56:42 UTC (rev 120245)
@@ -0,0 +1,63 @@
+/*
+ * Copyright (C) Research In Motion Limited 2012. All rights reserved.
+ */
+
+.select-area {
+    overflow-x: hidden;
+    overflow-y: auto;
+    white-space: nowrap;
+
+    background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAtUAAAANCAYAAABmQZIAAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODgwMTE3NDA3MjA2ODExOERCQkU3QjZERTFCNzVGNyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoxQzIwQ0ZFQTM0ODYxMUUxQkI0RkE0ODBENzFGMEVDRSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxQzIwQ0ZFOTM0ODYxMUUxQkI0RkE0ODBENzFGMEVDRSIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjA4ODAxMTc0MDcyMDY4MTE4REJCRTdCNkRFMUI3NUY3IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjA4ODAxMTc0MDcyMDY4MTE4REJCRTdCNkRFMUI3NUY3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+YZtOWQAAA25JREFUeNrsnetuwyAMhYPH3v+FUzNV2qSpSsAXTCA550eltingC/BBaZpKKRsEQRAEQRAEQXbl90NKCZ6AtCK4AIIgCLqxGC6ApHpvUueJweyOybwaiGJAQV5AEITxGlp3zOYH+H0aGzOSFkC0aH5ggIYgCAJUw9f++QW5Mxk00UWJACCCbfAzBEEQBD13MUOBZQ+Daqo854PXSGgECZ3EHSClhxMJUDQNGEpjwQ/xBxYHEDR4UoWtqnGAJ/I7B9m4Sj5wcB708C93iG0LzF1+yA4ja89J6CRyJGsO7OhXl7tih50FqiW/uo2+5U0yTCx3AOo7QzW+Hr33wml/WGw4cBzU3PmgLArVd2snT9Zu7Y60Bdg5wo6s6KQaAKZGA+hgImbl4NBjcI88M+xpX+qQTLVvBvJA+1jp9zvvIj+tXsAkFhfQ9b7jG9dHwoUSDbBFstt7BnSa+b0sEqNdMO+zsn0S3uGDa3PD5hZ/iv2VlclKjQT5hHDa6kdBtFBNjo6WOnRW6tTZo8obWdaXsKMnZ/0c4AO6sIxRcLYKBCbjhOG9D2hxtvOpKoN8Zq1n9j9e4MH1WHflWAiDI2y1zgGszIujfH1dHF8O+gx3KLNVhoQRekH11oBq+rfoOdpc3H9fJ2GfYi1UHwExVaA6VyCUGkCejFBLgUCsKSM5wKYHeFvgiTpMftT5urPrI6C6ByDNBtW9y70KIkf9HgLHtuJBjwf5cvRObFkgBjNAdQnwjfWcLg+ISxG0m531eICZHTHjDj7dFfFr1cdKYOcKcH9Ct8vO3BjAqALVR5CdK1CdKu9twvdIcM1XI9k8MGg9ApMcIG2dqNNJh/k878sVX7LCxl5wNgJMrtypThPbZC0vdZxUpf7xTtgR596fANWaRU9xxicK3rz5OvuZ1lmOB8x0TrcYy2RhH2jB2CdUF4e9WrCO2iHWxvdbEZddEJfWcY4z7uKTz1MFumscyTUIriUENwDsDFrZCGzWFdneaONrIOhsFbD1DBTWHe6/WLwOfGKJUTK2IxLwJNdqvtJLg9o9G2Svenwkuu/2gvTZoLpc7NtIQJxlQTIKNCPqLpO0cfSOswSqJWW/OvGNNC4WP0o+w4780NSpOZ++V8p8bed3puPKAuqPlf7vrpMgHzi9/1YRgiAIgiAIgiC7fgQYALk6BVm+VKUFAAAAAElFTkSuQmCC") bottom no-repeat rgba(255, 255, 255, 0.5);
+    background-size: 100% auto;
+    border-top-left-radius: 10px;
+    border-top-right-radius: 10px;
+    border-image-source: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAcCAYAAACdz7SqAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9wGBw8oKjYFm6wAAAMkSURBVEjHxZbBThtXFIa/MzaejAs2aZKqbnHsSunG6kOwiJF4A4RhA1ElVGXLgteIKhQasUoRD5CmEs6CR/Ciu7YuBksjFZTa4Ho8tmdOF7kzOIi2CZjkSEdjX8093/3/e2bmiqoSReOg4QD3gE8YX/wNHBeKBS8akAh6eHB41wCpVqv2k++f3G0cNKZb7dYkIO8B0ensdKdQLLQef/f4pFwu+2b8+H7x/kkMPWoc5YBpgEffPvqsWq0WVDUC6RXUCYCIaLlcbjzbevanGW/lC3lXDhuHGeDLs7MzeVh++MB13dtACPiABwxGwPp/IHOdABzABqxcLvfXq+qr36amphRoWoLcFoTKUuUL13WzBtICXgMdA+6Z9P8jo3s8M++1qTNwXTdbWarkBEGQTy0RSb/46YVdq9U+BwLgGGibBoiyA5y9Q3YuzGsDJ0BQq9VyL39+mRKRtCUibP2wdccAT83NXbPid1V5mVrP1OmYusHTrad3RISkiFCv1zNA39jRM78Ds7fhFRrJMjk089uAXa/XsyLiJkWEbrebMCvtmmvfNE14je6NoGr+9z3Pm4iVDgaDoWmgCBjB9IovhGjBYuoBDHzfT8RQY+XwmpZeBo5UxvXfQC1hBDi8hqX/FsHIdSiWYBmlo3aOE8iFumFsr4joiKXjhkYRAipyrlRvGBjXH20kvUF736o/qvSDxUeEWh8YGj0yqVTq4jdx3GEBTE5OSmxvPp9H35xbrEuaahwpqqrFYvG8kebn5yOFzg0pdQDK5fK50tXVVQBVVQdIjhmYVNU0oMvLy7HSbqlU6q2vr6cMOauqto4nbFXNArqxsWGXSqWeiHTF87yMiHwVhuHMysrK6e7urmf2oWe+r4MrqJsA0sAtQBYWFpzt7e2MZVlNVf1DVBW/5+cSicQDEck8//F5d21t7dTzvOtvpOOwubmZWaospVW1HQTB7/Yt240P277v30skEt+ISLrZbA53dna8vb09f39/f/i+sNnZ2eTc3Jy9uLjozMzMJFW1GwTBL7ZtH791wgfo9/uOZVlfi0h+bC9d1aMwDH9NpVKxdf8AVVvibOaCYy8AAAAASUVORK5CYII=");
+    border-width: 12px 12px 0 12px;
+    border-image-slice: 12 12 12 12 fill;
+}
+
+.select-area:last-child {
+    /* Nothing comes after us? Put the bottom border back and adjust the bottom shadow */
+    border-bottom-width: 12px;
+    background-origin: border-box;
+}
+
+    .option {
+        overflow: hidden;
+        text-overflow: -blackberry-fade;
+        color: #262626;
+        text-shadow: rgba(0, 0, 0, 0.2) 0 -1px;
+
+        box-sizing: border-box;
+        height: 99px;
+
+        border: 2px solid rgba(0, 0, 0, 0.2);
+        border-bottom-width: 0;
+
+        padding-left: 24px;
+        padding-top: 28px;
+    }
+
+    .option:last-child,
+    .optgroup:last-child {
+        border-bottom-width: 2px;
+    }
+
+        .selected {
+            background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAfCAYAAACPvW/2AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowOTgwMTE3NDA3MjA2ODExOERCQkU3QjZERTFCNzVGNyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo4QjlDOEZERjRFOEUxMUUxQTVCNEE5NzUyM0FFRjA5OSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo4QjlDOEZERTRFOEUxMUUxQTVCNEE5NzUyM0FFRjA5OSIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkUzQUZFRkQwNDMyMDY4MTE5NDU3RDYyQTNCRTFFRDU2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjA5ODAxMTc0MDcyMDY4MTE4REJCRTdCNkRFMUI3NUY3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Ei1rtAAAAxlJREFUeNrEl89rGkEUx1dXTWISPajxRzQhGkECIedCDvbQg9BbaQ6BQK8p9A9IDi2l2D8hJ9Eo/khMcmjVHJJLoYcWofaSXpJDyalJhIIUkYI/+n1DVyLurDHRdeHhzDgz++H73rx5q/H7/cIon/Pz846+ZoRANtgj2G/YF4A1aFDbarWEEdi6RqO5MBgMH/R6/Wf0v0MYBwHpRqDMi/Hx8YjZbBYBxQbq9fpypVKJoPlUR8RqwkxMTDAY6kjvFkVRmJqaCqmtEFPGZDKJciIYjcYaA1JJIaYMD4aelZWVExbUasLwJiwsLJTC4fB7NRTaIDchPsRms8mFiUQiW4D+NmwggolNT09z3UQw0WiUYE4pxocZ1BtjY2M9YWKxWAfMsBRiMEpu8nq9pd3d3S6YYWTqDWRfBsObQ8rE43EGMz8/36WGdhhu4k0gZRKJBBdGzmVLsGVYEfazX5jJyUlFN0kwc3Nz3DiRXEYSp7Ra7Q9IvoffC/Tf9uMmglFyUzKZZDAej6d1+z9ZhQDwCql7HRtL42KtVnsNoxLhZS9lsJarjM/nK6VSKQbjdrt7niAGZLFYnuHG7SBGDhFwG29Wq1WBA7UuwfBOKsGk02kGMzs7e6fjzILaZrPV5f7ECwW4YhPNHRmYBLmJtzHBZDKZvmDaMRQMBj+S5HKGAkrAppuYtyMVVxhLYEzkraGYkWBcLldLKQZlFdre3t4LhUJZ3iKKLYLC1BOCkdwkZ3Sa9vf32zD95g4WQ06n8xeed9Q+Pj5ek5tIUAj+JzqdTlCKmWw2y2Cw572ugHYecjgcZ1dXVwyqUCjIQgFI4J2mxcXFNgz2uvd91JEY7Xb72fX1tSIUD+bg4GALrjzFHg+6HLtuewmK2neBIpjDw8OBwHDLj9tQ+Xx+TS0YxfJjZmbm7ObmhrlPDopgjo6OGAzmDqyGUSzQJCicrHoul3veaDT0NB4IBIooId4MGoZ9Slut1p6TyuXy0uXl5eNisejCca6urq5+xfAnZPjmQwGwd/9A/xfSzWuC/QXIn0Ep0gWk8pdrz+efAAMAmYa9FmAD9lUAAAAASUVORK5CYII="),
+                                -webkit-linear-gradient(top, #fafafa 0%, #dddddd 100%);
+            background-position: right 20px, 0% 0%; /* TODO: RTL */
+            /* FIXME: the above should put the checkmark 20px from the right of the box, but webkit isn't supporting that part of CSS3 yet. So fake it */
+            background-position: 97% 50%, 0% 0%;
+            background-repeat: no-repeat;
+            padding-right: 56px; /* this gets the overflow and fade to work. 36px for the image, about 20px for the right padding */
+        }
+
+    .optgroup {
+        /* need to do something with this */
+        padding-left: 22px;
+    }
+
+        .optgroup .option {
+            border-left-width: 0; /* TODO: RTL */
+        }

Added: trunk/Source/WebCore/Resources/blackberry/selectControlBlackBerry.js (0 => 120245)


--- trunk/Source/WebCore/Resources/blackberry/selectControlBlackBerry.js	                        (rev 0)
+++ trunk/Source/WebCore/Resources/blackberry/selectControlBlackBerry.js	2012-06-13 20:56:42 UTC (rev 120245)
@@ -0,0 +1,92 @@
+/*
+ * Copyright (C) Research In Motion Limited, 2012. All rights reserved.
+ */
+
+// Upon the user making a selection, I will call window.setValueAndClosePopup with a binary string where
+// the character at index i being '1' means that the option at index i is selected.
+(function (){
+
+    var selectOption = function (event) {
+        for (var option = document.getElementById('select-area').firstChild; option; option = option.nextSibling) {
+            if (option === event.target) {
+                if (option.className.indexOf('selected') === -1) {
+                    option.className += ' selected';
+                }
+            } else {
+                option.className = option.className.replace('selected', '');
+            }
+        }
+        done();
+    };
+
+    var toggleOption = function (event) {
+        if (event.target.className.indexOf('selected') === -1) {
+            event.target.className += ' selected';
+        } else {
+            event.target.className = event.target.className.replace('selected', '');
+        }
+    };
+
+    var done = function () {
+        var result = '';
+        for (var option = document.getElementById('select-area').firstChild; option; option = option.nextSibling) {
+            if (option.className.indexOf('selected') === -1) {
+                result += '0';
+            } else {
+                result += '1';
+            }
+        }
+        window.setValueAndClosePopup(result, window.popUp);
+    };
+
+    /* multiple - a boolean
+     * labels - an array of strings
+     * enableds - an array of booleans.
+     *   -I will assume that the HTML "disabled optgroups disable all options in the optgroup" hasn't been applied,
+     *    so if the index corresponds to an optgroup, I will render all of its options as disabled
+     * itemTypes - an array of integers, 0 === option, 1 === optgroup, 2 === option in optgroup
+     * selecteds - an array of booleans
+     * buttonText - a string to use for the button presented when multiple is true. Like "OK" or "Done" or something.
+     */
+    var show = function (multiple, labels, enableds, itemTypes, selecteds, buttonText) {
+        var i,
+            size = labels.length,
+            popup = document.createElement('div'),
+            select = document.createElement('div');
+
+        popup.className = 'popup-area';
+        select.className = 'select-area';
+        select.id = 'select-area';
+        popup.appendChild(select);
+
+        for (i = 0; i < size; i++) {
+            // TODO: handle itemTypes
+            var option = document.createElement('div');
+            option.className = 'option' + (enableds[i] ? '' : ' disabled') + (selecteds[i] ? ' selected' : '');
+            option.appendChild(document.createTextNode(labels[i]));
+            if (!multiple) {
+                option.addEventListener('click', selectOption);
+            } else if (enableds[i]) {
+                option.addEventListener('click', toggleOption);
+            }
+
+            select.appendChild(option);
+        }
+
+        if (multiple) {
+            var okButton = document.createElement('button'),
+                buttons = document.createElement('div');
+            buttons.className = 'popup-buttons';
+            okButton.className = 'popup-button';
+            okButton.addEventListener('click', done);
+            okButton.appendChild(document.createTextNode(buttonText));
+            buttons.appendChild(okButton);
+            popup.appendChild(buttons);
+        }
+
+        document.body.appendChild(popup);
+    };
+
+    window.select = window.select || {};
+    window.select.show = show;
+}());
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to