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