UI

参考URL: https://developer.mozilla.org/en/Jetpack/UI

Menu

参考URL: https://developer.mozilla.org/en/Jetpack/UI/Menu
参考URL: https://wiki.mozilla.org/Labs/Jetpack/JEP/14

ツールメニューやコンテキストメニューなどのメニュー群を扱います。

ピクチャ 6



※メニューAPIは全て確定ではないので、以下のようにインポートしてから利用します。

jetpack.future.import("menu");

コード例:

jetpack.future.import("menu");
jetpack.menu.context.page.on("a").add(function (context) ({
  label: "Jetpacker!",
  command: function () console.log("押したのは::"+context.node.href)
}));

Constructors

空のメニューを作る : jetpack.Menu()

var menu = new jetpack.Menu();

アイテム付きでメニューを作る : jetpack.Menu(menuitems)

var menu = new jetpack.Menu(["メニュー1", "メニュー2", "メニュー3"]);

プロパティ付きでメニューを作る : jetpack.Menu(properties)

var menu = new jetpack.Menu({
        label: "sample menus",
        beforeShow: function (menu) {
          console.info("表示の前に呼ばれますわ。");  
        }  
}) ;

上記メニューを「ツール」メニューに装着

ピクチャ 2

var menu = new jetpack.Menu({
        label: "sample menus",
        beforeShow: function (menu) {
          console.info("表示の前に呼ばれますわ。");  
        }  
}) ;
jetpack.menu.tools.add(menu);

Properties

メニュー表示前に呼ばれます : beforeShow

以下は、メニューのラベルを現在時刻にするサンプルです。

var menu = new jetpack.Menu({
        beforeShow: function (menu) {
            menu.set(new Date().toString());
        }  
}) ;

メニューが非表示になる前に呼ばれます : beforeHide

var menu = new jetpack.Menu({
        beforeHide: function (menu) {
            console.info("メニューが消される前に呼ばれるっす。");
        }  
}) ;

メニューの表示状態です : isShowing

if (menu.isShowing == true) {
    //表示中
} else {
    //非表示中
}

メニューの持つアイテム配列 : items

console.info("メニューが持つアイテム数は:"+menu.items.length);

Methods

メニューの末尾にアイテムを追加します : add(items)

例では「ファイル」メニューに追加しています。

ピクチャ 3

var items = ["追加1", "追加2"];
jetpack.menu.file.add(items);

メニューから全てのアイテムを削除します : clear()

menu.clear();

:contextOn(node)

メニューを非表示にします:hide()

menu.hide();

メニューアイテムを引数のtargetの上に追加します:insertBefore(newItems, target)

ピクチャ 4

//「オフライン作業」の上に item1 を追加
var items1 = ["item1"];
jetpack.menu.file.insertBefore(items1, "オフライン作業");

//正規表現で id や xulid を指定できるとあるんだけど、うまくいかないなぁ。
//var items2 = ["item2"];
//jetpack.menu.file.insertBefore(items2, /menu_newNavigator/);

//指定したインデックスにアイテムを挿入
//0 は一番上
var items3 = ["item3"];
jetpack.menu.file.insertBefore(items3, 0);
//マイナスは一番下のメニューからの順番(一番下に入れる場合は add を使う)
var items4 = ["item4"];
jetpack.menu.file.insertBefore(items4, -1);

target で指定されたアイテムを返します:item(target)

//0番目のアイテム、つまり一番上のアイテムを取る
var item = jetpack.menu.file.item(0);

:popupOn(node)

target で指定したアイテムをメニューから取り外します:remove(target)

//一番上のアイテムを取り外す
jetpack.menu.file.remove(0);

target で指定したアイテムと newItems を入れ替えます:replace(target, newItems)

サンプルでは オフライン作業 と item1 item2 を入れ替えます。

ピクチャ 5

var items = ["item1", "item2"];
jetpack.menu.file.replace("オフライン作業", items);

メニューをリセットします:reset()

//Jetpack で操作する前の状態に戻ります
jetpack.menu.file.reset();

//Jetpack で作った menu に対しては clear() と同じ意味を持ちます。

メニューのアイテムを items に差し替える:set(items)

var items = ["item1", "item2"];
menu.set(items);

メニューを即座に表示します:show(anchorNode)

//anchorNode は DOM NODE あるいは NODE をくるんだ jQuery オブジェクトが入ります。
menu.show(anchorNode);

Menuitems

メニューに追加できるアイテムの属性例です。

ピクチャ 6

var item = {
  command: function() {
    //このメニューアイテムが選ばれたときに、この function が呼ばれます。
    console.info("ここ");
  }, 
  disabled: true, //false であれば有効になります。
  icon: "/wp-content/themes/modest/images/footer-logo.png", //メニューアイコン
  label: "アイテムのラベル",
  mnemonic: "A", //ショートカットキー
  xulId: "sample_menu_item1" //xulid を指定できます
}

var separator = {
    type: "separator" // ここに入れられるのは "separator" のみ。これが指定されるとセパレータになる。
}

var item2 = {
  disabled: false,
  icon: "/wp-content/themes/modest/images/footer-logo.png", //メニューアイコン
  label: "アイテムのラベル2"
}

jetpack.menu.file.add(item);
jetpack.menu.file.add(separator);
jetpack.menu.file.add(item2);

Menu bar menus

定義されている menu 群

jetpack.menu.file

ピクチャ 7

var items = ["Jetpacker!"];
jetpack.menu.file.add(items);

jetpack.menu.edit

ピクチャ 8

var items = ["Jetpacker!"];
jetpack.menu.edit.add(items);

jetpack.menu.view

ピクチャ 9

var items = ["Jetpacker!"];
jetpack.menu.view.add(items);

jetpack.menu.history

ピクチャ 10

var items = ["Jetpacker!"];
jetpack.menu.history.add(items);

jetpack.menu.bookmarks

ピクチャ 11

var items = ["Jetpacker!"];
jetpack.menu.bookmarks.add(items);

jetpack.menu.tools

ピクチャ 12

var items = ["Jetpacker!"];
jetpack.menu.tools.add(items);