function (oReferences) {

				// Setup
				this._sTopicId = oReferences.sTopicId;
				this._oModel = oReferences.oModel;
				this._oControlData = this._oModel.getData();
				this._aApiIndex = oReferences.aApiIndex;
				this._aAllowedMembers = oReferences.aAllowedMembers;
				this._sEntityType = oReferences.sEntityType;
				this._sEntityId = oReferences.sEntityId;
				this._oEntityData = oReferences.oEntityData;
				this._oContainerController = oReferences.oContainerController;
				this._oContainerView = oReferences.oContainerView;

				// Override instance getOwnerComponent so correct component will be used for the controller
				this.getOwnerComponent = function () {
					return oReferences.oOwnerComponent;
				};

				// Cache router instance
				this._oRouter = this.getRouter();

				// Attach the model to the view
				this.setModel(this._oModel);

				// Build needed resources and pre-process data
				this._oEntityData.appComponent = this._oControlData.component || this.NOT_AVAILABLE;
				this._oEntityData.hasSample = this._oControlData.hasSample;
				this._oEntityData.sample = this._oControlData.hasSample ? this._sTopicId : this.NOT_AVAILABLE;

				this._buildHeaderLayout(this._oControlData, this._oEntityData);

				setTimeout(function () {
					// Initial prettify
					this._prettify();

					// Attach prettify for un-stashed sub sections
					this._objectPage.attachEvent("subSectionEnteredViewPort", function () {
						// Clear previous calls if any
						if (this._sPrettyPrintDelayedCallID) {
							clearTimeout(this._sPrettyPrintDelayedCallID);
						}
						this._sPrettyPrintDelayedCallID = setTimeout(function () {
							// The event is called even if all the sub-sections are un-stashed so apply the class and prettyPrint only when we have un-processed targets.
							var $aNotApplied = jQuery('.sapUxAPObjectPageContainer .APIDetailMethodsSection pre:not(.prettyprint)', this._objectPage.$());
							if ($aNotApplied.length > 0) {
								$aNotApplied.addClass('prettyprint');
								window.prettyPrint();
							}
						}.bind(this), 200);
					}, this);

					// Init scrolling right after busy indicator is cleared and prettify is ready
					setTimeout(function () {

						if (this._sEntityType) {
							this._scrollToEntity(this._sEntityType, this._sEntityId);
						}

						// Add listener's with a slight delay so they don't break scroll to entity
						setTimeout(function () {
							this._objectPage.attachEvent("_sectionChange", function (oEvent) {
								var oSection = oEvent.getParameter("section"),
									oSubSection = oEvent.getParameter("subSection");

								if (this._oNavigatingTo) {
									if (this._oNavigatingTo === oSubSection) {
										// Destination is reached
										this._oNavigatingTo = null;
									}

									return;
								}

								this._modifyURL(oSection, oSubSection, false);
							}, this);

							this._objectPage.attachEvent("navigate", function (oEvent) {
								var oSection = oEvent.getParameter("section"),
									oSubSection = oEvent.getParameter("subSection");

								this._oNavigatingTo = oSubSection;
								this._modifyURL(oSection, oSubSection, true);
							}, this);
						}.bind(this), 500);

					}.bind(this), 1000);
				}.bind(this), 0);

				this.searchResultsButtonVisibilitySwitch(this.byId("apiDetailBackToSearch"));
			}
function (oReferences) {

				// Setup
				this._sTopicId = oReferences.sTopicId;
				this._oModel = oReferences.oModel;
				this._oControlData = this._oModel.getData();
				this._aApiIndex = oReferences.aApiIndex;
				this._aAllowedMembers = oReferences.aAllowedMembers;
				this._sEntityType = oReferences.sEntityType;
				this._sEntityId = oReferences.sEntityId;
				this._oEntityData = oReferences.oEntityData;
				this._oContainerController = oReferences.oContainerController;
				this._oContainerView = oReferences.oContainerView;

				// Override instance getOwnerComponent so correct component will be used for the controller
				this.getOwnerComponent = function () {
					return oReferences.oOwnerComponent;
				};

				// Cache router instance
				this._oRouter = this.getRouter();

				// Attach the model to the view
				this.setModel(this._oModel);

				// Build needed resources and pre-process data
				this._oEntityData.appComponent = this._oControlData.component || this.NOT_AVAILABLE;
				this._oEntityData.hasSample = this._oControlData.hasSample;
				this._oEntityData.sample = this._oControlData.hasSample ? this._sTopicId : this.NOT_AVAILABLE;

				this._buildHeaderLayout(this._oControlData, this._oEntityData);

				setTimeout(function () {
					// Initial prettify
					this._prettify();

					// Attach prettify for un-stashed sub sections
					this._objectPage.attachEvent("subSectionEnteredViewPort", function () {
						// Clear previous calls if any
						if (this._sPrettyPrintDelayedCallID) {
							clearTimeout(this._sPrettyPrintDelayedCallID);
						}
						this._sPrettyPrintDelayedCallID = setTimeout(function () {
							// The event is called even if all the sub-sections are un-stashed so apply the class and prettyPrint only when we have un-processed targets.
							var $aNotApplied = jQuery('.sapUxAPObjectPageContainer .APIDetailMethodsSection pre:not(.prettyprint)', this._objectPage.$());
							if ($aNotApplied.length > 0) {
								$aNotApplied.addClass('prettyprint');
								window.prettyPrint();
							}
						}.bind(this), 200);
					}, this);

					// Init scrolling right after busy indicator is cleared and prettify is ready
					setTimeout(function () {

						if (this._sEntityType) {
							this._scrollToEntity(this._sEntityType, this._sEntityId);
						}

						// Add listener's with a slight delay so they don't break scroll to entity
						setTimeout(function () {
							this._objectPage.attachEvent("_sectionChange", function (oEvent) {
								var oSection = oEvent.getParameter("section"),
									oSubSection = oEvent.getParameter("subSection");

								if (this._oNavigatingTo) {
									if (this._oNavigatingTo === oSubSection) {
										// Destination is reached
										this._oNavigatingTo = null;
									}

									return;
								}

								this._modifyURL(oSection, oSubSection, false);
							}, this);

							this._objectPage.attachEvent("navigate", function (oEvent) {
								var oSection = oEvent.getParameter("section"),
									oSubSection = oEvent.getParameter("subSection");

								this._oNavigatingTo = oSubSection;
								this._modifyURL(oSection, oSubSection, true);
							}, this);
						}.bind(this), 500);

					}.bind(this), 1000);
				}.bind(this), 0);

				this.searchResultsButtonVisibilitySwitch(this.byId("apiDetailBackToSearch"));
			}
