Panorama:TabGroupsAPI

From MozillaWiki
Revision as of 09:34, 14 November 2011 by Raymondlee (talk | contribs)
Jump to navigation Jump to search

The purpose of this TabGroups API is to provide a simple storage for Panorama and its tab groups. Other add-ons which would like to access tab groups' data can use this API to do that.

Schema

Compatibility

Example

{windows: [{
  tabs: [
    {entries: [{url: "about:mozilla"}]},
    {entries: [{url: "http://example.com/#1"}],
     extData: {"tabgroups": "{\"group\": \"group1-id\", \"title\": \"first tab title\", 
                              \"url\": \"first tab url"}"}},
    {entries: [{url: "http://example.com/#2"}],
     extData: {"tabgroups": "{\"group\": \"group2-id\", \"title\": \"second tab title\", 
                              \"url\": \"second tab url"}, \"active\":\"last active tab in group it belongs\"}"}
  ],
  extData: {
    "tabgroups": "{\"group1-id\": {\"id\": \"group1-id\", \"title\": \"first title\", 
                                   \"bounds\": {\"left\": 35, \"top\": 45, \"width\": 330, \"height\": 310},
                                   \"userSize\": {\"x\": 330, \"y\": 310}}, 
                   \"group2-id\": {\"id\": \"group2-id\", \"title\": \"second title\",
                                   \"bounds": {\"left\": 450, \"top\": 45, \"width\": 330, \"height\": 310},
                                   \"userSize\": {\"x\": 330, \"y\": 310}}, 
                   \"additions\": {\"activeGroup\":\"group2-id\", \"showOnStartup\":true, 
                                   \"pageBounds\" :{\"left\":0, \"top\": 0, \"width\": 1000, \"height\": 750}}}"
  }
}]}

Applications

Panorama

Vertical Tabs

Tree Style Tabs

API Description

To use the TabGroups API, you first need to import the code module into your JavaScript scope:

Components.utils.import("resource:///modules/TabGroups.jsm");

Then you can obtain reference to it by simply accessing them from the TabGroups object exported by the code module. For example:

let allGroups = TabGroups.getGroups();  

Provided objects, methods and events

TabGroups
  [Methods]
    createGroup(DOMWindow aWindow)
    getGroups()
    getGroupsByWindow(DOMWindow aWindow)
    getWindowStorage(DOMWindow aWindow)

  [Events]
    tabgroup-added
    tabgroup-removed
    window-closing

TabGroup
  [Properties]
    id: string
    title: string
    tabs: xulTab[]
    storage: object

  [Methods]
    addTab(xulTab aTab)
    removeTab(xulTab aTab)
    getTabStorage(xul aTab)
    close()

  [Events]
    rename
    tab-added
    tab-removed
    close

Tab
  [Properties]
    storage: object