1 jls.loader.provide('jls.win32.TabElement'); 2 3 jls.loader.require('jls.win32.WindowElement'); 4 jls.loader.require('jls.win32.TabControl'); 5 jls.loader.require('jls.gui.CardLayout'); 6 7 jls.win32.TabElement = jls.lang.Class.create(jls.win32.WindowElement, 8 { 9 initialize : function($super, parameters, parent) { 10 this._selectedIndex = 0; 11 $super(parameters, parent); 12 this.observe('change', this.onChange.bind(this)); 13 }, 14 onCreate : function() { 15 this._window = new jls.win32.TabControl('', this.getWindowStyle(), 16 this.getX(), this.getY(), this.getW(), this.getH(), 17 this.getParentWindow(true), this.getWindowId(true), this.getWindowExStyle()); 18 }, 19 createDefaultLayout : function() { 20 return new jls.gui.CardLayout(this); 21 }, 22 /*getWindowStyle : function($super) { 23 return jls.win32.Window.WS_CHILD | jls.win32.Window.WS_VISIBLE;// | jls.win32.Button.BS_BITMAP | jls.win32.Button.BS_ICON; 24 },*/ 25 getClientSize : function() { 26 // TODO Fix this 27 return [this.getW() - 6, this.getH() - 31]; 28 }, 29 getClientOffset : function() { 30 // TODO Fix this 31 return [3, 28]; 32 }, 33 onChange : function(event) { 34 //jls.logger.warn('onChange(' + event.index + ')'); 35 this._layout.show(event.index); 36 }, 37 onWindowMessage: function($super, message, wParam, lParam) { 38 //jls.logger.warn('onWindowMessage(' + jls.win32.Window.getMessageName(message) + ', ' + wParam + ', ' + lParam + ')'); 39 switch(message) { 40 case jls.win32.Window.WM_CTLNOTIFY: 41 //jls.logger.warn('onCtlNotify(' + jls.win32.Window.getMessageName(lParam, jls.win32.TabControl, 'TCN_') + ')'); 42 if (wParam != this._windowId) { 43 break; 44 } 45 switch(lParam) { 46 case jls.win32.TabControl.TCN_SELCHANGE : 47 var event = new jls.gui.Event('change', this); 48 var sel = this._window.getSelectedIndex(); 49 //jls.logger.warn('sel: ' + sel); 50 event.index = sel; 51 this.dispatch(event); 52 break; 53 } 54 55 return; 56 } 57 $super(message, wParam, lParam); 58 }, 59 addChild : function($super, child) { 60 var label = child.getAttribute('title'); 61 var index = this._window.insertItem(label, this.getChildCount()); 62 //jls.logger.warn('index: ' + index); 63 return $super(child); 64 } 65 }); 66 67