From 0f43a038c39292a80e281cfc6f4505adba2fa94e Mon Sep 17 00:00:00 2001 From: David Guilherme Date: Tue, 30 Jun 2015 23:08:52 -0300 Subject: [PATCH] Implements the creation and communication with front-end --- firefox/data/app/window.html | 14 ++++++++++++++ firefox/data/delegator.js | 7 +++++++ firefox/index.js | 54 +++++++++++++++++++++++++++++++++++++++++++++--------- firefox/package.json | 3 +-- 4 files changed, 67 insertions(+), 11 deletions(-) create mode 100644 firefox/data/app/window.html create mode 100644 firefox/data/delegator.js diff --git a/firefox/data/app/window.html b/firefox/data/app/window.html new file mode 100644 index 0000000..63eb786 --- /dev/null +++ b/firefox/data/app/window.html @@ -0,0 +1,14 @@ + + + + VLibras Plugin + + +

Hello World

+ + + diff --git a/firefox/data/delegator.js b/firefox/data/delegator.js new file mode 100644 index 0000000..9ae4851 --- /dev/null +++ b/firefox/data/delegator.js @@ -0,0 +1,7 @@ +'use strict'; + +self.port.on('selectedText', function(selectedText) { + var event = new CustomEvent('plugin:selectedText', { 'detail': selectedText }); + + document.dispatchEvent(event); +}); diff --git a/firefox/index.js b/firefox/index.js index 84e4822..2646f61 100644 --- a/firefox/index.js +++ b/firefox/index.js @@ -1,7 +1,22 @@ -var self = require('sdk/self'); -var cm = require("sdk/context-menu"); -var { open } = require('sdk/window/utils'); +'use strict'; +// Imports +let self = require('sdk/self'); +let { Ci } = require('chrome'); + +let cm = require("sdk/context-menu"); +let pm = require('sdk/page-mod'); + +let browser = require('sdk/window/utils').getMostRecentBrowserWindow(); + +//Globals +let app = { + window: null, + worker: null, + selectedText: "" +}; + +// Context menu cm.Item({ label: "Traduzir para LIBRAS", context: cm.SelectionContext(), @@ -15,12 +30,33 @@ cm.Item({ ' self.postMessage( window.getSelection().toString() );' + '});', onMessage: function(selectedText) { - var window = open('data:text/html,Hello Window', { - name: 'jetpack window', - features: { - width: 200, - height: 100 - } + app.selectedText = selectedText; + + if ( !(app.window instanceof Ci.nsIDOMWindow) ) { + app.window = browser.open( + self.data.url('app/window.html'), + 'VLibras Plugin', + 'chrome=no,width=560,height=560,menubar=no' + ); + } else { + app.worker.port.emit('selectedText', app.selectedText); + app.window.focus(); + } + } +}); + +// Page mod +pm.PageMod({ + include: self.data.url('app/window.html'), + contentScriptWhen: 'ready', + contentScriptFile: self.data.url('delegator.js'), + onAttach: function(worker) { + app.worker = worker; + + app.worker.port.emit('selectedText', app.selectedText); + + app.worker.on('detach', function () { + app.worker = undefined; }); } }); diff --git a/firefox/package.json b/firefox/package.json index 2901d5f..54c5982 100644 --- a/firefox/package.json +++ b/firefox/package.json @@ -7,6 +7,5 @@ "author": "LAViD", "engines": { "firefox": ">=38.0a1" - }, - "license": "MIT" + } } -- libgit2 0.21.2