TabController.js
Summary
No overview generated for 'TabController.js'
const TKTabControllerWillShowController = 'tabControllerWillShowController';
const TKTabControllerDidShowController = 'tabControllerDidShowController';
TKTabController.inherits = TKController;
TKTabController.synthetizes = ['selectedController', 'selectedIndex'];
function TKTabController (data) {
this.tabs = null;
this._selectedController = null;
this.controllers = [];
this.delegate = null;
this.tabNavigator = null;
this.previousController = null;
this.busy = false;
this.callSuper(data);
};
TKTabController.prototype.loadView = function () {
this.callSuper();
this.host = this._view.appendChild(document.createElement('div'));
};
TKTabController.prototype.processView = function () {
this.callSuper();
var tabs = this._view.querySelectorAll(this.tabsSelector);
if (tabs.length < 1) {
return;
}
var container = tabs[0].parentNode;
container.id = (container.id == '') ? (this.id + '-tabs-navigator') : container.id;
this.tabNavigator = new TKTabNavigationController({
view : container,
tabs : tabs
});
this.tabNavigator.delegate = this;
this.tabNavigator.parentController = this;
this.addKeyboardElement(this.tabNavigator.view);
this.tabNavigator.view.addEventListener('highlight', this, false);
this.highlightElement(this.tabNavigator.view);
this.metricsView = this.tabNavigator.view;
};
TKTabController.prototype.handleKeydown = function (event) {
var selected_controller = this.selectedController;
if (this.tabNavigator.view.hasClassName(TKControllerHighlightCSSClass) && selected_controller.wantsToHandleKeyboardEvent(event)) {
selected_controller.handleKeydown(event);
}
else {
this.callSuper(event);
}
};
TKTabController.prototype.getSelectedIndex = function () {
return (this._selectedController === null) ? -1 : this.controllers.indexOf(this._selectedController);
};
TKTabController.prototype.setSelectedIndex = function (index) {
if (index >= 0 && index < this.controllers.length) {
this.selectedController = this.controllers[index];
}
};
TKTabController.prototype.setSelectedController = function (controller) {
if (this.busy || controller === this._selectedController || this.controllers.indexOf(controller) == -1) {
return;
}
TKTransaction.begin();
var previous_controller = this._selectedController;
var next_view = controller.view;
if (TKUtils.objectHasMethod(this.delegate, TKTabControllerWillShowController)) {
this.delegate[TKTabControllerWillShowController](this, controller);
}
this._selectedController = controller;
if (previous_controller !== null) {
previous_controller.viewWillDisappear();
}
controller.viewWillAppear();
this.host.appendChild(controller.view);
if (previous_controller !== null) {
this.transitionToController(previous_controller, controller);
}
else {
this.transitionDidComplete();
}
TKTransaction.commit();
};
TKTabController.prototype.transitionToController = function (previous_controller, top_controller) {
this.busy = true;
TKController.busyControllers++;
this.previousController = previous_controller;
if (previous_controller !== null) {
previous_controller.view.applyTransition(previous_controller.becomesInactiveTransition, false);
}
var top_controller_transition = top_controller.becomesActiveTransition;
top_controller_transition.delegate = this;
top_controller.view.applyTransition(top_controller_transition, false);
};
TKTabController.prototype.transitionDidComplete = function (transition) {
if (!this.busy) {
return;
}
if (this.previousController !== null) {
this.host.removeChild(this.previousController.view);
this.removeKeyboardElement(this.previousController.view);
this.previousController.parentController = null;
this.previousController.viewDidDisappear();
}
this.addKeyboardElement(this._selectedController.view);
this._selectedController.parentController = this;
this._selectedController.viewDidAppear();
if (TKUtils.objectHasMethod(this.delegate, TKTabControllerDidShowController)) {
this.delegate[TKTabControllerDidShowController](this, this._selectedController);
}
this.busy = false;
TKController.busyControllers--;
};
TKTabController.prototype.tabNavigationControllerDidSelectTab = function (tabNavigationController, tabIndex) {
this.selectedIndex = tabIndex;
};
TKClass(TKTabController);
Documentation generated by
JSDoc on Tue Sep 15 21:24:36 2009