function () {
				var oEntityModel, oDeviceModel, oFilterModel,
					fnOnDataReady = function (oControlsData) {
						this._oView.getModel().setData({
							entityCount : oControlsData.entityCount,
							entities : oControlsData.entities
						});
						this.getModel("filter").setData(oControlsData.filter);
						this._toggleListItem(this._getItemToSelect(), true);
					}.bind(this);

				this._oRouter = this.getRouter();

				// Keep track if navigation happens via selecting items manually within the List
				this._bNavToEntityViaList = false;

				// Cache view reference
				this._oView = this.getView();

				ControlsInfo.loadData().then(fnOnDataReady);

				oEntityModel = new JSONModel();
				oEntityModel.setSizeLimit(100000);
				this._oView.setModel(oEntityModel);

				oDeviceModel = new JSONModel({
					listMode : (Device.system.phone) ? "None" : "SingleSelectMaster",
					listItemType : (Device.system.phone) ? "Active" : "Inactive"
				});
				oDeviceModel.setDefaultBindingMode("OneWay");
				this._oView.setModel(oDeviceModel, "viewModel");

				// Init Filter model
				oFilterModel = new JSONModel();
				oFilterModel.setSizeLimit(100000);
				this.setModel(oFilterModel, "filter");

				this._vsFilterBar = this._oView.byId("vsFilterBar");
				this._vsFilterLabel = this._oView.byId("vsFilterLabel");

				this._oRouter.getRoute("listFilter").attachPatternMatched(this._onFilterMatched, this);
				this._oRouter.getRoute("group").attachPatternMatched(this._onGroupMatched, this);
				this._oRouter.getRoute("entity").attachPatternMatched(this._onEntityMatched, this);
				this._oRouter.getRoute("sample").attachPatternMatched(this._onSampleMatched, this);
				this._oRouter.getRoute("code").attachPatternMatched(this._onSampleMatched, this);
				this._oRouter.getRoute("codeFile").attachPatternMatched(this._onSampleMatched, this);
				this._oRouter.getRoute("controls").attachPatternMatched(this._onControlsMatched, this);
				this._oRouter.getRoute("controlsMaster").attachPatternMatched(this._onControlsMasterMatched, this);

				this.LIST_SCROLL_DURATION = 0; // ms

				//DOM rendering delay is used before calling scroll, to ensure scroll is applied to the final DOM
				//DOM rendering delay value is minimal by default, but some function may increase it if that function calls intensive DOM operation
				// (e.g. RTL change, that leads to new CSS to be requested and applied on entire DOM)
				this._iDomRenderingDelay = 0; // (ms)
				this._getList().addEventDelegate({
					onAfterRendering : function() {
						setTimeout(this._scrollToSelectedListItem.bind(this), this._iDomRenderingDelay);
					}}, this);
				this._oCore.attachThemeChanged(this._scrollToSelectedListItem, this); // theme change requires us to restore scroll position
				this._oCore.attachLocalizationChanged(this._onLocalizationChange, this);

				// Subscribe to view event to apply to it the current configuration
				this._oView.addEventDelegate({
					onBeforeFirstShow: this.onBeforeFirstShow.bind(this)
				});

				// subscribe to app events
				this._oComponent = this.getOwnerComponent();
				this._oRootView = this.getRootView();

				switch (this._oComponent.getContentDensityClass()) {
					case "sapUiSizeCompact":
						this._oViewSettings.densityMode = COMPACT;
						break;
					case "sapUiSizeCondensed":
						this._oViewSettings.densityMode = CONDENSED;
						break;
					default:
						this._oViewSettings.densityMode = COZY;
				}

				this._oViewSettings.rtl = this._oCore.getConfiguration().getRTL();

				// Keep default settings for density mode up to date
				this._oDefaultSettings.densityMode = this._oViewSettings.densityMode;
				this._oDefaultSettings.rtl = this._oViewSettings.rtl;

				this._initListSettings();
			}
