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