3 * A widget for the footer for the default view, allowing to switch views
5 * @extends OO.ui.Widget
8 * @param {mw.rcfilters.Controller} controller Controller
9 * @param {mw.rcfilters.dm.FiltersViewModel} model View model
10 * @param {Object} [config] Configuration object
12 mw
.rcfilters
.ui
.ViewSwitchWidget
= function MwRcfiltersUiViewSwitchWidget( controller
, model
, config
) {
13 config
= config
|| {};
16 mw
.rcfilters
.ui
.ViewSwitchWidget
.parent
.call( this, config
);
18 this.controller
= controller
;
21 this.buttons
= new OO
.ui
.ButtonGroupWidget( {
23 new OO
.ui
.ButtonWidget( {
26 label
: mw
.msg( 'namespaces' )
28 new OO
.ui
.ButtonWidget( {
31 label
: mw
.msg( 'rcfilters-view-tags' )
37 this.model
.connect( this, { update
: 'onModelUpdate' } );
38 this.buttons
.aggregate( { click
: 'buttonClick' } );
39 this.buttons
.connect( this, { buttonClick
: 'onButtonClick' } );
42 .addClass( 'mw-rcfilters-ui-viewSwitchWidget' )
44 new OO
.ui
.LabelWidget( {
45 label
: mw
.msg( 'rcfilters-advancedfilters' )
48 .addClass( 'mw-rcfilters-ui-viewSwitchWidget-buttons' )
49 .append( this.buttons
.$element
)
55 OO
.inheritClass( mw
.rcfilters
.ui
.ViewSwitchWidget
, OO
.ui
.Widget
);
58 * Respond to model update event
60 mw
.rcfilters
.ui
.ViewSwitchWidget
.prototype.onModelUpdate = function () {
61 var currentView
= this.model
.getCurrentView();
63 this.buttons
.getItems().forEach( function ( buttonWidget
) {
64 buttonWidget
.setActive( buttonWidget
.getData() === currentView
);
69 * Respond to button switch click
71 * @param {OO.ui.ButtonWidget} buttonWidget Clicked button
73 mw
.rcfilters
.ui
.ViewSwitchWidget
.prototype.onButtonClick = function ( buttonWidget
) {
74 this.controller
.switchView( buttonWidget
.getData() );