NBXULProposal
NB-XUL Project Proposal
The following is the initial proposal of the NB-XUL project, which got selected as one of the Netbeans Innovator Grant Projects.
[[{TableOfContentsTitle=TableOfContents} | {TableOfContents title='Table of Contents'}]]
Project Name
NB-XUL
Abstract
- This project will add support to NetBeans for designing user interfaces using Mozilla's XML User Interface Language (XUL). This support will include an XUL Editor with code completion, syntax highlighting, code folding and a structural view as well as a debugger and wizards that will help you create XUL applications with ease and speed.
Benefits to the NetBeans Community
Benefits to the community include the ability to build cross-platform UI's which are easily customizable and easy to localize, also the ability to build extensions for Mozilla style applications with ease using the templates in the extension wizard. This will allow developers to have complete separation of the programming logic from the user interface if they so desire and thus achieve customization of the UI such as branding and localization with minimal effort. The main benefit of XUL is that it provides a simple and portable definition of common widgets. This reduces the software development effort in a way analogous to the savings offered by 4GL tools. In effect what we intend to achieve by this is to make Netbeans the de-facto IDE for developing XUL extensions and applications and consequently use XUL to supplement Swing to build easily "re-brandable" and localizable UI's for Java applications by adding support for the existing jXUL project. The possibilities are endless since XUL hasn't yet been exploited as a useful tool for UI building, hence adding comprehensive XUL support while its still at a nascent stage will certainly give Netbeans an edge in become one of the more prominent IDE's for XUL.
Project Participants
Aditya Kumar Sharma
Angad Singh
Project size
Large project
Detailed project description
What is XUL?
XUL, quite simply, is a presentation specification for creating lightweight, cross-platform, cross-device user interfaces. A XUL graphical user interface (GUI) can be lightweight in the sense that there are no huge libraries of widgets to download. XUL interfaces can be cross-platform because they are derived from a generic specification for user interfaces. XUL has the ability to run on different platforms on Internet-enabled devices. XUL enables you, the interface developer, to easily create an interface that is as simple or complex as you would like to make it. Since XUL provides an abstraction of user interface components, it delivers on the promise of write-once, run-anywhere. XUL provides a clear separation among the client application definition and programmatic logic.
Another highly practical benefit of the separation that XUL provides among application logic, presentation, and language text is the ease of customizing for different customers or groups of users.
Java, has portability as a main selling point. XUL is one such language designed specifically for building portable user interfaces.It takes a long time to build an application even for only one platform. The time required to compile and debug can be lengthy. With XUL, an interface can be implemented and modified quicky and easily. XUL has all the advantages of other XML languages. For example XHTML or other XML languages such as MathML or SVG can be inserted within it. Also, XUL is easily localizable, which means that it can be translated into other languages easily. Style sheets can be applied to modify the appearance of the user interface (much like the skins or themes feature in WinAmp or some window managers)
What we intend to add to Netbeans?
We intend to add support for the XUL platform in the Netbeans IDE, using the features that Netbeans already has and adding more features that are helpful in designing interface using XUL such as a GUI builder for XUL intended to allow developers developing XULRunner and XUL Web Applications develop them with ease and speed.
The features that the plugin will include are as follows :
- Support for jXUL
- XUL Editor with (code completion, syntax highlighting, code folding, structural view, preview, formatting and refactoring, palette support with XUL Tags and code Snippets).
- Extension launcher.
- XUL Wizards (for XUL Project, XUL Page).
- XUL Nature project.
- XUL Perspective.
- XUL Extension export system.
- Debugger (or integration with Mozilla XUL JS Debugger).
- Extensibility through Mozilla-style Extensions.
- Easy XUL Preview in a tab or a separate XUL Window.
- Extension Wizard helps build skeleton extensions.
- Mozilla DOM Inspector.
- XUL Validator.
- XULRunner Preferences for configuring XULRunner.
- Running compiled applications with XULRunner.
- API browser
- Chrome URI Resolution Support
Project timeline
We plan to complete the plugin in modules completing parts of the plugin as we move along.
Milestone I (Completion 20%), April 20, 2008
The first phase involved completing the XUL editor support with code completion, etc. Adding XUL pallet support with XUL tags and code snippets, and adding XUL wizards and project templates to the Netbeans IDE.
Milestone II (Completion 50%), May 25 , 2008.
- Bug Fixes from Milestone I
- Adding support for jXUL
- Easy XUL Preview in a tab or a separate XUL Window.
- Extension Wizard helps build skeleton extensions.
- At this stage one can build java apps with XUL, since by this support for jXUL would be complete thus enabling users to build complete applications using XUL and Java.
Milestone III (Completion 80%), June 25, 2008
- Bug-Fixes from Milestone II
- To achieve extensibility for NB-XUL by allowing Mozilla style extensions for it, and also adding advanced features like XUL debugger or integration with Mozilla XUL JS Debugger. and to implement the following features
- XUL Wizards (for XUL Project, XUL Page).
- XUL Nature project.
- XUL Perspective.
- XUL Extension export system. (to allow users to use Netbeans to build extensions for Mozilla style applications)
Milestone IV (Completion 100%), July 30,2008
- Bug fixes to Milestone III
- Final stages of the project include bug fixes to previous milestones and adding some advanced features like
- XUL Wizards (for XUL Project, XUL Page).
- XUL Nature project.
- XUL Perspective.
- XUL Extension export system. ( to allow users to use netbeans to build extensions for mozilla style applications)
- Mozilla DOM Inspector.
- Chrome URI Resolution Support
Implementation plan
We would be using the NetBeans API's for creating the module suite, which would plugin to the IDE, to provide project template, editor window, versioning support, etc.
Implementation plan in chronological order is as follows:-
- Design of Core APIs.
- Design of UI elements such as code snippet sidebar.
- Adding XUL support in the Netbeans editor, adding XUL project templates and wizards.
- Adding jXUL support.
- Design of XUL debugger APIs.
- Design of XUL extension export System.
- Adding support for Mozilla DOM Inspector ,Chrome URI Resolution support
Updated Implementation plan ,with increasing detail, will be made available with each milestone to account for hurdles that we might encounter during the development of the project.
Project Deliverables
Source code will be made available at each milestone. It will be licensed under CDDL Documentation of the completed modules will be included including instructions on how to install and use the completed modules, screencasts will also be made avaiable where required and nessary. the test cases for each module delivered will be specified and properly documented and made avaiable to the commuinty to allow for efficient bug testing and reporting, in the future. Implementation plan will be updated continuously after each milestone to account for the development done during each phase following an agile development pattern.
Platform Limitations
None.
What existing documents, tools or other projects help describe the project we've proposed?
jXUL 1
The jXUL project is an open source project to integrate the XUL language into the Java Platform. There are multiple ways in which this integration will take place. "In fact, this project will expand as its members find new ways to integrate these two technologies".
Orangevolt EclipseXUL 2
This is a plugin for the Eclipse IDE adding support for XUL. It reuses existing Eclipse features and is build upon the Eclipse WTP.
XulApp 3
The orginal XulApp version was a prototype incorporating a Project Explorer and drag and drop Form Designer.
XulBooster 4
Another eclipse plugin for XUL.
MozCreator 5
Java-based Mozilla Development Environment. Currently can build JAR files and Firefox extensions. Tabbed environment and draggable GUI. Automatically generates content.rdf files
XcUBE 6
Xul Dev Project 7
XULExplorer 8
References
#1 http://jxul.sourceforge.net/
#2 http://eclipsexul.sourceforge.net/
#3 http://xulapp.mozdev.org/
#4 http://www.xulbooster.org/
#5 http://xcube.sourceforge.net/
#6 http://www.xul.fr/xuldev.html
#7 http://developer.mozilla.org/en/docs/XUL_Explorer

