サブツリーをブックマークに保存する処理についてライブラリを使うようにした
git-svn-id: http://www.cozmixng.org/repos/piro/treestyletab/trunk@4694 599a83e7-65a4-db11-8015-0010dcdd6dc2
This commit is contained in:
parent
107f0a254d
commit
a8c9189abc
@ -5,6 +5,9 @@ overlay chrome://browser/content/browser.xul chrome://treestyletab/content/trees
|
|||||||
overlay chrome://browser/content/bookmarks/bookmarksPanel.xul chrome://treestyletab/content/bookmarksOverlay.xul
|
overlay chrome://browser/content/bookmarks/bookmarksPanel.xul chrome://treestyletab/content/bookmarksOverlay.xul
|
||||||
overlay chrome://multipletab/content/config.xul chrome://treestyletab/content/multipletabConfigOverlay.xul
|
overlay chrome://multipletab/content/config.xul chrome://treestyletab/content/multipletabConfigOverlay.xul
|
||||||
|
|
||||||
|
overlay chrome://browser/content/browser.xul chrome://treestyletab/content/res/bookmarkMultipleTabs.xul
|
||||||
|
overlay chrome://browser/content/places/bookmarkProperties2.xul chrome://treestyletab/content/res/bookmarkMultipleTabs_bookmarkPropertiesOverlay.xul
|
||||||
|
|
||||||
style chrome://browser/content/browser.xul chrome://treestyletab/content/treestyletab-3.5.css appversion>=3.1
|
style chrome://browser/content/browser.xul chrome://treestyletab/content/treestyletab-3.5.css appversion>=3.1
|
||||||
|
|
||||||
locale treestyletab en-US jar:chrome/treestyletab.jar!/locale/en-US/treestyletab/
|
locale treestyletab en-US jar:chrome/treestyletab.jar!/locale/en-US/treestyletab/
|
||||||
|
115
content/treestyletab/res/bookmarkMultipleTabs.xul
Normal file
115
content/treestyletab/res/bookmarkMultipleTabs.xul
Normal file
@ -0,0 +1,115 @@
|
|||||||
|
<?xml version="1.0"?>
|
||||||
|
<!--
|
||||||
|
Bookmark Multiple Tabs library for Firefox 2 or later
|
||||||
|
|
||||||
|
Usage:
|
||||||
|
in chrome.manifest:
|
||||||
|
overlay chrome://browser/content/browser.xul
|
||||||
|
chrome://***/content/bookmarkMultipleTabs.xul
|
||||||
|
overlay chrome://browser/content/places/bookmarkProperties2.xul
|
||||||
|
chrome://***/content/bookmarkMultipleTabs_bookmarkPropertiesOverlay.xul
|
||||||
|
|
||||||
|
in JS files:
|
||||||
|
window['piro.sakura.ne.jp'].bookmarkMultipleTabs.addBookmarkFor(tabsArray, folderName);
|
||||||
|
|
||||||
|
lisence: The MIT License, Copyright (c) 2009 SHIMODA "Piro" Hiroshi
|
||||||
|
http://www.cozmixng.org/repos/piro/fx3-compatibility-lib/trunk/license.txt
|
||||||
|
original:
|
||||||
|
http://www.cozmixng.org/repos/piro/fx3-compatibility-lib/trunk/bookmarkMultipleTabs.xul
|
||||||
|
http://www.cozmixng.org/repos/piro/fx3-compatibility-lib/trunk/bookmarkMultipleTabs_bookmarkPropertiesOverlay.xul
|
||||||
|
-->
|
||||||
|
<overlay xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
|
||||||
|
<script type="application/x-javascript"><![CDATA[
|
||||||
|
|
||||||
|
window.addEventListener('DOMContentLoaded', function() {
|
||||||
|
window.removeEventListener('DOMContentLoaded', arguments.callee, true);
|
||||||
|
|
||||||
|
const currentRevision = 1;
|
||||||
|
|
||||||
|
if (!('piro.sakura.ne.jp' in window)) window['piro.sakura.ne.jp'] = {};
|
||||||
|
|
||||||
|
var loadedRevision = 'bookmarkMultipleTabs' in window['piro.sakura.ne.jp'] ?
|
||||||
|
window['piro.sakura.ne.jp'].bookmarkMultipleTabs.revision :
|
||||||
|
0 ;
|
||||||
|
if (loadedRevision && loadedRevision > currentRevision) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
window['piro.sakura.ne.jp'].bookmarkMultipleTabs = {
|
||||||
|
revision : currentRevision,
|
||||||
|
|
||||||
|
addBookmarkFor : function(aTabs, aFolderName)
|
||||||
|
{
|
||||||
|
if (!aTabs) return;
|
||||||
|
|
||||||
|
var b = this.getTabBrowserFromChild(aTabs[0]);
|
||||||
|
|
||||||
|
if ('PlacesUIUtils' in window || 'PlacesUtils' in window) { // Firefox 3
|
||||||
|
if (aFolderName)
|
||||||
|
this.Prefs.setCharPref('temp.showMinimalAddMultiBookmarkUI.folderName', unescape(encodeURIComponent(aFolderName)));
|
||||||
|
var utils = 'PlacesUIUtils' in window ? PlacesUIUtils : PlacesUtils ;
|
||||||
|
utils.showMinimalAddMultiBookmarkUI(Array.slice(aTabs).map(this.addBookmarkTabsFilter));
|
||||||
|
this.Prefs.clearUserPref('temp.showMinimalAddMultiBookmarkUI.folderName');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var currentTabInfo;
|
||||||
|
var tabsInfo = Array.slice(aTabs).map(function(aTab) {
|
||||||
|
var webNav = aTab.linkedBrowser.webNavigation;
|
||||||
|
var url = webNav.currentURI.spec;
|
||||||
|
var name = '';
|
||||||
|
var charSet, description;
|
||||||
|
try {
|
||||||
|
var doc = webNav.document;
|
||||||
|
name = doc.title || url;
|
||||||
|
charSet = doc.characterSet;
|
||||||
|
description = BookmarksUtils.getDescriptionFromDocument(doc);
|
||||||
|
}
|
||||||
|
catch (e) {
|
||||||
|
name = url;
|
||||||
|
}
|
||||||
|
return {
|
||||||
|
name : name,
|
||||||
|
url : url,
|
||||||
|
charset : charSet,
|
||||||
|
description : description
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
|
window.openDialog(
|
||||||
|
'chrome://browser/content/bookmarks/addBookmark2.xul',
|
||||||
|
'',
|
||||||
|
BROWSER_ADD_BM_FEATURES,
|
||||||
|
(aTabs.length == 1 ?
|
||||||
|
tabsInfo[0] :
|
||||||
|
{
|
||||||
|
name : (aFolderName || gNavigatorBundle.getString('bookmarkAllTabsDefault')),
|
||||||
|
bBookmarkAllTabs : true,
|
||||||
|
objGroup : tabsInfo
|
||||||
|
}
|
||||||
|
)
|
||||||
|
);
|
||||||
|
},
|
||||||
|
addBookmarkTabsFilter : function(aTab)
|
||||||
|
{
|
||||||
|
return aTab.linkedBrowser.currentURI;
|
||||||
|
},
|
||||||
|
|
||||||
|
Prefs : Components.classes['@mozilla.org/preferences;1']
|
||||||
|
.getService(Components.interfaces.nsIPrefBranch),
|
||||||
|
|
||||||
|
getTabBrowserFromChild : function(aTab)
|
||||||
|
{
|
||||||
|
return aTab.ownerDocument.evaluate(
|
||||||
|
'ancestor-or-self::*[local-name()="tabbrowser"]',
|
||||||
|
aTab,
|
||||||
|
null,
|
||||||
|
XPathResult.FIRST_ORDERED_NODE_TYPE,
|
||||||
|
null
|
||||||
|
).singleNodeValue;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}, true);
|
||||||
|
|
||||||
|
]]></script>
|
||||||
|
</overlay>
|
@ -0,0 +1,50 @@
|
|||||||
|
<?xml version="1.0"?>
|
||||||
|
<!--
|
||||||
|
Bookmark Multiple Tabs library for Firefox 2 or later
|
||||||
|
|
||||||
|
Usage:
|
||||||
|
in chrome.manifest:
|
||||||
|
overlay chrome://browser/content/browser.xul
|
||||||
|
chrome://***/content/bookmarkMultipleTabs.xul
|
||||||
|
overlay chrome://browser/content/places/bookmarkProperties2.xul
|
||||||
|
chrome://***/content/bookmarkMultipleTabs_bookmarkPropertiesOverlay.xul
|
||||||
|
|
||||||
|
in JS files:
|
||||||
|
window['piro.sakura.ne.jp'].bookmarkMultipleTabs.addBookmarkFor(tabsArray, folderName);
|
||||||
|
|
||||||
|
lisence: The MIT License, Copyright (c) 2009 SHIMODA "Piro" Hiroshi
|
||||||
|
http://www.cozmixng.org/repos/piro/fx3-compatibility-lib/trunk/license.txt
|
||||||
|
original:
|
||||||
|
http://www.cozmixng.org/repos/piro/fx3-compatibility-lib/trunk/bookmarkMultipleTabs.xul
|
||||||
|
http://www.cozmixng.org/repos/piro/fx3-compatibility-lib/trunk/bookmarkMultipleTabs_bookmarkPropertiesOverlay.xul
|
||||||
|
-->
|
||||||
|
<overlay xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
|
||||||
|
<script type="application/x-javascript; version=1.7"><![CDATA[
|
||||||
|
(function() {
|
||||||
|
if (!('BookmarkPropertiesPanel' in window) ||
|
||||||
|
!BookmarkPropertiesPanel._determineItemInfo ||
|
||||||
|
BookmarkPropertiesPanel._determineItemInfo.toSource().indexOf('__folderNameOverride') > -1)
|
||||||
|
return;
|
||||||
|
|
||||||
|
eval('BookmarkPropertiesPanel._determineItemInfo = '+
|
||||||
|
BookmarkPropertiesPanel._determineItemInfo.toSource().replace(
|
||||||
|
'{',
|
||||||
|
['{',
|
||||||
|
'var __folderNameOverride = null;',
|
||||||
|
'try {',
|
||||||
|
' __folderNameOverride = Components.classes["@mozilla.org/preferences;1"]',
|
||||||
|
' .getService(Components.interfaces.nsIPrefBranch)',
|
||||||
|
' .getCharPref("temp.showMinimalAddMultiBookmarkUI.folderName");',
|
||||||
|
' __folderNameOverride = decodeURIComponent(escape(__folderNameOverride));',
|
||||||
|
'}',
|
||||||
|
'catch(e) {',
|
||||||
|
'}'
|
||||||
|
].join('')
|
||||||
|
).replace(
|
||||||
|
'this._strings.getString("bookmarkAllTabsDefault")',
|
||||||
|
'__folderNameOverride || $&'
|
||||||
|
).replace()
|
||||||
|
);
|
||||||
|
})();
|
||||||
|
]]></script>
|
||||||
|
</overlay>
|
@ -2170,84 +2170,16 @@ catch(e) {
|
|||||||
tabs = [aTabOrTabs];
|
tabs = [aTabOrTabs];
|
||||||
}
|
}
|
||||||
|
|
||||||
var folderName = null;
|
var folderName = this.isGroupTab(tabs[0], true) ? tabs[0].label : 0 ;
|
||||||
if (this.isGroupTab(tabs[0], true)) {
|
|
||||||
folderName = tabs[0].label;
|
|
||||||
tabs.splice(0, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
var b = this.getTabBrowserFromChild(tabs[0]);
|
var b = this.getTabBrowserFromChild(tabs[0]);
|
||||||
var bookmarkedTabs = [];
|
var bookmarkedTabs = [];
|
||||||
tabs.forEach(function(aTab) {
|
tabs.forEach(function(aTab, aIndex) {
|
||||||
if (!this.isGroupTab(aTab)) bookmarkedTabs.push(aTab);
|
if (!this.isGroupTab(aTab, aIndex == 0)) bookmarkedTabs.push(aTab);
|
||||||
bookmarkedTabs = bookmarkedTabs.concat(b.treeStyleTab.getDescendantTabs(aTab));
|
bookmarkedTabs = bookmarkedTabs.concat(b.treeStyleTab.getDescendantTabs(aTab));
|
||||||
}, this);
|
}, this);
|
||||||
|
|
||||||
if ('MultipleTabService' in window &&
|
window['piro.sakura.ne.jp'].bookmarkMultipleTabs.addBookmarkFor(bookmarkedTabs, folderName);
|
||||||
'addBookmarkFor' in MultipleTabService) {
|
|
||||||
MultipleTabService.addBookmarkFor(bookmarkedTabs, folderName);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
this._addBookmarkFor(bookmarkedTabs, folderName);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
_addBookmarkFor : function(aTabs, aFolder) // from Multiple Tab Handler
|
|
||||||
{
|
|
||||||
if (!aTabs) return;
|
|
||||||
|
|
||||||
var b = this.getTabBrowserFromChild(aTabs[0]);
|
|
||||||
|
|
||||||
if ('PlacesUIUtils' in window || 'PlacesUtils' in window) { // Firefox 3
|
|
||||||
var utils = 'PlacesUIUtils' in window ? PlacesUIUtils : PlacesUtils ;
|
|
||||||
utils.showMinimalAddMultiBookmarkUI(Array.slice(aTabs).map(this.addBookmarkTabsFilter));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
var currentTabInfo;
|
|
||||||
var tabsInfo = Array.slice(aTabs)
|
|
||||||
.filter(function(aTab) {
|
|
||||||
return aTab.parentNode; // ignore removed tabs
|
|
||||||
})
|
|
||||||
.map(function(aTab) {
|
|
||||||
var webNav = aTab.linkedBrowser.webNavigation;
|
|
||||||
var url = webNav.currentURI.spec;
|
|
||||||
var name = '';
|
|
||||||
var charSet, description;
|
|
||||||
try {
|
|
||||||
var doc = webNav.document;
|
|
||||||
name = doc.title || url;
|
|
||||||
charSet = doc.characterSet;
|
|
||||||
description = BookmarksUtils.getDescriptionFromDocument(doc);
|
|
||||||
}
|
|
||||||
catch (e) {
|
|
||||||
name = url;
|
|
||||||
}
|
|
||||||
return {
|
|
||||||
name : name,
|
|
||||||
url : url,
|
|
||||||
charset : charSet,
|
|
||||||
description : description
|
|
||||||
};
|
|
||||||
});
|
|
||||||
|
|
||||||
window.openDialog(
|
|
||||||
'chrome://browser/content/bookmarks/addBookmark2.xul',
|
|
||||||
'',
|
|
||||||
BROWSER_ADD_BM_FEATURES,
|
|
||||||
(aTabs.length == 1 ?
|
|
||||||
tabsInfo[0] :
|
|
||||||
{
|
|
||||||
name : (aFolderName || gNavigatorBundle.getString('bookmarkAllTabsDefault')),
|
|
||||||
bBookmarkAllTabs : true,
|
|
||||||
objGroup : tabsInfo
|
|
||||||
}
|
|
||||||
)
|
|
||||||
);
|
|
||||||
},
|
|
||||||
addBookmarkTabsFilter : function(aTab)
|
|
||||||
{
|
|
||||||
return aTab.linkedBrowser.currentURI;
|
|
||||||
},
|
},
|
||||||
|
|
||||||
openSelectionLinks : function(aFrame)
|
openSelectionLinks : function(aFrame)
|
||||||
|
Loading…
Reference in New Issue
Block a user