Panorama:TabGroupsAPI: Difference between revisions

From MozillaWiki
Jump to navigation Jump to search
Line 35: Line 35:


=== Panorama ===
=== Panorama ===
Panorama would use this TabGroups API to access the session storage for storing and retrieving tab groups' data.
=== Vertical Tabs ===
=== Vertical Tabs ===
=== Tree Style Tabs ===
=== Tree Style Tabs ===

Revision as of 10:01, 14 November 2011

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

An example of tab group' data stored in session storage for Panorama:

{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

Panorama would use this TabGroups API to access the session storage for storing and retrieving tab groups' data.

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)
    close()
    getTabStorage(xul aTab)

  [Events]
    rename
    tab-added
    tab-removed
    close

Tab
  [Properties]
    storage: object