add: shortcut examples for toolkit 0.1.6
This commit is contained in:
		
							parent
							
								
									d42abcbfcc
								
							
						
					
					
						commit
						a95515fc47
					
				@ -30,6 +30,13 @@ Search `@example` in `src/examples.ts`. The examples are called in `src/hooks.ts
 | 
				
			|||||||
- registerNotifier
 | 
					- registerNotifier
 | 
				
			||||||
- registerPrefs, unregisterPrefs
 | 
					- registerPrefs, unregisterPrefs
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### Shortcut Keys Examples
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- registerShortcuts
 | 
				
			||||||
 | 
					- exampleShortcutLargerCallback
 | 
				
			||||||
 | 
					- exampleShortcutSmallerCallback
 | 
				
			||||||
 | 
					- exampleShortcutConflictionCallback
 | 
				
			||||||
 | 
					
 | 
				
			||||||
### UI Examples
 | 
					### UI Examples
 | 
				
			||||||
 | 
					
 | 
				
			||||||

 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -31,7 +31,7 @@
 | 
				
			|||||||
  },
 | 
					  },
 | 
				
			||||||
  "homepage": "https://github.com/windingwind/zotero-addon-template#readme",
 | 
					  "homepage": "https://github.com/windingwind/zotero-addon-template#readme",
 | 
				
			||||||
  "dependencies": {
 | 
					  "dependencies": {
 | 
				
			||||||
    "zotero-plugin-toolkit": "^0.1.3"
 | 
					    "zotero-plugin-toolkit": "^0.1.6"
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  "devDependencies": {
 | 
					  "devDependencies": {
 | 
				
			||||||
    "@types/node": "^18.11.17",
 | 
					    "@types/node": "^18.11.17",
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										25
									
								
								src/hooks.ts
									
									
									
									
									
								
							
							
						
						
									
										25
									
								
								src/hooks.ts
									
									
									
									
									
								
							@ -1,4 +1,8 @@
 | 
				
			|||||||
import { BasicExampleFactory, UIExampleFactory } from "./modules/examples";
 | 
					import {
 | 
				
			||||||
 | 
					  BasicExampleFactory,
 | 
				
			||||||
 | 
					  KeyExampleFactory,
 | 
				
			||||||
 | 
					  UIExampleFactory,
 | 
				
			||||||
 | 
					} from "./modules/examples";
 | 
				
			||||||
import { config } from "../package.json";
 | 
					import { config } from "../package.json";
 | 
				
			||||||
import { getString, initLocale } from "./modules/locale";
 | 
					import { getString, initLocale } from "./modules/locale";
 | 
				
			||||||
import { registerPrefsScripts } from "./modules/preferenceScript";
 | 
					import { registerPrefsScripts } from "./modules/preferenceScript";
 | 
				
			||||||
@ -30,6 +34,8 @@ async function onStartup() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  BasicExampleFactory.registerNotifier();
 | 
					  BasicExampleFactory.registerNotifier();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  KeyExampleFactory.registerShortcuts();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  await Zotero.Promise.delay(1000);
 | 
					  await Zotero.Promise.delay(1000);
 | 
				
			||||||
  popupWin.changeLine({
 | 
					  popupWin.changeLine({
 | 
				
			||||||
    progress: 30,
 | 
					    progress: 30,
 | 
				
			||||||
@ -110,6 +116,22 @@ async function onPrefsEvent(type: string, data: { [key: string]: any }) {
 | 
				
			|||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function onShortcuts(type: string) {
 | 
				
			||||||
 | 
					  switch (type) {
 | 
				
			||||||
 | 
					    case "larger":
 | 
				
			||||||
 | 
					      KeyExampleFactory.exampleShortcutLargerCallback();
 | 
				
			||||||
 | 
					      break;
 | 
				
			||||||
 | 
					    case "smaller":
 | 
				
			||||||
 | 
					      KeyExampleFactory.exampleShortcutSmallerCallback();
 | 
				
			||||||
 | 
					      break;
 | 
				
			||||||
 | 
					    case "confliction":
 | 
				
			||||||
 | 
					      KeyExampleFactory.exampleShortcutConflictionCallback();
 | 
				
			||||||
 | 
					      break;
 | 
				
			||||||
 | 
					    default:
 | 
				
			||||||
 | 
					      break;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Add your hooks here. For element click, etc.
 | 
					// Add your hooks here. For element click, etc.
 | 
				
			||||||
// Keep in mind hooks only do dispatch. Don't add code that does real jobs in hooks.
 | 
					// Keep in mind hooks only do dispatch. Don't add code that does real jobs in hooks.
 | 
				
			||||||
// Otherwise the code would be hard to read and maintian.
 | 
					// Otherwise the code would be hard to read and maintian.
 | 
				
			||||||
@ -119,4 +141,5 @@ export default {
 | 
				
			|||||||
  onShutdown,
 | 
					  onShutdown,
 | 
				
			||||||
  onNotify,
 | 
					  onNotify,
 | 
				
			||||||
  onPrefsEvent,
 | 
					  onPrefsEvent,
 | 
				
			||||||
 | 
					  onShortcuts,
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
				
			|||||||
@ -100,6 +100,103 @@ export class BasicExampleFactory {
 | 
				
			|||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export class KeyExampleFactory {
 | 
				
			||||||
 | 
					  @example
 | 
				
			||||||
 | 
					  static registerShortcuts() {
 | 
				
			||||||
 | 
					    const keysetId = `${config.addonRef}-keyset`;
 | 
				
			||||||
 | 
					    const cmdsetId = `${config.addonRef}-cmdset`;
 | 
				
			||||||
 | 
					    const cmdSmallerId = `${config.addonRef}-cmd-smaller`;
 | 
				
			||||||
 | 
					    // Register an event key for Alt+L
 | 
				
			||||||
 | 
					    ztoolkit.KeyTool.registerKey("event", {
 | 
				
			||||||
 | 
					      id: `${config.addonRef}-key-larger`,
 | 
				
			||||||
 | 
					      key: "L",
 | 
				
			||||||
 | 
					      modifiers: "alt",
 | 
				
			||||||
 | 
					      callback: (keyOptions) => {
 | 
				
			||||||
 | 
					        addon.hooks.onShortcuts("larger");
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					    // Register an element key using <key> for Alt+S
 | 
				
			||||||
 | 
					    ztoolkit.KeyTool.registerKey("element", {
 | 
				
			||||||
 | 
					      id: `${config.addonRef}-key-smaller`,
 | 
				
			||||||
 | 
					      key: "S",
 | 
				
			||||||
 | 
					      modifiers: "alt",
 | 
				
			||||||
 | 
					      xulData: {
 | 
				
			||||||
 | 
					        document,
 | 
				
			||||||
 | 
					        command: cmdSmallerId,
 | 
				
			||||||
 | 
					        _parentId: keysetId,
 | 
				
			||||||
 | 
					        _commandOptions: {
 | 
				
			||||||
 | 
					          id: cmdSmallerId,
 | 
				
			||||||
 | 
					          document,
 | 
				
			||||||
 | 
					          _parentId: cmdsetId,
 | 
				
			||||||
 | 
					          oncommand: "Zotero.AddonTemplate.hooks.onShortcuts('smaller')",
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					    // Here we register an conflict key for Alt+S
 | 
				
			||||||
 | 
					    // just to show how the confliction check works.
 | 
				
			||||||
 | 
					    // This is something you should avoid in your plugin.
 | 
				
			||||||
 | 
					    ztoolkit.KeyTool.registerKey("event", {
 | 
				
			||||||
 | 
					      id: `${config.addonRef}-key-smaller-conflict`,
 | 
				
			||||||
 | 
					      key: "S",
 | 
				
			||||||
 | 
					      modifiers: "alt",
 | 
				
			||||||
 | 
					      callback: (keyOptions) => {
 | 
				
			||||||
 | 
					        ztoolkit.Compat.getGlobal("alert")("Smaller! This is a conflict key.");
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					    // Register an event key to check confliction
 | 
				
			||||||
 | 
					    ztoolkit.KeyTool.registerKey("event", {
 | 
				
			||||||
 | 
					      id: `${config.addonRef}-key-check-conflict`,
 | 
				
			||||||
 | 
					      key: "C",
 | 
				
			||||||
 | 
					      modifiers: "alt",
 | 
				
			||||||
 | 
					      callback: (keyOptions) => {
 | 
				
			||||||
 | 
					        addon.hooks.onShortcuts("confliction");
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					    ztoolkit.Tool.createProgressWindow(config.addonName)
 | 
				
			||||||
 | 
					      .createLine({
 | 
				
			||||||
 | 
					        text: "Example Shortcuts: Alt+L/S/C",
 | 
				
			||||||
 | 
					        type: "success",
 | 
				
			||||||
 | 
					      })
 | 
				
			||||||
 | 
					      .show();
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  @example
 | 
				
			||||||
 | 
					  static exampleShortcutLargerCallback() {
 | 
				
			||||||
 | 
					    ztoolkit.Tool.createProgressWindow(config.addonName)
 | 
				
			||||||
 | 
					      .createLine({
 | 
				
			||||||
 | 
					        text: "Larger!",
 | 
				
			||||||
 | 
					        type: "default",
 | 
				
			||||||
 | 
					      })
 | 
				
			||||||
 | 
					      .show();
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  @example
 | 
				
			||||||
 | 
					  static exampleShortcutSmallerCallback() {
 | 
				
			||||||
 | 
					    ztoolkit.Tool.createProgressWindow(config.addonName)
 | 
				
			||||||
 | 
					      .createLine({
 | 
				
			||||||
 | 
					        text: "Smaller!",
 | 
				
			||||||
 | 
					        type: "default",
 | 
				
			||||||
 | 
					      })
 | 
				
			||||||
 | 
					      .show();
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  @example
 | 
				
			||||||
 | 
					  static exampleShortcutConflictionCallback() {
 | 
				
			||||||
 | 
					    const conflictionGroups = ztoolkit.KeyTool.checkAllKeyConfliction();
 | 
				
			||||||
 | 
					    ztoolkit.Tool.createProgressWindow("Check Key Confliction")
 | 
				
			||||||
 | 
					      .createLine({
 | 
				
			||||||
 | 
					        text: `${conflictionGroups.length} groups of confliction keys found. Details are in the debug output/console.`,
 | 
				
			||||||
 | 
					      })
 | 
				
			||||||
 | 
					      .show(-1);
 | 
				
			||||||
 | 
					    ztoolkit.Tool.log(
 | 
				
			||||||
 | 
					      "Conflictions:",
 | 
				
			||||||
 | 
					      conflictionGroups,
 | 
				
			||||||
 | 
					      "All keys:",
 | 
				
			||||||
 | 
					      ztoolkit.KeyTool.getAllKeys()
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export class UIExampleFactory {
 | 
					export class UIExampleFactory {
 | 
				
			||||||
  @example
 | 
					  @example
 | 
				
			||||||
  static registerStyleSheet() {
 | 
					  static registerStyleSheet() {
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user