| <?php require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/app.class.php"); require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/nav.class.php"); require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/menu.class.php"); $App = new App(); $Nav = new Nav(); $Menu = new Menu(); include($App->getProjectCommon()); # All on the same line to unclutter the user's desktop' |
| |
| $pageTitle = ""; |
| $pageKeywords = ""; |
| $pageAuthor = ""; |
| |
| ob_start(); |
| ?> |
| <div id="maincontent"> |
| <div id="midcolumn"><P STYLE="margin-bottom: 0in"> |
| </P> |
| <?php |
| include_once($_SERVER['DOCUMENT_ROOT'] . "/projects/fragments/proposal-page-header.php"); |
| generate_header("IDE for Laszlo"); |
| ?> |
| |
| <h1>Laszlo Eclipse Frameworks</h1> |
| |
| <h2>Introduction</h2> |
| |
| The Laszlo Eclipse Frameworks Project is a proposed open source project to be incubated under the |
| Eclipse <a href="/technology/">Technology Project</a>. |
| |
| <p> The proposal is posted here to solicit community feedback, additional project participation, and ways the project can be leveraged from the Eclipse membership-at-large. |
| You are invited to comment on and/or join the project. |
| Please send all feedback to the <a href="http://www.eclipse.org/newsportal/thread.php?group=eclipse.technology.laszlo">http://www.eclipse.org/newsportal/thread.php?group=eclipse.technology.laszlo</a> |
| newsgroup. |
| </p> |
| |
| <h2>Background</h2> |
| <p> |
| Rich internet client platforms are becoming increasingly popular, as witnessed by the success of the OpenLaszlo platform, |
| an open source, XML-native platform for |
| developing rich Internet applications that run in any modern Web browser. |
| OpenLaszlo has become a reliable platform for thousands of developers, creating applications with the rich user interface capabilities of desktop client software and the instantaneous no-download Web deployment of HTML. |
| To date, millions of users are have used applications developed for the OpenLaszlo platform. |
| See the <a href="http://www.openlaszlo.org" target="_new">OpenLaszlo</a> project page for more information |
| </p> |
| <p> |
| It is important to have the proper eclipse frameworks in place to support the OpenLaszlo platform, and other rich internet client platforms. |
| These frameworks would allow integration of the client development and the server development, or allow integration of various |
| rich internet client technologies. |
| </p> |
| <h2>Description</h2> |
| <p> |
| The Laszlo Frameworks subproject's goal will be to develop a framework for development of |
| the OpenLaszlo platform, and other rich client platforms, with full support for editing, refactoring, |
| and debugging. The Frameworks would be an extensible such that new language features can easily be added, or other |
| xml/script based Rich Internet Markup Languages, such as XUL or XForms could be plugged in. |
| </p> |
| |
| <p> |
| Another goal of this project will be to provide the ability to easily and quickly define Eclipse UI Plugins |
| (extension point for views,wizards,dialogs,property/preference pages) using the LZX (Laszlo xml) markup, without writing any Java code. |
| While this is not the primary goal of the project, it has several advantages: |
| <ul> |
| <li>Provides added productivity to framework developers such that more functionality can quickly and easily be added. |
| </li> |
| <li>Could possibly benefits the entire eclipse developer community with the added productivity . |
| </li> |
| </ul> |
| |
| <p> |
| The frameworks would allow creation and testing of OpenLaszlo and other rich client applications . |
| Laszlo frameworks would also provide a rich editing environment for the LZX mark-up language. |
| The editing features would provide content assistance, syntax highlighting, and code formatting for both XML and script. |
| <p> |
| <p/> |
| In addition, the Laszlo frameworks would provide visual editing (WSYIWYG) frameworks. |
| It would support markers for reflecting compilation and syntactical errors. |
| <p/> |
| In addition to the editor, the following views would aslo be provided: |
| <ul> |
| <li>The Palette View would enable developers to drag and drop new XML/LZX elements into the editor.</li> |
| <li>The Properties View would be used to edit the attributes of the selected element in the editor.</li> |
| <li>The Outline View would the document as a tree, allowing the developer to make changes to the document's structure.</li> |
| |
| </ul> |
| <p/> |
| <p> |
| The frameworks would provide typical debugging capabilities to the extent allowed by the runtime. This include |
| variable inspection, expression evaluation, and console output. |
| <p/> |
| |
| <p> |
| A major focus of this project will be to bring the broader community |
| of tool developers, application specialists, testers, and day-to-day OpenLaszlo programmers into the development and refinement of this tool. |
| </p> |
| |
| <h2>Proposed Design</h2> |
| <p> |
| The Laszlo Frameworks would be be based on the WebTools project, specifically the Structured Editor capabilities (XML Editing). |
| A schema-like XML file would define the xml language grammar (such as lzx). This file would contain the necessary information |
| to provide rich editing capabilities on that grammar. This would include such information such as what icon is associated with |
| a tag, what kind of edit field should be used to edit an attribute, and what are the valid drag drop combinations. |
| Different versions of this file could be used to provide editing of different grammars, such as XUL, or XForms. |
| </p> |
| <p>The frameworks would tightly integrate XML tags and scripting, such as JavaScript. It would know what parts of a document are |
| script, vs what parts are XML. It would maintain an internal model |
| of the script, similar to the way the JDT models the Java model. This script model would be kept in sync with the XML Model. |
| </p> |
| <p> |
| One part of the frameworks would be an SWT renderer of LZX. This would allows certain plugins or extension points to be implmented |
| in XML (LZX). For instance, a "view" extension-point would point to the LZX view renderer class, and contain the LZX to define the |
| view. As an example: |
| <pre> |
| <xmp> |
| <extension |
| point="org.eclipse.ui.views"> |
| <view |
| name="A LZX View" |
| class="org.eclipse.laszlo.ViewRenderer" |
| id="org.eclipse.lzxview"> |
| <canvas> |
| <checkbox>a option</checkbox> |
| </canvas> |
| </view> |
| </xmp> |
| </pre> |
| <p> |
| The LZX renderer would interpet LZX tags, generate the corresponding SWT controls, |
| and handle actions appropriately. The renderer would possibly use the rhino JavaScript engine for it's JavaScript support. |
| It could also use the Bean Scripting Framework to expose eclipse Java objects (i.e. IResource) to the script. |
| </p> |
| |
| <h2>Extension Points</h2> |
| <p> |
| The project will define appropriate extension points that would enable others to provide |
| value-added functionality. These include: |
| <ul> |
| <li>ability to "plug-in" a different grammer other than LZX, such as XForms or XUL. The grammar would be defined in an |
| xml file, so this would not involve writing Java code. |
| </li> |
| <li>ability to "plug in" a different language. This would enable the suppor for scripting languages other than JavaScript. |
| </li> |
| <li>ability to integrate language validators. This would allow for inline validation as well as syntax highlighting for pluggable models of other languages. |
| </li> |
| |
| <li>ability to extend the communication protocol for moving visual |
| elements. By opening the protocol that exists to communicate between |
| the running laszlo application and the framework, this allows other |
| kinds of embedded applications to communicate state change information |
| to and from Eclipse, and keep the editor's data model in sync. This |
| could be extended for use by many kinds of information, not limited to |
| visual state. |
| </li> |
| |
| <li>ability to create debugging tools based on the remote debugger |
| protocol, and to connect romotely to an application for debugging in |
| real time. The framework includes a debugging protocol for |
| communicating debug state information between Eclipse and a running |
| Laszlo application. By extending this portocol, other kinds of |
| applications can provide debugging information to Eclipse. For |
| example, an applet, even one residing on another machine, could be |
| debugged if it was compiled with a small stub using the Eclipse remote |
| debugging protocol.</li> |
| |
| <li>ability to "plug-in" third-party debugging tools. The debugging |
| protocol can also be extended to define interfaces that allow third-party |
| vendors to plug in existing debugging tools. </li> |
| |
| <li>ability to "plug-in" compiler implementations or versions. |
| </li> |
| |
| <li>ability for a third party vendor to add visual components and |
| component libraries, by extending the framework to accept UI representations of new components.</li> |
| |
| <li>ability to create custom property editors for runtime visual |
| components, by extending the framework to allow control over which |
| properties and what types of properties are available.</li> |
| |
| <li> ability to include listeners for runtime events and logging operations, etc. |
| </li> |
| </ul> |
| |
| |
| <h2>Status</h2> |
| <p> |
| IBM is offering its IBM technology preview <b>IDE for Laszlo</b> as an initial code base (see |
| <a href="http://www.alphaworks.ibm.com/tech/ide4laszlo">http://www.alphaworks.ibm.com/tech/ide4laszlo</a>). |
| IDE for Laszlo is a technology preview of an Eclipse-based development environment for creating, editing, debugging, and testing |
| applications based on the LZX declarative mark-up language. |
| <p/> |
| <p> |
| IBM has produced two technology preview releases. The first release was based upon the IBM initial contribution to the Eclipse web tools project, |
| and Eclipse 3.0. |
| The second release added the visual editing of OpenLaszlo Applications. |
| The latest release (2.1) was based on the WebTools 0.7. |
| </p> |
| |
| <p> |
| A demonstration and a gallery of screenshots can be |
| found at: <a href="http://www.alphaworks.ibm.com/tech/ide4laszlo">http://www.alphaworks.ibm.com/tech/ide4laszlo</a>.<br> |
| </p> |
| |
| <h2>Development Plan</h2> |
| <p> |
| The goals up to the point of this technology preview have been to |
| develop a functional feature and plug-in set |
| that supports editing and debugging. |
| These goals have been met. |
| </p> |
| <p> |
| A formal development plan is being formulated, which includes: |
| <ul> |
| <li>Eclipse (Swt) rendering of LZX, implement UI plugins in LZX markup, possibly within the plugin.xml itself |
| </li> |
| <li>refactoring support |
| </li> |
| <li>define extension points for plugging in other xml/script based UI markups. |
| </li> |
| <li>compiler performance improvements |
| </li> |
| <li>improved debug support - JavaScript code stepping, breakpoints, live code update, http request monitoring, extending the debugging protocol |
| </li> |
| <li>Quick navigation to named elements ("meta-dot") |
| </li> |
| <li>WYSIWYG interface to performance tools |
| </li> |
| </ul> |
| |
| <h2>Relationships to other projects</h2> |
| <p> |
| This subproject is built on top of the Web Tools project (and thus it's prereqs). |
| </p> |
| |
| <h2>Interested Parties</h2> |
| <p><b>Prospective Interim Leads</b><ul> |
| <li>Phil Berkland, IBM (berkland at us.ibm.com)</li> |
| <li>Amy Muntz, OpenLaszlo.org (amuntz at laszlosystems.com)</li> |
| </ul> |
| <b>Interested Organizations</b><ul> |
| <li><a href="http://www.ibm.com">IBM</a></li> |
| <li><a href="http://openlaszlo.org">OpenLaszlo.org</a> |
| (<a href="http://laszlosystems.com">Laszlo Systems, Inc.</a>)</li> |
| </ul> |
| <p><b>Potential Committers / Contributors</b></p> |
| <ul> |
| <li>Max Carlson, OpenLaszlo.org (max at laszlosystems.com)</li> |
| <li>Phil Berkland, IBM (berkland@us.ibm.com)</li> |
| <li>Gino Bustelo, IBM (lbustelo@us.ibm.com)</li> |
| <li>Don Sedota, IBM (sedota@us.ibm.com)</li> |
| <li>Henry Minsky, OpenLaszlo.org (hqm at laszlosystems.com)</li> |
| <li>Amy Muntz, OpenLaszlo.org (amuntz at laszlosystems.com)</li> |
| <li>Oliver Steele, OpenLaszlo.org (osteele at laszlosystems.com)</li> |
| <li>P.T. Withington, OpenLaszlo.org (ptw at laszlosystems.com)</li> |
| </ul> |
| |
| <P><BR><BR> |
| </P> |
| </div> |
| </div> |
| <?php |
| # Paste your HTML content between the EOHTML markers! |
| $html = ob_get_contents(); |
| ob_end_clean(); |
| |
| # Generate the web page |
| $App->generatePage($theme, $Menu, $Nav, $pageAuthor, $pageKeywords, $pageTitle, $html); |
| ?> |