1 jls.loader.provide('jls.win32.ComboBox');
  2 
  3 jls.loader.require('jls.win32.Window');
  4 
  5 jls.win32.ComboBox = jls.lang.Class.create(jls.win32.Window,
  6 {
  7     initialize : function($super, title, style, x, y, w, h, parent, id, exStyle, param) {
  8         $super(jls.win32.ComboBox.CLASSNAME, title, style, x, y, w, h, parent, id, exStyle, param);
  9     },
 10     addString : function(s) {
 11         this.sendMessage(jls.win32.ComboBox.CB_ADDSTRING, 0, s);
 12     },
 13     getCurrentSelectionIndex : function() {
 14         return this.sendMessage(jls.win32.ComboBox.CB_GETCURSEL, 0, 0);
 15     },
 16     getListBoxText : function(index) {
 17         var length = this.sendMessage(jls.win32.ComboBox.CB_GETLBTEXTLEN, index, 0);
 18         if (length <= 0) {
 19             return '';
 20         }
 21         var buffer = jls.lang.ByteBuffer.allocate(length + 1);
 22         var len = this.sendMessage(jls.win32.ComboBox.CB_GETLBTEXT, index, buffer.byteArray());
 23         if (len <= 0) {
 24             return '';
 25         }
 26         buffer.clear();
 27         buffer.setLimit(len);
 28         return buffer.getString(); // TODO Fix charset
 29     },
 30     getCurrentSelectionText : function() {
 31         return this.getListBoxText(this.getCurrentSelectionIndex());
 32     }
 33 });
 34 
 35 Object.extend(jls.win32.ComboBox,
 36 {
 37     CBS_AUTOHSCROLL          : 0x00000040,
 38     CBS_DISABLENOSCROLL      : 0x00000800,
 39     CBS_DROPDOWN             : 0x00000002,
 40     CBS_DROPDOWNLIST         : 0x00000003,
 41     CBS_HASSTRINGS           : 0x00000200,
 42     CBS_LOWERCASE            : 0x00004000,
 43     CBS_NOINTEGRALHEIGHT     : 0x00000400,
 44     CBS_OEMCONVERT           : 0x00000080,
 45     CBS_OWNERDRAWFIXED       : 0x00000010,
 46     CBS_OWNERDRAWVARIABLE    : 0x00000020,
 47     CBS_SIMPLE               : 0x00000001,
 48     CBS_SORT                 : 0x00000100,
 49     CBS_UPPERCASE            : 0x00002000,
 50 
 51     CB_ADDSTRING             : 0x00000143,
 52     CB_DELETESTRING          : 0x00000144,
 53     CB_DIR                   : 0x00000145,
 54     CB_FINDSTRING            : 0x0000014c,
 55     CB_FINDSTRINGEXACT       : 0x00000158,
 56     CB_GETCOUNT              : 0x00000146,
 57     CB_GETCURSEL             : 0x00000147,
 58     CB_GETDROPPEDCONTROLRECT : 0x00000152,
 59     CB_GETDROPPEDSTATE       : 0x00000157,
 60     CB_GETDROPPEDWIDTH       : 0x0000015f,
 61     CB_GETEDITSEL            : 0x00000140,
 62     CB_GETEXTENDEDUI         : 0x00000156,
 63     CB_GETHORIZONTALEXTENT   : 0x0000015d,
 64     CB_GETITEMDATA           : 0x00000150,
 65     CB_GETITEMHEIGHT         : 0x00000154,
 66     CB_GETLBTEXT             : 0x00000148,
 67     CB_GETLBTEXTLEN          : 0x00000149,
 68     CB_GETLOCALE             : 0x0000015a,
 69     CB_GETTOPINDEX           : 0x0000015b,
 70     CB_INITSTORAGE           : 0x00000161,
 71     CB_INSERTSTRING          : 0x0000014a,
 72     CB_LIMITTEXT             : 0x00000141,
 73     CB_RESETCONTENT          : 0x0000014b,
 74     CB_SELECTSTRING          : 0x0000014d,
 75     CB_SETCURSEL             : 0x0000014e,
 76     CB_SETDROPPEDWIDTH       : 0x00000160,
 77     CB_SETEDITSEL            : 0x00000142,
 78     CB_SETEXTENDEDUI         : 0x00000155,
 79     CB_SETHORIZONTALEXTENT   : 0x0000015e,
 80     CB_SETITEMDATA           : 0x00000151,
 81     CB_SETITEMHEIGHT         : 0x00000153,
 82     CB_SETLOCALE             : 0x00000159,
 83     CB_SETTOPINDEX           : 0x0000015c,
 84     CB_SHOWDROPDOWN          : 0x0000014f,
 85 
 86     CBN_CLOSEUP              : 0x00000008,
 87     CBN_DBLCLK               : 0x00000002,
 88     CBN_DROPDOWN             : 0x00000007,
 89     CBN_EDITCHANGE           : 0x00000005,
 90     CBN_EDITUPDATE           : 0x00000006,
 91     CBN_ERRSPACE             : 0xffffffff,
 92     CBN_KILLFOCUS            : 0x00000004,
 93     CBN_SELCHANGE            : 0x00000001,
 94     CBN_SELENDCANCEL         : 0x0000000a,
 95     CBN_SELENDOK             : 0x00000009,
 96     CBN_SETFOCUS             : 0x00000003,
 97     
 98     CLASSNAME: 'ComboBox'//ComboBoxEx32
 99 });
100