function () {
				var oEntityModel, oDeviceModel, oFilterModel,
					fnOnDataReady = function (oControlsData) {
						this._oView.getModel().setData({
							entityCount : oControlsData.entityCount,
							entities : oControlsData.entities
						});
						this.getModel("filter").setData(oControlsData.filter);
						this._toggleListItem(this._getItemToSelect(), true);
					}.bind(this);

				this._oRouter = this.getRouter();

				// Keep track if navigation happens via selecting items manually within the List
				this._bNavToEntityViaList = false;

				// Cache view reference
				this._oView = this.getView();

				ControlsInfo.loadData().then(fnOnDataReady);

				oEntityModel = new JSONModel();
				oEntityModel.setSizeLimit(100000);
				this._oView.setModel(oEntityModel);

				oDeviceModel = new JSONModel({
					listMode : (Device.system.phone) ? "None" : "SingleSelectMaster",
					listItemType : (Device.system.phone) ? "Active" : "Inactive"
				});
				oDeviceModel.setDefaultBindingMode("OneWay");
				this._oView.setModel(oDeviceModel, "viewModel");

				// Init Filter model
				oFilterModel = new JSONModel();
				oFilterModel.setSizeLimit(100000);
				this.setModel(oFilterModel, "filter");

				this._vsFilterBar = this._oView.byId("vsFilterBar");
				this._vsFilterLabel = this._oView.byId("vsFilterLabel");

				this._oRouter.getRoute("listFilter").attachPatternMatched(this._onFilterMatched, this);
				this._oRouter.getRoute("group").attachPatternMatched(this._onGroupMatched, this);
				this._oRouter.getRoute("entity").attachPatternMatched(this._onEntityMatched, this);
				this._oRouter.getRoute("sample").attachPatternMatched(this._onSampleMatched, this);
				this._oRouter.getRoute("code").attachPatternMatched(this._onSampleMatched, this);
				this._oRouter.getRoute("codeFile").attachPatternMatched(this._onSampleMatched, this);
				this._oRouter.getRoute("controls").attachPatternMatched(this._onControlsMatched, this);
				this._oRouter.getRoute("controlsMaster").attachPatternMatched(this._onControlsMasterMatched, this);

				this.LIST_SCROLL_DURATION = 0; // ms

				//DOM rendering delay is used before calling scroll, to ensure scroll is applied to the final DOM
				//DOM rendering delay value is minimal by default, but some function may increase it if that function calls intensive DOM operation
				// (e.g. RTL change, that leads to new CSS to be requested and applied on entire DOM)
				this._iDomRenderingDelay = 0; // (ms)
				this._getList().addEventDelegate({
					onAfterRendering : function() {
						setTimeout(this._scrollToSelectedListItem.bind(this), this._iDomRenderingDelay);
					}}, this);
				this._oCore.attachThemeChanged(this._scrollToSelectedListItem, this); // theme change requires us to restore scroll position
				this._oCore.attachLocalizationChanged(this._onLocalizationChange, this);

				// Subscribe to view event to apply to it the current configuration
				this._oView.addEventDelegate({
					onBeforeFirstShow: this.onBeforeFirstShow.bind(this)
				});

				// subscribe to app events
				this._oComponent = this.getOwnerComponent();
				this._oRootView = this.getRootView();

				switch (this._oComponent.getContentDensityClass()) {
					case "sapUiSizeCompact":
						this._oViewSettings.densityMode = COMPACT;
						break;
					case "sapUiSizeCondensed":
						this._oViewSettings.densityMode = CONDENSED;
						break;
					default:
						this._oViewSettings.densityMode = COZY;
				}

				this._oViewSettings.rtl = this._oCore.getConfiguration().getRTL();

				// Keep default settings for density mode up to date
				this._oDefaultSettings.densityMode = this._oViewSettings.densityMode;
				this._oDefaultSettings.rtl = this._oViewSettings.rtl;

				this._initListSettings();
			}
