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