Commit 0f43a038c39292a80e281cfc6f4505adba2fa94e

Authored by David Guilherme
1 parent c76fa48e
Exists in master

Implements the creation and communication with front-end

firefox/data/app/window.html 0 → 100644
... ... @@ -0,0 +1,14 @@
  1 +<html>
  2 + <head>
  3 + <meta charset="UTF-8" />
  4 + <title>VLibras Plugin</title>
  5 + </head>
  6 + <body>
  7 + <h1>Hello World</h1>
  8 + <script>
  9 + document.addEventListener('plugin:selectedText', function(e) {
  10 + console.log(e.detail);
  11 + });
  12 + </script>
  13 + </body>
  14 +</html>
... ...
firefox/data/delegator.js 0 → 100644
... ... @@ -0,0 +1,7 @@
  1 +'use strict';
  2 +
  3 +self.port.on('selectedText', function(selectedText) {
  4 + var event = new CustomEvent('plugin:selectedText', { 'detail': selectedText });
  5 +
  6 + document.dispatchEvent(event);
  7 +});
... ...
firefox/index.js
1   -var self = require('sdk/self');
2   -var cm = require("sdk/context-menu");
3   -var { open } = require('sdk/window/utils');
  1 +'use strict';
4 2  
  3 +// Imports
  4 +let self = require('sdk/self');
  5 +let { Ci } = require('chrome');
  6 +
  7 +let cm = require("sdk/context-menu");
  8 +let pm = require('sdk/page-mod');
  9 +
  10 +let browser = require('sdk/window/utils').getMostRecentBrowserWindow();
  11 +
  12 +//Globals
  13 +let app = {
  14 + window: null,
  15 + worker: null,
  16 + selectedText: ""
  17 +};
  18 +
  19 +// Context menu
5 20 cm.Item({
6 21 label: "Traduzir para LIBRAS",
7 22 context: cm.SelectionContext(),
... ... @@ -15,12 +30,33 @@ cm.Item({
15 30 ' self.postMessage( window.getSelection().toString() );' +
16 31 '});',
17 32 onMessage: function(selectedText) {
18   - var window = open('data:text/html,Hello Window', {
19   - name: 'jetpack window',
20   - features: {
21   - width: 200,
22   - height: 100
23   - }
  33 + app.selectedText = selectedText;
  34 +
  35 + if ( !(app.window instanceof Ci.nsIDOMWindow) ) {
  36 + app.window = browser.open(
  37 + self.data.url('app/window.html'),
  38 + 'VLibras Plugin',
  39 + 'chrome=no,width=560,height=560,menubar=no'
  40 + );
  41 + } else {
  42 + app.worker.port.emit('selectedText', app.selectedText);
  43 + app.window.focus();
  44 + }
  45 + }
  46 +});
  47 +
  48 +// Page mod
  49 +pm.PageMod({
  50 + include: self.data.url('app/window.html'),
  51 + contentScriptWhen: 'ready',
  52 + contentScriptFile: self.data.url('delegator.js'),
  53 + onAttach: function(worker) {
  54 + app.worker = worker;
  55 +
  56 + app.worker.port.emit('selectedText', app.selectedText);
  57 +
  58 + app.worker.on('detach', function () {
  59 + app.worker = undefined;
24 60 });
25 61 }
26 62 });
... ...
firefox/package.json
... ... @@ -7,6 +7,5 @@
7 7 "author": "LAViD",
8 8 "engines": {
9 9 "firefox": ">=38.0a1"
10   - },
11   - "license": "MIT"
  10 + }
12 11 }
... ...