1 jls.loader.provide('jls.win32.TabControl');
  2 
  3 jls.loader.require('jls.win32.Window');
  4 jls.loader.require('jls.lang.Struct');
  5 jls.loader.require('jls.lang.ByteBuffer');
  6 jls.loader.require('jls.lang.CharBuffer');
  7 
  8 jls.win32.TabControl = jls.lang.Class.create(jls.win32.Window,
  9 {
 10     initialize : function($super, title, style, x, y, w, h, parent, id, exStyle, param) {
 11         $super(jls.win32.TabControl.CLASSNAME, title, style, x, y, w, h, parent, id, exStyle, param);
 12         this._item = new jls.lang.Struct([
 13             {name: 'mask', type: 'UnsignedInt'},
 14             {name: 'dwState', type: 'SignedInt'},
 15             {name: 'dwStateMask', type: 'SignedInt'},
 16             {name: 'pszText', type: 'Pointer'},
 17             {name: 'cchTextMax', type: 'SignedInt'},
 18             {name: 'iImage', type: 'SignedInt'},
 19             {name: 'lParam', type: 'SignedInt'}
 20         ]);
 21         //this._textBuffer = jls.lang.ByteBuffer.allocate(256);
 22         this._textBuffer = jls.lang.CharBuffer.allocate(256);
 23     },
 24     getSelectedIndex : function() {
 25         return this.sendMessage(jls.win32.TabControl.TCM_GETCURSEL, 0, 0);
 26     },
 27     setSelectedIndex : function(index) {
 28         this.sendMessage(jls.win32.TabControl.TCM_SETCURSEL, index, 0);
 29     },
 30     insertItem : function(label, index) {
 31         //jls.logger.warn('TabControl.insertItem("' + label + '")');
 32         this._textBuffer.clear();
 33         this._textBuffer.putString(label || '');
 34         //this._textBuffer.putByte(0);
 35         this._textBuffer.putChar(0);
 36         //this._item.put('mask', jls.win32.TabControl.TCIF_TEXT | jls.win32.TabControl.TCIF_IMAGE);
 37     	this._item.put('mask', jls.win32.TabControl.TCIF_TEXT);
 38         //this._item.put('dwState', 0);
 39         //this._item.put('dwStateMask', 0);
 40     	//jls.logger.warn('TabControl.insertItem() item: 0x' + this._item.buffer().byteArray().pointer().toString(16) + ', label: 0x' + this._textBuffer.byteArray().pointer().toString(16));
 41         this._item.put('pszText', this._textBuffer.byteArray().pointer());
 42         //this._item.put('cchTextMax', 0);
 43         this._item.put('iImage', -1);
 44         this._item.put('lParam', 0);
 45         //return this.sendMessage(jls.win32.TabControl.TCM_INSERTITEMA, index || 0, this._item.buffer().byteArray());
 46         return this.sendMessage(jls.win32.TabControl.TCM_INSERTITEMW, index || 0, this._item.buffer().byteArray());
 47     }
 48 });
 49 /*
 50 typedef struct {
 51   UINT   mask;
 52 #if (_WIN32_IE >= 0x0300)
 53   DWORD  dwState;
 54   DWORD  dwStateMask;
 55 #else 
 56   UINT   lpReserved1;
 57   UINT   lpReserved2;
 58 #endif 
 59   LPTSTR pszText;
 60   int    cchTextMax;
 61   int    iImage;
 62   LPARAM lParam;
 63 } TCITEM, *LPTCITEM;
 64 */
 65 Object.extend(jls.win32.TabControl,
 66 {
 67     TCS_FORCEICONLEFT        : 0x00000010,
 68     TCS_FORCELABELLEFT       : 0x00000020,
 69     TCS_TABS                 : 0x00000000,
 70     TCS_BUTTONS              : 0x00000100,
 71     TCS_SINGLELINE           : 0x00000000,
 72     TCS_MULTILINE            : 0x00000200,
 73     TCS_RIGHTJUSTIFY         : 0x00000000,
 74     TCS_FIXEDWIDTH           : 0x00000400,
 75     TCS_RAGGEDRIGHT          : 0x00000800,
 76     TCS_FOCUSONBUTTONDOWN    : 0x00001000,
 77     TCS_OWNERDRAWFIXED       : 0x00002000,
 78     TCS_TOOLTIPS             : 0x00004000,
 79     TCS_FOCUSNEVER           : 0x00008000,
 80     
 81     TCIF_TEXT                : 0x00000001,
 82     TCIF_IMAGE               : 0x00000002,
 83     TCIF_RTLREADING          : 0x00000004,
 84     TCIF_PARAM               : 0x00000008,
 85     TCIS_BUTTONPRESSED       : 0x00000001,
 86     
 87     TCM_FIRST                : 0x00001300,
 88     TCM_GETIMAGELIST         : 0x00001302,
 89     TCM_SETIMAGELIST         : 0x00001303,
 90     TCM_GETITEMCOUNT         : 0x00001304,
 91     TCM_GETITEMA             : 0x00001305,
 92     TCM_GETITEMW             : 0x0000133c,
 93     TCM_SETITEMA             : 0x00001306,
 94     TCM_SETITEMW             : 0x0000133d,
 95     TCM_INSERTITEMA          : 0x00001307,
 96     TCM_INSERTITEMW          : 0x0000133e,
 97     TCM_DELETEITEM           : 0x00001308,
 98     TCM_DELETEALLITEMS       : 0x00001309,
 99     TCM_GETITEMRECT          : 0x0000130a,
100     TCM_GETCURSEL            : 0x0000130b,
101     TCM_SETCURSEL            : 0x0000130c,
102     TCM_HITTEST              : 0x0000130d,
103     TCM_SETITEMEXTRA         : 0x0000130e,
104     TCM_ADJUSTRECT           : 0x00001328,
105     TCM_SETITEMSIZE          : 0x00001329,
106     TCM_REMOVEIMAGE          : 0x0000132a,
107     TCM_SETPADDING           : 0x0000132b,
108     TCM_GETROWCOUNT          : 0x0000132c,
109     TCM_GETTOOLTIPS          : 0x0000132d,
110     TCM_SETTOOLTIPS          : 0x0000132e,
111     TCM_GETCURFOCUS          : 0x0000132f,
112     TCM_SETCURFOCUS          : 0x00001330,
113     TCM_SETMINTABWIDTH       : 0x00001331,
114     TCM_DESELECTALL          : 0x00001332,
115     TCN_KEYDOWN              : 0xfffffdda,
116     TCN_SELCHANGE            : 0xfffffdd9,
117     TCN_SELCHANGING          : 0xfffffdd8,
118 
119     CLASSNAME: 'SysTabControl32'
120 });
121