I have a basic prototype of the FireWidgets system I have been
referring to completed.
The project is located here:
http://github.com/cadorn/firewidgets/tree/master
The FireWidgets project aims to provide a runtime framework that allows
widgets (javacript bundles) to securely run in a variety of
environments. The widgets can communicate with each other, render user
interfaces or interact with data sources.
At this stage the system is implemented on top of the Mozilla stack
which allows it to run in Firefox and XULRunner applications.
I have included a demo of how FireWidgets can be used to render UI
elements for eclipse (or access data from eclipse). To get the data
from eclipse it uses the backend part of the "Eclipse IDE in a browser"
demo. See: http://dev.eclipse.org/mhonarc/lists/e4-dev/msg00680.html
To see the demo you need to:
1) Clone the project
2) Follow: /Applications/WidgetDevApp/README
3) When you have the demo running in your browser and click on "jQuery"
or "Domplate" you should see some white boxes appear at the bottom of
the page (these are the widget sandboxes which will be hidden later).
4) Click on "Eclipse" and follow the instructions
At this stage I have taken the fastest route to a working prototype.
Now that the core is working I will be replacing my hacked code bit by
bit using established frameworks where available/practical. For
example, I have been looking at the possibility of using Joose
(http://code.google.com/p/joose-js/) to wrap and structure the widgets.
What I need in eclipse to drive the FireWidget <-> Eclipse work
further:
1) Ability to load extensions into XUL runner apps embedded in eclipse:
https://bugs.eclipse.org/bugs/show_bug.cgi?id=262414
2) A "server" (maybe using the same _javascript_ server under development
for bespin) that uses comet to push data to clients as well as responds
to client events. This is needed when widgets run external to eclipse.
When widgets run internally they could communicate with Java directly
or still go through the same server. My preference would probably be to
go through the same server.
I hope the demo works for you.
Any feedback is welcome.
|