Core-Gadgets - MiniMessage
This is a DRAFT
<section title="The MiniMessage Feature (gadgets.MiniMessage)" anchor="gadgets.MiniMessage"> <t>The "MiniMessage" feature provides a simple mechanism for displaying temporary messages to users of a gadget. Such messages typically appear at the top of the area allocated by the container for display of the gadget and are dismissed either programmatically or by user action. Examples of typical uses of the MiniMessage feature include: <list style="symbols"> <t>Displaying temporary status messages: loading, saving, etc.</t> <t>Displaying promotional messages: new features, new gadget, etc.</t> <t>Displaying debug and error messages: bad input, failed connection to server, etc.</t> </list> </t> <t>Containers SHOULD support the "MiniMessage" feature.</t> <t>The "MiniMessage" feature is enabled by specifying feature="minimessage" within either a <Require> or <Optional> element within the <ModulePrefs>. JavaScript APIs are used to create and manipulate the messages. No parameters are specified for the MiniMessage feature.</t> <figure><preamble>In the partial gadget specification below, the "MiniMessage" feature is required and a simple message that dismisses automatically after 10 seconds is created:</preamble><artwork> <Module> <ModulePrefs> <Require feature="minimessage" /> </ModulePrefs> <Content type="html" ><[CDATA[ ... <script> ... var messages = new gadgets.MiniMessage(gadgets.Prefs.getModuleId()); var content = document.createElement('div'); content.innerHTML = "Welcome to my gadget."; messages.createTimerMessage(content, 10); ... </script> ... ]]></Content> </Module> </artwork></figure> <t>Typically, only a single <spanx style="verb">gadgets.MiniMessage</spanx> object needs to be created for each gadget view. Multiple messages can be created and managed by a single instance.</t> <t>By default, all messages will be displayed in a special reserved area provided by the container at the top of the area allocated to rendering the gadget. However, developers can select alternative locations either for all messages or specific individual messages by passing in additional parameters to the JavaScript API.</t> <figure><preamble>In the following example, all messages are rendered in an area dedicated by the gadget view for messages:</preamble><artwork> <Module> <ModulePrefs> <Require feature="minimessage" /> </ModulePrefs> <Content type="html" ><[CDATA[ ... <h2>Messages</h2> <div id="messages"></div> <script> ... var messages = new gadgets.MiniMessage( gadgets.Prefs.getModuleId(), document.getElementById("messages")); messages.createTimerMessage("This is my message", 10); ... </script> ... ]]></Content> </Module> </artwork></figure> <figure><preamble>Individual messages can be displayed anywhere within the gadget either by specifying the HTML markup directly within the gadget and referencing it when creating the message or by using DOM methods in JavaScript. For example, in the following example, a message is created and positioned individually:</preamble><artwork> <Module> <ModulePrefs> <Require feature="minimessage" /> </ModulePrefs> <Content type="html" ><[CDATA[ ... <div id="status">This message can be dismissed</div> <script> ... var messages = new gadgets.MiniMessage(gadgets.Prefs.getModuleId()); messages.createDismissableMessage(document.getElementById("status")); var div = document.createElement("div"); ... </script> ... ]]></Content> </Module> </artwork></figure> <section title="JavaScript API"> <t>When the "MiniMessage" feature is enabled for a gadget, the follow JavaScript objects and methods are provided:</t> <section title="The gadgets.MiniMessage Object" anchor="gadgets.MiniMessage.ctor"> <t>The <spanx style="verb">gadgets.MiniMessage</spanx> object is used to create and manage messages for a gadget. Typically, only a single instance of the object needs to be created for all messages within a given view.</t> <figure><preamble>Instances are created using the JavaScript "new" keyword:</preamble> <artwork> var messages = new gadgets.MiniMessage(id, container); </artwork></figure> <t>The object constructor takes two parameters, both of which are optional: <texttable align="left"> <ttcol>Name</ttcol> <ttcol>Type</ttcol> <ttcol>Description</ttcol> <c>id</c> <c>String</c> <c>The container provided unique identifier of the gadget instance. This value can be determined using the <spanx style="verb">gadgets.Prefs.getModuleId()</spanx> method.</c> <c>container</c> <c>HTMLElement</c> <c>An object reference to the HTML element, typically a <div> that will serve as the container for all messages managed by this MiniMessage instance.</c> </texttable> </t> <t>Once created, the <spanx style="verb">gadgets.MiniMessage</spanx> object provides four methods for working with messages.</t> <section title="gadgets.MiniMessage.createDismissibleMessage" anchor="gadgets.MiniMessage.createDismissibleMessage"> <t>Creates a "dismissible" message that includes a container defined icon that allows users to dismiss the message by clicking on it. When the message is, it is removed from the DOM and an optional callback function, if defined, is invoked.</t> <figure><artwork> <HTMLElement> gadgets.MiniMessage.createDismissibleMessage(message, callback) </artwork></figure> <t>Input Parameters: <texttable align="left"> <ttcol>Name</ttcol> <ttcol>Type</ttcol> <ttcol>Description</ttcol> <c>message</c> <c>String | Object</c> <c>The message as an HTML string or DOM element</c> <c>callback</c> <c>Function</c> <c>Optional callback function to be called when the message is dismissed. The callback function will not be called until after the existing callstack has completed execution.</c> </texttable> </t> <t>If creation of the message is successful, the method will return a reference to the HTMLElement that contains the created message.</t> </section> <section title="gadgets.MiniMessage.createStaticMessage" anchor="gadgets.MiniMessage.createStaticMessage"> <t>Creates a "static" message that can only by dismissed programmatically by calling the <spanx style="verb">gadgets.MiniMessage.dismissMessage</spanx> method.</t> <figure><artwork> <HTMLElement> gadgets.MiniMessage.createStatusMessage(message) </artwork></figure> <t>Input Parameters: <texttable align="left"> <ttcol>Name</ttcol> <ttcol>Type</ttcol> <ttcol>Description</ttcol> <c>message</c> <c>String | Object</c> <c>The message as an HTML string or DOM element</c> </texttable> </t> <t>If creation of the message is successful, the method will return a reference to the HTMLElement that contains the created message.</t> </section> <section title="gadgets.MiniMessage.createTimerMessage" anchor="gadgets.MiniMessage.createTimerMessage"> <t>Creates a message that displays for a specified number of seconds. When the timer expires, the message is dismissed automatically and an optional callback function, if provided, is invoked.</t> <figure><artwork> <HTMLElement> gadgets.MiniMessage.createTimerMessage(message, seconds, callback) </artwork></figure> <t>Input Parameters: <texttable align="left"> <ttcol>Name</ttcol> <ttcol>Type</ttcol> <ttcol>Description</ttcol> <c>message</c> <c>String | Object</c> <c>The message as an HTML string or DOM element</c> <c>seconds</c> <c>Number</c> <c>The number of seconds to wait before dismissing the message.</c> <c>callback</c> <c>Function</c> <c>Optional callback function to be called when the message is dismissed. The callback function will not be called until after the existing callstack has completed execution.</c> </texttable> </t> <t>If creation of the message is successful, the method will return a reference to the HTMLElement that contains the created message.</t> </section> <section title="gadgets.MiniMessage.dismissMessage" anchor="gadgets.MiniMessage.dismissMessage"> <t>Dismisses the specified message.</t> <figure><artwork> <Void> gadgets.MiniMessage.dismissMessage(message) </artwork></figure> <t>The method takes a single input parameter which is the HTMLElement of the message to dismiss as returned by one of the three creation messages.</t> </section> </section> </section> </section>