Added support for activate/deactivate functions in LanguageDefinition so that languages that have a client-side component can setup and teardown UI elements.

This commit is contained in:
Andrew O'Brien
2011-05-06 11:29:54 -04:00
parent 1ff486e16c
commit 9efcf8bfb1
@@ -162,6 +162,9 @@
},
setActiveLanguage: function( name ) {
if(LanguageDefinition.getHookFunctionFor("deactivate")) {
LanguageDefinition.getHookFunctionFor("deactivate")();
}
if ( !LanguageDefinition.isLoadedFor(name) ) {
LanguageDefinition._ACTIVE_LANG = null;
LanguageDefinition.loadFor( name, function(x, t) {
@@ -180,13 +183,33 @@
FormatSelector.updateSelected();
}
if(LanguageDefinition.getHookFunctionFor("activate")) {
LanguageDefinition.getHookFunctionFor("activate")();
}
} );
} else {
LanguageDefinition._ACTIVE_LANG = name;
FunctionBar.refresh();
if(LanguageDefinition.getHookFunctionFor("activate")) {
LanguageDefinition.getHookFunctionFor("activate")();
}
}
},
getHookFunctionFor: function(attr, specified_lang) {
if ( !specified_lang ) {
specified_lang = LanguageDefinition._ACTIVE_LANG;
}
if ( LanguageDefinition.isLoadedFor(specified_lang) &&
LanguageDefinition._LANG[specified_lang][attr] &&
typeof LanguageDefinition._LANG[specified_lang][attr] == 'function' ) {
return LanguageDefinition._LANG[specified_lang][attr];
}
return null;
},
/**
* gets a definition object for a specified attribute