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