-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathaction.shrinkTab.js
More file actions
79 lines (67 loc) · 2.52 KB
/
action.shrinkTab.js
File metadata and controls
79 lines (67 loc) · 2.52 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
// ----[Usage]--------------------------------------------------
// click : shrink(bookmark and close) tab
// shift + click : shrink all tabs
// right click : remove folder
(function(){
var folders;
var bookmark = models.FirefoxBookmark;
var NAME = 'Shrink Tab';
var children = [
{name : '----'},
{
name : 'Add destination folder',
execute : function(){
var res = input({
'Folder name' : ''
}, NAME + ' - ' + this.name);
if(!res)
return;
folders.push(values(res)[0]);
saveFolders();
}
}
];
Tombloo.Service.actions.register({
name : NAME,
type : 'context',
icon : "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAIRSURBVDjLhZM7a5RBFIafme9bv2TjxkS8IN5SWGgKu8QmhYWFbf6DtT8kVoGAKQRBC8HextrGQhDBxoioSJSV7Gbdze53OTOvxV6yaogHXoY5HJ55z5kZJ4mjwjl3BTgPuHEKGBc3ga+SIpKOFLBSlmVhZppWnufa2traBJYAfxxg1cw0GAzU7XbVbrfVbDZlZur3+9re3t4EltwxLaya2WszI8aImVEUBYuLi5OaNE1vef4TSZLgvSdJErIso9Pp0Gq1DiEfXqy8nZlfXnZumiWePbjZHDkhSZKxK5xzmNkhwMlfv7z2uOacG81Y4BxXeXlxqh2SJME5N9lPAJhyYpkVPx4SygT8PM418MnC3zP5BzQEVM7HUGBFDUVRtd/T//6Rxm6TLztzSAFZCUR8fQEUSE6d5tLdpyOA04xCTjVwqDyg6omzaxsspheoz51k+pbGJ39+vj7twJPOnmPhxj0ggoSIFDv36ac1UPhjuLPXHiGJEEIPCCmVpJAT++9Q6KDQRbZPYXWqQY7HhmACMQbK1i69vW/Ksuw20EwpkKIRq5/IOkOI7VOfdZC5oSMZqEKxot6oMZN5k/Rm2EIpOQKyFrL9oUIH4mAE66LwC4UDFHNQDjb5VKQqY9v6e/Wqd6JBbHipBrEBOoNCAZTID1fnA6HoSWUsDgF5sfFpe30VcQdH49h3LcC9Kol6Mk79BmoIbLI/IOsSAAAAAElFTkSuQmCC",
children : children,
}, '----');
loadFolders();
function saveFolders(){
setPref('action.shrinkTab.folders', uneval(folders));
updateMenus();
}
function loadFolders(){
folders = getPref('action.shrinkTab.folders');
folders = (folders)? eval(folders) : [];
updateMenus();
}
function updateMenus(){
// 初期メニュー以外をクリア
children.splice(0, children.length - 2);
folders.forEach(function(folder){
// 定義順に並べて追加する
children.splice(-2, 0, {
name : folder,
execute : function(ctx){
// 右クリック
if(ctx.originalEvent.button != 0){
if(input('Remove "' + folder + '" from menu?', NAME + ' - Remove destination folder')){
folders.splice(folders.indexOf(folder), 1);
saveFolders();
}
return;
}
getMostRecentWindow().getBrowser().removeCurrentTab();
bookmark.addBookmark({
uri : ctx.href,
title : ctx.title,
folder : folder,
index : 0,
});
}
});
});
}
})()