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     	var index = this.getCurrentSelectionIndex();
 32     	//jls.logger.warn('ComboBox index: ' + index);
 33     	if (index < 0) {
 34             return this.getText();
 35     	}
 36         return this.getListBoxText(index);
 37     }
 38 });
 39 
 40 Object.extend(jls.win32.ComboBox,
 41 {
 42     CBS_AUTOHSCROLL          : 0x00000040,
 43     CBS_DISABLENOSCROLL      : 0x00000800,
 44     CBS_DROPDOWN             : 0x00000002,
 45     CBS_DROPDOWNLIST         : 0x00000003,
 46     CBS_HASSTRINGS           : 0x00000200,
 47     CBS_LOWERCASE            : 0x00004000,
 48     CBS_NOINTEGRALHEIGHT     : 0x00000400,
 49     CBS_OEMCONVERT           : 0x00000080,
 50     CBS_OWNERDRAWFIXED       : 0x00000010,
 51     CBS_OWNERDRAWVARIABLE    : 0x00000020,
 52     CBS_SIMPLE               : 0x00000001,
 53     CBS_SORT                 : 0x00000100,
 54     CBS_UPPERCASE            : 0x00002000,
 55 
 56     CB_ADDSTRING             : 0x00000143,
 57     CB_DELETESTRING          : 0x00000144,
 58     CB_DIR                   : 0x00000145,
 59     CB_FINDSTRING            : 0x0000014c,
 60     CB_FINDSTRINGEXACT       : 0x00000158,
 61     CB_GETCOUNT              : 0x00000146,
 62     CB_GETCURSEL             : 0x00000147,
 63     CB_GETDROPPEDCONTROLRECT : 0x00000152,
 64     CB_GETDROPPEDSTATE       : 0x00000157,
 65     CB_GETDROPPEDWIDTH       : 0x0000015f,
 66     CB_GETEDITSEL            : 0x00000140,
 67     CB_GETEXTENDEDUI         : 0x00000156,
 68     CB_GETHORIZONTALEXTENT   : 0x0000015d,
 69     CB_GETITEMDATA           : 0x00000150,
 70     CB_GETITEMHEIGHT         : 0x00000154,
 71     CB_GETLBTEXT             : 0x00000148,
 72     CB_GETLBTEXTLEN          : 0x00000149,
 73     CB_GETLOCALE             : 0x0000015a,
 74     CB_GETTOPINDEX           : 0x0000015b,
 75     CB_INITSTORAGE           : 0x00000161,
 76     CB_INSERTSTRING          : 0x0000014a,
 77     CB_LIMITTEXT             : 0x00000141,
 78     CB_RESETCONTENT          : 0x0000014b,
 79     CB_SELECTSTRING          : 0x0000014d,
 80     CB_SETCURSEL             : 0x0000014e,
 81     CB_SETDROPPEDWIDTH       : 0x00000160,
 82     CB_SETEDITSEL            : 0x00000142,
 83     CB_SETEXTENDEDUI         : 0x00000155,
 84     CB_SETHORIZONTALEXTENT   : 0x0000015e,
 85     CB_SETITEMDATA           : 0x00000151,
 86     CB_SETITEMHEIGHT         : 0x00000153,
 87     CB_SETLOCALE             : 0x00000159,
 88     CB_SETTOPINDEX           : 0x0000015c,
 89     CB_SHOWDROPDOWN          : 0x0000014f,
 90 
 91     CBN_CLOSEUP              : 0x00000008,
 92     CBN_DBLCLK               : 0x00000002,
 93     CBN_DROPDOWN             : 0x00000007,
 94     CBN_EDITCHANGE           : 0x00000005,
 95     CBN_EDITUPDATE           : 0x00000006,
 96     CBN_ERRSPACE             : 0xffffffff,
 97     CBN_KILLFOCUS            : 0x00000004,
 98     CBN_SELCHANGE            : 0x00000001,
 99     CBN_SELENDCANCEL         : 0x0000000a,
100     CBN_SELENDOK             : 0x00000009,
101     CBN_SETFOCUS             : 0x00000003,
102     
103     CLASSNAME: 'ComboBox'//ComboBoxEx32
104 });
105