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 mw
.rcfilters
.ui
.GroupWidget( {
26 new OO
.ui
.ButtonWidget( {
29 label
: mw
.msg( 'namespaces' )
31 new OO
.ui
.ButtonWidget( {
34 label
: mw
.msg( 'rcfilters-view-tags' )
40 this.model
.connect( this, { update
: 'onModelUpdate' } );
41 this.buttons
.connect( this, { buttonClick
: 'onButtonClick' } );
44 .addClass( 'mw-rcfilters-ui-viewSwitchWidget' )
46 new OO
.ui
.LabelWidget( {
47 label
: mw
.msg( 'rcfilters-advancedfilters' )
50 .addClass( 'mw-rcfilters-ui-viewSwitchWidget-buttons' )
51 .append( this.buttons
.$element
)
57 OO
.inheritClass( mw
.rcfilters
.ui
.ViewSwitchWidget
, OO
.ui
.Widget
);
60 * Respond to model update event
62 mw
.rcfilters
.ui
.ViewSwitchWidget
.prototype.onModelUpdate = function () {
63 var currentView
= this.model
.getCurrentView();
65 this.buttons
.getItems().forEach( function ( buttonWidget
) {
66 buttonWidget
.setActive( buttonWidget
.getData() === currentView
);
71 * Respond to button switch click
73 * @param {OO.ui.ButtonWidget} buttonWidget Clicked button
75 mw
.rcfilters
.ui
.ViewSwitchWidget
.prototype.onButtonClick = function ( buttonWidget
) {
76 this.controller
.switchView( buttonWidget
.getData() );