Places のコンテキストメニューに項目追加

<menupopup id="placesContext">
    <menuitem label="サンプル"
        oncommand="function();"
        selectiontype="single"
        selection="bookmark|folder"
        insertbefore="placesContext_openSeparator"/>
</menupopup>
placesContext は chrome://browser/content/places/placesOverlay.xulに書かれているので、それを overlay してやればいい。

表示非表示の切り替え

onpopupshowing なんて使わなくても属性を設定するだけで簡単に表示の切り替えが出来る。places/controller.js に実装されている。
属性 説明
selectiontype single/multiple のいずれか。単数/複数選択で表示
selection 下記の表の値。"|"で複数指定可能。条件が合えば表示
forcehideselection 下記の表の値。"|"で複数指定可能。条件が合えば隠す
hideifnoinsetionpoint 値はtrue固定。挿入する場所が無いと隠す。例えばクエリフォルダ内にアイテムの新規作成とか

selection や forcehideselection に設定できる値のリスト
説明
query nsINavHistoryResultNode で RESULT_TYPE_QUERY
  host nsINavHistoryQueryOptions で RESULTS_AS_SITE_QUERY
  day これは RESULTS_AS_DATE_QUER か RESULTS_AS_DATE_SITE_QUERY
dynamiccontainer RESULT_TYPE_DYNAMIC_CONTAINER
folder フォルダ
separator セパレーター
link RESULT_TYPE_URI、RESULT_TYPE_VISIT、RESULT_TYPE_FULL_VISIT
  bookmark ブックマーク
  microsummary
  tagChild
  livemarkChild


右クリックメニューから、選択されてるノードを取得する

var view = PlacesUIUtils.getViewForNode(document.popupNode);
var node = view.selectedNode;    // single の場合
var nodes = view.selectedNodes;  // multiple の場合
PlacesUIUtils.getViewForNode が超便利。
view は tree要素。places/tree.xml にプロパティやメソッドが定義されてる。
node はnsINavHistoryResultNode。nodes はその配列。

タグ:

+ タグ編集
  • タグ:
最終更新:2014年11月03日 17:03