function ( oReferences ) { // Setup this . _sTopicId = oReferences . sTopicId ; this . _oModel = oReferences . oModel ; this . _oControlData = this . _oModel . getData ( ) ; this . _aApiIndex = oReferences . aApiIndex ; this . _aAllowedMembers = oReferences . aAllowedMembers ; this . _sEntityType = oReferences . sEntityType ; this . _sEntityId = oReferences . sEntityId ; this . _oEntityData = oReferences . oEntityData ; this . _oContainerController = oReferences . oContainerController ; this . _oContainerView = oReferences . oContainerView ; // Override instance getOwnerComponent so correct component will be used for the controller this . getOwnerComponent = function ( ) { return oReferences . oOwnerComponent ; } ; // Cache router instance this . _oRouter = this . getRouter ( ) ; // Attach the model to the view this . setModel ( this . _oModel ) ; // Build needed resources and pre-process data this . _oEntityData . appComponent = this . _oControlData . component || this . NOT_AVAILABLE ; this . _oEntityData . hasSample = this . _oControlData . hasSample ; this . _oEntityData . sample = this . _oControlData . hasSample ? this . _sTopicId : this . NOT_AVAILABLE ; this . _buildHeaderLayout ( this . _oControlData , this . _oEntityData ) ; setTimeout ( function ( ) { // Initial prettify this . _prettify ( ) ; // Attach prettify for un-stashed sub sections this . _objectPage . attachEvent ( "subSectionEnteredViewPort" , function ( ) { // Clear previous calls if any if ( this . _sPrettyPrintDelayedCallID ) { clearTimeout ( this . _sPrettyPrintDelayedCallID ) ; } this . _sPrettyPrintDelayedCallID = setTimeout ( function ( ) { // The event is called even if all the sub-sections are un-stashed so apply the class and prettyPrint only when we have un-processed targets. var $aNotApplied = jQuery ( '.sapUxAPObjectPageContainer .APIDetailMethodsSection pre:not(.prettyprint)' , this . _objectPage . $ ( ) ) ; if ( $aNotApplied . length > 0 ) { $aNotApplied . addClass ( 'prettyprint' ) ; window . prettyPrint ( ) ; } } . bind ( this ) , 200 ) ; } , this ) ; // Init scrolling right after busy indicator is cleared and prettify is ready setTimeout ( function ( ) { if ( this . _sEntityType ) { this . _scrollToEntity ( this . _sEntityType , this . _sEntityId ) ; } // Add listener's with a slight delay so they don't break scroll to entity setTimeout ( function ( ) { this . _objectPage . attachEvent ( "_sectionChange" , function ( oEvent ) { var oSection = oEvent . getParameter ( "section" ) , oSubSection = oEvent . getParameter ( "subSection" ) ; if ( this . _oNavigatingTo ) { if ( this . _oNavigatingTo === oSubSection ) { // Destination is reached this . _oNavigatingTo = null ; } return ; } this . _modifyURL ( oSection , oSubSection , false ) ; } , this ) ; this . _objectPage . attachEvent ( "navigate" , function ( oEvent ) { var oSection = oEvent . getParameter ( "section" ) , oSubSection = oEvent . getParameter ( "subSection" ) ; this . _oNavigatingTo = oSubSection ; this . _modifyURL ( oSection , oSubSection , true ) ; } , this ) ; } . bind ( this ) , 500 ) ; } . bind ( this ) , 1000 ) ; } . bind ( this ) , 0 ) ; this . searchResultsButtonVisibilitySwitch ( this . byId ( "apiDetailBackToSearch" ) ) ; }
/* =========================================================== /* lifecycle methods /* ===========================================================
/ * =========================================================== / * lifecycle methods / * ===========================================================
Initializes the data structures for the control and the view