From 9efcf8bfb146853bdd0507632af0ec556c5d922a Mon Sep 17 00:00:00 2001 From: Andrew O'Brien Date: Fri, 6 May 2011 11:29:54 -0400 Subject: [PATCH] Added support for activate/deactivate functions in LanguageDefinition so that languages that have a client-side component can setup and teardown UI elements. --- .../public/javascript/editor/gollum.editor.js | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/lib/gollum/frontend/public/javascript/editor/gollum.editor.js b/lib/gollum/frontend/public/javascript/editor/gollum.editor.js index 48309285..55ee11d4 100755 --- a/lib/gollum/frontend/public/javascript/editor/gollum.editor.js +++ b/lib/gollum/frontend/public/javascript/editor/gollum.editor.js @@ -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