Ext.define('Pandora.controller.Song', { extend: 'Ext.app.Controller', refs: [{ ref: 'songInfo', selector: 'songinfo' }, { ref: 'recentlyPlayedScroller', selector: 'recentlyplayedscroller' }], stores: ['RecentSongs'], init: function() { this.control({ 'recentlyplayedscroller': { selectionchange: this.onSongSelect } }); this.application.on({ stationstart: this.onStationStart, scope: this }); }, onStationStart: function(station) { var store = this.getRecentSongsStore(); store.load({ callback: this.onRecentSongsLoad, params: { station: station.get('id') }, scope: this }); }, onRecentSongsLoad: function(songs, request) { var store = this.getRecentSongsStore(), selModel = this.getRecentlyPlayedScroller().getSelectionModel(); // The data should already be filtered on the serverside but since we // are loading static data we need to do this after we loaded all the data store.filter('station', request.params.station); store.sort('played_date', 'ASC'); selModel.select(store.last()); }, onSongSelect: function(selModel, selection) { this.getSongInfo().update(selection[0]); } });