add: example for extra lib/reader tabpanels
This commit is contained in:
parent
29b64b5800
commit
51badae189
@ -2,4 +2,6 @@ menuitem.label=Addon Template: Menuitem
|
|||||||
menupopup.label=Addon Template: Menupopup
|
menupopup.label=Addon Template: Menupopup
|
||||||
menuitem.submenulabel=Addon Template
|
menuitem.submenulabel=Addon Template
|
||||||
menuitem.filemenulabel=Addon Template: File Menuitem
|
menuitem.filemenulabel=Addon Template: File Menuitem
|
||||||
prefs.title=Template
|
prefs.title=Template
|
||||||
|
tabpanel.lib.tab.label=Lib Tab
|
||||||
|
tabpanel.reader.tab.label=Reader Tab
|
@ -2,4 +2,6 @@ menuitem.label=Addon Template: 菜单
|
|||||||
menupopup.label=Addon Template: 弹出菜单
|
menupopup.label=Addon Template: 弹出菜单
|
||||||
menuitem.submenulabel=Addon Template
|
menuitem.submenulabel=Addon Template
|
||||||
menuitem.filemenulabel=Addon Template: 文件菜单
|
menuitem.filemenulabel=Addon Template: 文件菜单
|
||||||
prefs.title=插件模板
|
prefs.title=插件模板
|
||||||
|
tabpanel.lib.tab.label=库标签
|
||||||
|
tabpanel.reader.tab.label=阅读器标签
|
156
src/views.ts
156
src/views.ts
@ -19,6 +19,9 @@ class AddonViews extends AddonModule {
|
|||||||
// You can init the UI elements that
|
// You can init the UI elements that
|
||||||
// cannot be initialized with overlay.xul
|
// cannot be initialized with overlay.xul
|
||||||
this._Addon.toolkit.Tool.log("Initializing UI");
|
this._Addon.toolkit.Tool.log("Initializing UI");
|
||||||
|
/**
|
||||||
|
* Example: menu items starts
|
||||||
|
*/
|
||||||
const menuIcon = "chrome://addontemplate/content/icons/favicon@0.5x.png";
|
const menuIcon = "chrome://addontemplate/content/icons/favicon@0.5x.png";
|
||||||
// item menuitem with icon
|
// item menuitem with icon
|
||||||
this._Addon.toolkit.UI.insertMenuItem("item", {
|
this._Addon.toolkit.UI.insertMenuItem("item", {
|
||||||
@ -56,7 +59,13 @@ class AddonViews extends AddonModule {
|
|||||||
label: this._Addon.locale.getString("menuitem.filemenulabel"),
|
label: this._Addon.locale.getString("menuitem.filemenulabel"),
|
||||||
oncommand: "alert('Hello World! File Menuitem.')",
|
oncommand: "alert('Hello World! File Menuitem.')",
|
||||||
});
|
});
|
||||||
|
/**
|
||||||
|
* Example: menu items ends
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Example: extra column starts
|
||||||
|
*/
|
||||||
// Initialize extra columns
|
// Initialize extra columns
|
||||||
this._Addon.toolkit.ItemTree.register(
|
this._Addon.toolkit.ItemTree.register(
|
||||||
"test1",
|
"test1",
|
||||||
@ -96,7 +105,13 @@ class AddonViews extends AddonModule {
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
/**
|
||||||
|
* Example: extra column ends
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Example: custom cell starts
|
||||||
|
*/
|
||||||
// Customize cells
|
// Customize cells
|
||||||
this._Addon.toolkit.ItemTree.addRenderCellHook(
|
this._Addon.toolkit.ItemTree.addRenderCellHook(
|
||||||
"title",
|
"title",
|
||||||
@ -107,6 +122,143 @@ class AddonViews extends AddonModule {
|
|||||||
return span;
|
return span;
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
/**
|
||||||
|
* Example: custom cell ends
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Example: extra library tab starts
|
||||||
|
*/
|
||||||
|
const libTabId = this._Addon.toolkit.UI.registerLibraryTabPanel(
|
||||||
|
this._Addon.locale.getString("tabpanel.lib.tab.label"),
|
||||||
|
(panel: XUL.Element, win: Window) => {
|
||||||
|
const elem = this._Addon.toolkit.UI.creatElementsFromJSON(
|
||||||
|
win.document,
|
||||||
|
{
|
||||||
|
tag: "vbox",
|
||||||
|
namespace: "xul",
|
||||||
|
subElementOptions: [
|
||||||
|
{
|
||||||
|
tag: "h2",
|
||||||
|
directAttributes: {
|
||||||
|
innerText: "Hello World!",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
tag: "div",
|
||||||
|
directAttributes: {
|
||||||
|
innerText: "This is a library tab.",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
tag: "button",
|
||||||
|
directAttributes: {
|
||||||
|
innerText: "Unregister",
|
||||||
|
},
|
||||||
|
listeners: [
|
||||||
|
{
|
||||||
|
type: "click",
|
||||||
|
listener: () => {
|
||||||
|
this._Addon.toolkit.UI.unregisterLibraryTabPanel(
|
||||||
|
libTabId
|
||||||
|
);
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
}
|
||||||
|
);
|
||||||
|
panel.append(elem);
|
||||||
|
},
|
||||||
|
{
|
||||||
|
targetIndex: 1,
|
||||||
|
}
|
||||||
|
);
|
||||||
|
/**
|
||||||
|
* Example: extra library tab ends
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Example: extra reader tab starts
|
||||||
|
*/
|
||||||
|
const readerTabId = `${config.addonRef}-extra-reader-tab`;
|
||||||
|
this._Addon.toolkit.UI.registerReaderTabPanel(
|
||||||
|
this._Addon.locale.getString("tabpanel.reader.tab.label"),
|
||||||
|
(
|
||||||
|
panel: XUL.Element,
|
||||||
|
deck: XUL.Deck,
|
||||||
|
win: Window,
|
||||||
|
reader: _ZoteroReaderInstance
|
||||||
|
) => {
|
||||||
|
if (!panel) {
|
||||||
|
this._Addon.toolkit.Tool.log(
|
||||||
|
"This reader do not have right-side bar. Adding reader tab skipped."
|
||||||
|
);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
this._Addon.toolkit.Tool.log(reader);
|
||||||
|
const elem = this._Addon.toolkit.UI.creatElementsFromJSON(
|
||||||
|
win.document,
|
||||||
|
{
|
||||||
|
tag: "vbox",
|
||||||
|
id: `${config.addonRef}-${reader._instanceID}-extra-reader-tab-div`,
|
||||||
|
namespace: "xul",
|
||||||
|
// This is important! Don't create content for multiple times
|
||||||
|
ignoreIfExists: true,
|
||||||
|
subElementOptions: [
|
||||||
|
{
|
||||||
|
tag: "h2",
|
||||||
|
directAttributes: {
|
||||||
|
innerText: "Hello World!",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
tag: "div",
|
||||||
|
directAttributes: {
|
||||||
|
innerText: "This is a reader tab.",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
tag: "div",
|
||||||
|
directAttributes: {
|
||||||
|
innerText: `Reader: ${reader._title.slice(0, 20)}`,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
tag: "div",
|
||||||
|
directAttributes: {
|
||||||
|
innerText: `itemID: ${reader.itemID}.`,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
tag: "button",
|
||||||
|
directAttributes: {
|
||||||
|
innerText: "Unregister",
|
||||||
|
},
|
||||||
|
listeners: [
|
||||||
|
{
|
||||||
|
type: "click",
|
||||||
|
listener: () => {
|
||||||
|
this._Addon.toolkit.UI.unregisterReaderTabPanel(
|
||||||
|
readerTabId
|
||||||
|
);
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
}
|
||||||
|
);
|
||||||
|
panel.append(elem);
|
||||||
|
},
|
||||||
|
{
|
||||||
|
tabId: readerTabId,
|
||||||
|
}
|
||||||
|
);
|
||||||
|
/**
|
||||||
|
* Example: extra reader tab ends
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
public unInitViews() {
|
public unInitViews() {
|
||||||
@ -118,6 +270,10 @@ class AddonViews extends AddonModule {
|
|||||||
|
|
||||||
// Remove title cell patch
|
// Remove title cell patch
|
||||||
this._Addon.toolkit.ItemTree.removeRenderCellHook("title");
|
this._Addon.toolkit.ItemTree.removeRenderCellHook("title");
|
||||||
|
|
||||||
|
this._Addon.toolkit.UI.unregisterReaderTabPanel(
|
||||||
|
`${config.addonRef}-extra-reader-tab`
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
public showProgressWindow(
|
public showProgressWindow(
|
||||||
|
Loading…
x
Reference in New Issue
Block a user