function ( ) { var oEntityModel , oDeviceModel , oFilterModel , fnOnDataReady = function ( oControlsData ) { this . _oView . getModel ( ) . setData ( { entityCount : oControlsData . entityCount , entities : oControlsData . entities } ) ; this . getModel ( "filter" ) . setData ( oControlsData . filter ) ; this . _toggleListItem ( this . _getItemToSelect ( ) , true ) ; } . bind ( this ) ; this . _oRouter = this . getRouter ( ) ; // Keep track if navigation happens via selecting items manually within the List this . _bNavToEntityViaList = false ; // Cache view reference this . _oView = this . getView ( ) ; ControlsInfo . loadData ( ) . then ( fnOnDataReady ) ; oEntityModel = new JSONModel ( ) ; oEntityModel . setSizeLimit ( 100000 ) ; this . _oView . setModel ( oEntityModel ) ; oDeviceModel = new JSONModel ( { listMode : ( Device . system . phone ) ? "None" : "SingleSelectMaster" , listItemType : ( Device . system . phone ) ? "Active" : "Inactive" } ) ; oDeviceModel . setDefaultBindingMode ( "OneWay" ) ; this . _oView . setModel ( oDeviceModel , "viewModel" ) ; // Init Filter model oFilterModel = new JSONModel ( ) ; oFilterModel . setSizeLimit ( 100000 ) ; this . setModel ( oFilterModel , "filter" ) ; this . _vsFilterBar = this . _oView . byId ( "vsFilterBar" ) ; this . _vsFilterLabel = this . _oView . byId ( "vsFilterLabel" ) ; this . _oRouter . getRoute ( "listFilter" ) . attachPatternMatched ( this . _onFilterMatched , this ) ; this . _oRouter . getRoute ( "group" ) . attachPatternMatched ( this . _onGroupMatched , this ) ; this . _oRouter . getRoute ( "entity" ) . attachPatternMatched ( this . _onEntityMatched , this ) ; this . _oRouter . getRoute ( "sample" ) . attachPatternMatched ( this . _onSampleMatched , this ) ; this . _oRouter . getRoute ( "code" ) . attachPatternMatched ( this . _onSampleMatched , this ) ; this . _oRouter . getRoute ( "codeFile" ) . attachPatternMatched ( this . _onSampleMatched , this ) ; this . _oRouter . getRoute ( "controls" ) . attachPatternMatched ( this . _onControlsMatched , this ) ; this . _oRouter . getRoute ( "controlsMaster" ) . attachPatternMatched ( this . _onControlsMasterMatched , this ) ; this . LIST_SCROLL_DURATION = 0 ; // ms //DOM rendering delay is used before calling scroll, to ensure scroll is applied to the final DOM //DOM rendering delay value is minimal by default, but some function may increase it if that function calls intensive DOM operation // (e.g. RTL change, that leads to new CSS to be requested and applied on entire DOM) this . _iDomRenderingDelay = 0 ; // (ms) this . _getList ( ) . addEventDelegate ( { onAfterRendering : function ( ) { setTimeout ( this . _scrollToSelectedListItem . bind ( this ) , this . _iDomRenderingDelay ) ; } } , this ) ; this . _oCore . attachThemeChanged ( this . _scrollToSelectedListItem , this ) ; // theme change requires us to restore scroll position this . _oCore . attachLocalizationChanged ( this . _onLocalizationChange , this ) ; // Subscribe to view event to apply to it the current configuration this . _oView . addEventDelegate ( { onBeforeFirstShow : this . onBeforeFirstShow . bind ( this ) } ) ; // subscribe to app events this . _oComponent = this . getOwnerComponent ( ) ; this . _oRootView = this . getRootView ( ) ; switch ( this . _oComponent . getContentDensityClass ( ) ) { case "sapUiSizeCompact" : this . _oViewSettings . densityMode = COMPACT ; break ; case "sapUiSizeCondensed" : this . _oViewSettings . densityMode = CONDENSED ; break ; default : this . _oViewSettings . densityMode = COZY ; } this . _oViewSettings . rtl = this . _oCore . getConfiguration ( ) . getRTL ( ) ; // Keep default settings for density mode up to date this . _oDefaultSettings . densityMode = this . _oViewSettings . densityMode ; this . _oDefaultSettings . rtl = this . _oViewSettings . rtl ; this . _initListSettings ( ) ; }
/* =========================================================== /* lifecycle methods /* =========================================================== 
Called when the master list controller is instantiated.
It sets up the event handling for the master/detail communication and other lifecycle tasks.
@public
/ * =========================================================== / * lifecycle methods / * =========================================================== Called when the master list controller is instantiated . It sets up the event handling for the master / detail communication and other lifecycle tasks .
Initializes the controls model