<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><title>Project Plan - rt.rap</title><meta name="author" content="Bjorn Freeman-Benson" />
<meta name="keywords" content="" /><link rel="stylesheet" type="text/css" href="http://www.eclipse.org/eclipse.org-common/themes/Phoenix/css/small.css" title="small" /><link rel="alternate stylesheet" type="text/css" href="http://www.eclipse.org/eclipse.org-common/themes/Phoenix/css/large.css" title="large" /><link rel="stylesheet" type="text/css" href="http://www.eclipse.org/eclipse.org-common/themes/Phoenix/css/visual.css" media="screen" /><link rel="stylesheet" type="text/css" href="http://www.eclipse.org/eclipse.org-common/themes/Phoenix/css/layout.css" media="screen" />
<!--[if IE]> 	<link rel="stylesheet" type="text/css" href="http://www.eclipse.org/eclipse.org-common/themes/Phoenix/css/ie_style.css" media="screen"/> <![endif]-->
<!--[if IE 6]> 	<link rel="stylesheet" type="text/css" href="http://www.eclipse.org/eclipse.org-common/themes/Phoenix/css/ie6_style.css" media="screen"/> <![endif]-->
<link rel="stylesheet" type="text/css" href="http://www.eclipse.org/eclipse.org-common/themes/Phoenix/css/print.css" media="print" />
<link rel="stylesheet" type="text/css" href="http://www.eclipse.org/eclipse.org-common/themes/Phoenix/css/header.css" media="screen" />
<script type="text/javascript" src="http://www.eclipse.org/eclipse.org-common/themes/Phoenix/styleswitcher.js"></script>
</head>
<body>
<div id="header">
	<div id="header-graphic" class="eclipse-main">
		<a href="http://www.eclipse.org/"><img src="http://www.eclipse.org/eclipse.org-common/themes/Phoenix/images/eclipse_home_header.jpg" alt="" /></a><h1>Eclipse</h1>	
	</div>
	<div id="header-global-holder" class="eclipse-main-global">
		<div id="header-global-links"><ul>
<li><a href="http://www.eclipse.org/org/foundation/contact.php" class="first_one">Contact</a></li><li><a href="http://www.eclipse.org/legal/">Legal</a></li>
			</ul>
		</div>
		<div id="header-icons">
<a href="http://www.youtube.com/user/EclipseFdn" target="_blank"><img src="/eclipse.org-common/themes/Phoenix/images/Icon_Live.png" width="28" height="28" alt="Eclipse YouTube Channel" title="Eclipse YouTube Channel" /></a>
<a href="http://www.eclipseplugincentral.com"><img src="http://www.eclipse.org/eclipse.org-common/themes/Phoenix/images/Icon_plugin.png" width="28" height="28" alt="Eclipse Plugin Central" title="Eclipse Plugin Central" /></a>
<a href="http://www.planeteclipse.org"><img src="http://www.eclipse.org/eclipse.org-common/themes/Phoenix/images/Icon_planet.png" width="28" height="28" alt="Planet Eclipse" title="Planet Eclipse" /></a>
		</div>
	</div></div><div id="header-menu"><div id="header-nav">
		<ul>
		<li><a class="first_one" href="http://www.eclipse.org/" target="_self">Home</a></li> 
				<li><a  href="http://www.eclipse.org/users/" target="_self">Users</a></li> 
				<li><a  href="http://www.eclipse.org/membership/" target="_self">Members</a></li> 
				<li><a  href="http://www.eclipse.org/committers/" target="_self">Committers</a></li> 
				<li><a  href="http://www.eclipse.org/downloads/" target="_self">Downloads</a></li> 
				<li><a  href="http://www.eclipse.org/resources/" target="_self">Resources</a></li> 
				<li><a  href="http://www.eclipse.org/projects/" target="_self">Projects</a></li> 
				<li><a  href="http://www.eclipse.org/org/" target="_self">About Us</a></li> 
				</ul>
	</div>
	<div id="header-utils">
		<form action="http://www.google.com/cse" id="searchbox_017941334893793413703:sqfrdtd112s">
	 	<input type="hidden" name="cx" value="017941334893793413703:sqfrdtd112s" />
  		<input type="text" name="q" size="25" />
  		<input type="submit" name="sa" value="Search" />
		</form>
		<script type="text/javascript" src="http://www.google.com/coop/cse/brand?form=searchbox_017941334893793413703%3Asqfrdtd112s&lang=en"></script>		<ul>
						<li class="text_size"><a class="smallText" title="Small Text" href="#" onclick="setActiveStyleSheet('small');return false;">A</a> <a class="largeText" title="Large Text" href="#" onclick="setActiveStyleSheet('large');return false;">A</a></li>
		</ul>
	</div></div><div id="leftcol">
<ul id="leftnav">
<li style="background-image: url(/eclipse.org-common/themes/Phoenix/images/leftnav_fade.jpg); background-repeat: repeat-x; border-style: none;"><br /><br /><br /><br /><br /><br /><br /><br />
</li>
</ul>

