Document settingsScreen of the JavaScript API Change-Id: I952a98f67a260ffae80f304432d3db4ef411a1e4 Signed-off-by: Edwin Kempin <ekempin@google.com>
diff --git a/Documentation/js-api.txt b/Documentation/js-api.txt index b52b374..9d2be27 100644 --- a/Documentation/js-api.txt +++ b/Documentation/js-api.txt
@@ -226,6 +226,29 @@ * callback: JavaScript function to invoke when the user navigates to the screen. The function will be passed a link:#ScreenContext[screen context]. +[[self_settingsScreen]] +=== self.settingsScreen() +Register a JavaScript callback to be invoked when the user navigates +to an extension settings screen provided by the plugin. Extension settings +screens are automatically linked from the settings menu under the given +menu entry. +The callback can populate the DOM with the screen's contents. + +.Signature +[source,javascript] +---- +self.settingsScreen(path, menu, callback); +---- + +* path: URL path to identify the settings screen. + +* menu: The name of the menu entry in the settings menu that should + link to the settings screen. + +* callback: JavaScript function to invoke when the user navigates to + the settings screen. The function will be passed a + link:#SettingsScreenContext[settings screen context]. + [[self_url]] === self.url() Returns a URL within the plugin's URL space. If invoked with no @@ -569,6 +592,68 @@ Destroy the currently visible screen and display the plugin's screen. This method must be called after adding content to `screen.body`. +[[SettingsScreenContext]] +== Settings Screen Context +A new settings screen context is passed to the `settingsScreen` callback +function each time the user navigates to a matching URL. + +[[settingsScreen_body]] +=== settingsScreen.body +Empty HTML `<div>` node the plugin should add its content to. The +node is already attached to the document, but is invisible. Plugins +must call `settingsScreen.show()` to display the DOM node. Deferred +display allows an implementor to partially populate the DOM, make +remote HTTP requests, finish populating when the callbacks arrive, and +only then make the view visible to the user. + +[[settingsScreen_onUnload]] +=== settingsScreen.onUnload() +Configures an optional callback to be invoked just before the screen +is deleted from the browser DOM. Plugins can use this callback to +remove event listeners from DOM nodes, preventing memory leaks. + +.Signature +[source,javascript] +---- +settingsScreen.onUnload(callback) +---- + +* callback: JavaScript function to be invoked just before the + `settingsScreen.body` DOM element is removed from the browser DOM. + This event happens when the user navigates to another screen. + +[[settingsScreen.setTitle]] +=== settingsScreen.setTitle() +Sets the heading text to be displayed when the screen is visible. +This is presented in a large bold font below the menus, but above the +content in `settingsScreen.body`. Setting the title also sets the +window title to the same string, if it has not already been set. + +.Signature +[source,javascript] +---- +settingsScreen.setPageTitle(titleText) +---- + +[[settingsScreen.setWindowTitle]] +=== settingsScreen.setWindowTitle() +Sets the text to be displayed in the browser's title bar when the +screen is visible. Plugins should always prefer this method over +trying to set `window.title` directly. The window title defaults to +the title given to `setTitle`. + +.Signature +[source,javascript] +---- +settingsScreen.setWindowTitle(titleText) +---- + +[[settingsScreen_show]] +=== settingsScreen.show() +Destroy the currently visible screen and display the plugin's screen. +This method must be called after adding content to +`settingsScreen.body`. + [[Gerrit]] == Gerrit