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