</div>
<div id="container"><style>
h2 {
	border-bottom: 2px solid gray;
}
h3 {
	border-bottom: 1px dotted gray;
}
</style>
<div xmlns="http://www.w3.org/1999/xhtml" id="rendered-plan">
  <div id="maincontent">
    <div id="midcolumn"><h1><span style="font-size: 140%">Project Plan For
                        <a href="http://www.eclipse.org/projects/project_summary.php?projectid=rt.rap">Rich Ajax Platform</a></span>, version 1.2</h1><div id="toc"><p><a name="toc"><strong>Table of Contents</strong></a></p><ul><li><a href="#introduction">Introduction</a></li><li><a href="#release_deliverables">
                       Release Deliverables
                    </a></li><li><a href="#release_milestones">
                       Release Milestones
                    </a></li><li><a href="#target_environments">
                        Target Environments
                    </a></li><li><a href="#compatibility">
                        Compatibility with Previous Releases
                    </a></li><li><a href="#themes_and_priorities">
                        Themes and Priorities
                    </a></li></ul></div><h2><a name="introduction">Introduction</a></h2><div>
      <div style="align:center;"><big><b>Preliminary</b></big></div>
      The RAP 1.2 project plan is still in preliminary state and not yet agreed upon by all parties.
      <hr/>
      The RAP project enables developers to build rich, Ajax-enabled Web 
      applications by using the Eclipse development model, plug-ins with 
      the well known Eclipse workbench extenstion points, JFace, and a 
      widget toolkit with SWT API.
    </div><h2><a name="release_deliverables">Release Deliverables</a></h2><div>
		  <ul>
		    <li>
		      <strong>Tooling</strong> (includes tool for debugging and 
		      testing, runtime, documentation) available as Update Site
		    </li>
		    <li>
		      <strong>Runtime</strong> (target platform, includes source) 
		      available as downloadable archive
		    </li>
		  </ul>
    </div><p><a href="#toc">Table of Contents</a></p><h2><a name="release_milestones">Release Milestones</a></h2><div>
        Release milestones will be occurring at roughly 6 week intervals,
        and will be aligned with the
        <a href="http://wiki.eclipse.org/Galileo_Simultaneous_Release">
        Galileo Simultaneous Release</a> train.
        Milestone names start with M2 in order to clarify this
        relationship.
			</div><table border="1" align="center"><tr><td><b>M2</b></td><td>10/8/2008</td><td><div>1.2 M2</div></td></tr><tr><td><b>M3</b></td><td>11/19/2008</td><td><div>1.2 M3</div></td></tr><tr><td><b>M4</b></td><td>1/12/2009</td><td><div>1.2 M4</div></td></tr><tr><td><b>M5</b></td><td>2/16/2009</td><td><div>1.2 M5</div></td></tr><tr><td><b>M6</b></td><td>3/23/2009</td><td><div>1.2 M6 (API Freeze)</div></td></tr><tr><td><b>M7</b></td><td>5/11/2009</td><td><div>1.2 M7 (Feature Freeze)</div></td></tr><tr><td><b>RC1</b></td><td>5/25/2009</td><td><div>1.2 RC1</div></td></tr><tr><td><b>RC2</b></td><td>6/1/2009</td><td><div>1.2 RC2</div></td></tr><tr><td><b>RC3</b></td><td>6/8/2009</td><td><div>1.2 RC3</div></td></tr><tr><td><b>RC4</b></td><td>6/15/2009</td><td><div>1.2 RC4</div></td></tr></table><div>
        
        The target date for availability of RAP 1.2 is
        June 26, 2009 (with Galileo)
			</div><p><a href="#toc">Table of Contents</a></p><h2><a name="target_environments">Target Environments</a></h2><div>
      <p>
      The server-side part of the Rich Ajax Platform 1.2 will be written and 
      compiled against
      <ul>
        <li>
          <a href="http://www.eclipse.org/equinox/server/">Equinox</a> 
          Version 3.5</li>
        <li>Version 1.4.2 of the Java Platform APIs (i.e., Java 2 Platform,
          Release 1.4.2 SE)</li>
        <li>
          <a href="http://java.sun.com/products/servlet/reference/api/index.html">
          Java Servlet API</a> Version 2.3 - 2.5</li>
      </ul>
      </p>
      <p>
      The client-side reference implementation depends upon 
      <a href="http://qooxdoo.org">qooxdoo</a>.
      For this release the following web browsers/rendering engines will be
      supported
      <ul>
	      <li>Internet Explorer &gt;= 7.0</li>
	      <li>Gecko (i.e. Firefox, Netscape)</li>
	      <li>Webkit (i.e. Safari, Google Chrome)</li>
      </ul>
      </p>
		</div><h3>Internationalization</h3>
			<div>
        The Rich Ajax Platform is designed as the basis for internationalized
        products. The user interface elements provided by the RAP
        components, including dialogs and error messages, are externalized. The
        English strings are provided as the default resource bundles.
      </div>
		<p><a href="#toc">Table of Contents</a></p><h2><a name="compatibility">Compatibility with Previous Releases</a></h2><div>
		RAP 1.2 will be backward compatible with RAP 1.1.
		</div><p><a href="#toc">Table of Contents</a></p><h2><a name="themes_and_priorities">Themes and Priorities</a></h2><div/><h3>Reduce the gap between RWT and SWT</h3><div>
				<p>As RWT implements a subset of the SWT API, we aim to implement 
				functionality yet missing from RWT.
				</p>
				<p>This includes to make use of the newly implemented API in higher 
				layers (e.g. Workbench, JFace).
				</p>
        </div><ul><li><b>Committed</b><ul><li>Slider widget missing [<a href="http://bugs.eclipse.org/256740">256740</a>] (target milestone: 1.2 M4)</li><li>Cursor support missing [<a href="http://bugs.eclipse.org/244004">244004</a>] <strike>(target milestone: 1.2 M2)</strike></li><li>[DateTime] DateTime widget missing [<a href="http://bugs.eclipse.org/183177">183177</a>] <strike>(target milestone: 1.2 M2)</strike></li><li>[MessageBox] MessageBox missing [<a href="http://bugs.eclipse.org/198389">198389</a>] <strike>(target milestone: 1.2 M2)</strike></li><li>KeyEvents are missing [<a href="http://bugs.eclipse.org/225764">225764</a>] <strike>(target milestone: 1.2 M4)</strike></li><li>Enable cursor usage in Workbench code [<a href="http://bugs.eclipse.org/246772">246772</a>] <strike>(target milestone: 1.2 M2)</strike></li><li>JFace Cell Editors missing [<a href="http://bugs.eclipse.org/247122">247122</a>] <strike>(target milestone: 1.2 M3)</strike></li><li>TraverseEvents for cell editors are missing [<a href="http://bugs.eclipse.org/250611">250611</a>] <strike>(target milestone: 1.2 M3)</strike></li><li>ExpandBar missing [<a href="http://bugs.eclipse.org/231086">231086</a>] <strike>(target milestone: 1.2 M2)</strike></li><li>Scale widget is missing [<a href="http://bugs.eclipse.org/239006">239006</a>] <strike>(target milestone: 1.2 M2)</strike></li></ul></li></ul><ul><li><b>Proposed</b><div>
        <ul>
          <li>Drag &amp; Drop</li>
        </ul>
			  </div></li></ul><ul><li><b>Deferred</b></li></ul><h3>Design for Extensibility</h3><div>
			    This theme is about the extensibility of the RAP platform to achieve 
			    independance from a certain client technology.
			  </div><ul><li><b>Committed</b><div>
        <ul>
          <li>Specify and implement an exchangable client/server 
            synchronization mechanism.</li>
        </ul>
        </div></li></ul><ul><li><b>Proposed</b></li></ul><ul><li><b>Deferred</b></li></ul><h3>New Web Centric Features</h3><div>
			  </div><ul><li><b>Committed</b><div>
        <ul>
          <li>Web Look &amp; Feel for the Workbench (Exemplary implmentation and 
          API to plug in other implementations)</li>
          <li>Extend themeability of existing widgets</li>
        </ul>
        </div></li></ul><ul><li><b>Proposed</b><div>
        <ul>
          <li>More flexible widget decorations (e.g. rounded corners)</li>
          <li>Enable RAP applications to run on multiple browser-tabs, in 
            portlet environments</li>
        </ul>
        </div></li></ul><ul><li><b>Deferred</b></li></ul><p><a href="#toc">Table of Contents</a></p></div>
  </div>
</div>
<div style="visibility: hidden; float: right; text-align: right"><a href="?projectid=rt.rap&raw=1">view raw xml of project plan</a><br>
<a href="http://www.eclipse.org/projects/dev_process/project-status-infrastructure.php">from project meta-data key "projectplanurl"</a></div>

</div> <!-- midcolumn -->
</div> <!-- maincontent -->
		<script type="text/javascript">
		var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
		document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
		</script>
		<script type="text/javascript">
		var pageTracker = _gat._getTracker("UA-910670-2");
		pageTracker._initData();
		pageTracker._trackPageview();
		</script></div><div id="footer">
<ul id="footernav">
<li class="first"><a href="http://www.eclipse.org/">Home</a></li>
<li><a href="http://www.eclipse.org/legal/privacy.php">Privacy Policy</a></li>
<li><a href="http://www.eclipse.org/legal/termsofuse.php">Terms of Use</a><a href="http://www.eclipse.org/org/press-release/20081112_termsofuse.php"><img src="http://www.eclipse.org/images/updated.png" align="absmiddle" /></a></li>
</ul>
<p>Copyright &copy; 2008 The Eclipse Foundation. All Rights Reserved</p>
</div></body></html>