You are viewing a plain text version of this content. The canonical link for it is here.
Posted to xap-commits@incubator.apache.org by jm...@apache.org on 2007/03/17 11:49:36 UTC

svn commit: r519294 - in /incubator/xap/trunk: codebase/src/xap/ samples/WebContent/examples/openAjax/

Author: jmargaris
Date: Sat Mar 17 04:49:36 2007
New Revision: 519294

URL: http://svn.apache.org/viewvc?view=rev&rev=519294
Log:
changes to support the openajax hub

Added:
    incubator/xap/trunk/samples/WebContent/examples/openAjax/HubTest-BasicConformance.html   (with props)
    incubator/xap/trunk/samples/WebContent/examples/openAjax/HubTest-BasicConformance.js   (with props)
    incubator/xap/trunk/samples/WebContent/examples/openAjax/README.txt   (with props)
    incubator/xap/trunk/samples/WebContent/examples/openAjax/SampleAjaxLibrary.js   (with props)
    incubator/xap/trunk/samples/WebContent/examples/openAjax/TablePopulator.js   (with props)
    incubator/xap/trunk/samples/WebContent/examples/openAjax/xapApp.xal
Modified:
    incubator/xap/trunk/codebase/src/xap/Xap.js

Modified: incubator/xap/trunk/codebase/src/xap/Xap.js
URL: http://svn.apache.org/viewvc/incubator/xap/trunk/codebase/src/xap/Xap.js?view=diff&rev=519294&r1=519293&r2=519294
==============================================================================
--- incubator/xap/trunk/codebase/src/xap/Xap.js (original)
+++ incubator/xap/trunk/codebase/src/xap/Xap.js Sat Mar 17 04:49:36 2007
@@ -38,6 +38,11 @@
  *	START OF PUBLIC METHODS FOR THE XAP CLASS USED TO 
  *  CREATE THE APPLICATION WITH IN A WEB PAGE.
  */
+ 
+
+
+
+
 
 /** 
  * Static method to create an application.  jkl jk 
@@ -253,6 +258,20 @@
 	} else {
 		return xap.util.Debug ;
 	}
+}
+
+//if there is an openAjax thing around
+//register some globals with it and such
+if (typeof OpenAjax != "undefined"){
+	OpenAjax.registerLibrary("xap", "http://openxal.org/xap", "0.3");
+	
+	//kind of silly, we have both xap and Xap...
+	//we don't register Dojo because it should be compliant at some point in the 
+	//future. google is never going to be compliant so we'll take care of that
+	OpenAjax.registerGlobals("xap", ["xap","google","Xap"]);
+	
+	//TODO is "application" right here?
+	OpenAjax.addOnLoad(Xap.createEmbeddedApplications, null, "application");
 }
 
 

Added: incubator/xap/trunk/samples/WebContent/examples/openAjax/HubTest-BasicConformance.html
URL: http://svn.apache.org/viewvc/incubator/xap/trunk/samples/WebContent/examples/openAjax/HubTest-BasicConformance.html?view=auto&rev=519294
==============================================================================
--- incubator/xap/trunk/samples/WebContent/examples/openAjax/HubTest-BasicConformance.html (added)
+++ incubator/xap/trunk/samples/WebContent/examples/openAjax/HubTest-BasicConformance.html Sat Mar 17 04:49:36 2007
@@ -0,0 +1,191 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
+	"http://www.w3.org/TR/html4/loose.dtd">
+<!--
+/*******************************************************************************
+ * HubTest-BasicConformance.html:
+ *		Test case for Ajax libraries that verifies whether a given library
+ *		supports the most basic requirements from the OpenAjax Hub Specification.
+ *
+ *		To use this test case against a given Ajax library, this test case
+ *		needs to be customized. At a minimum, you will need to replace the
+ *		following line:
+ *
+ *			<script language="JavaScript" type="text/javascript" src="SampleAjaxLibrary.js"></script>
+ *
+ *		with a <script> element that loads your Ajax library instead of SampleAjaxLibrary.js.
+ *
+ *		Libraries can make other modifications, but the <div> block
+ *		with id=HubTest_BasicConformance" must be left intact.
+ *
+ *		Other customization instructions are included within the comments in the
+ *		various files.
+ *
+ * Copyright 2007 OpenAjax Alliance
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not 
+ * use this file except in compliance with the License. You may obtain a copy 
+ * of the License at http://www.apache.org/licenses/LICENSE-2.0 . Unless 
+ * required by applicable law or agreed to in writing, software distributed 
+ * under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 
+ * CONDITIONS OF ANY KIND, either express or implied. See the License for the 
+ * specific language governing permissions and limitations under the License.
+ *
+ ******************************************************************************/
+-->
+
+<!--	****************************************************************************
+			The xmlns declarations are included in this test case below because they are required
+			by the OpenAjax Hub Specification which is forward looking to when browsers
+			support XML/XHTML properly. Note, however, that xmlns declarations generally have 
+			no effect with browsers shipping at the time this test case was developed (early 2007).
+
+			The xmlns:SampleAjaxLibrary declaration should be changed such that
+				- "SampleAjaxLibrary" is changed to the prefix used by the given library
+				- "http://example.com/SampleAjaxLibrary" is changed to the namespaceURI for the library
+			(See documentation on OpenAjax.registerLibrary() for more about prefix and namespaceURI.)
+			**************************************************************************** -->
+
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:xap="http://openxal.org/xap">
+<head>
+	<!--	****************************************************************************
+				THE CONTENTS OF THE FOLLOWING HEAD ELEMENTS MUST NOT BE CHANGED
+				(except it  is OK to change the location of the referenced files). 
+				**************************************************************************** -->
+	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+	<title>OpenAjax Hub Basic Conformance Test</title>
+	<link rel="StyleSheet" href="stylesheets/hubtest.css" type="text/css" />
+	<link rel="StyleSheet" href="../../css/xapDefault.css" type="text/css" />
+
+	<!--	****************************************************************************
+				THE FOLLOWING SCRIPT ELEMENTS USUALLY NEED TO BE AT THE TOP OF THE HTML FILE.
+				HERE IS THE LIST OF CUSTOMIZATIONS YOU MUST OR MAY DO TO THIS SECTION:
+
+				YOU MUST CUSTOMIZE IT AS FOLLOWS.
+					- You must change HubTest-BasicConformance-MyPrefix from "SampleAjaxLibrary"
+							to the prefix used by your library.
+
+				YOU MAY CUSTOMIZE THE FOLLOWING LOGIC AS FOLLOWS.
+					- Your toolkit might include the OpenAjax Hub (i.e., ../../release/OpenAjax.js)
+						within your toolkit distribution or might put the Hub source code in a different
+						location than ../../release/OpenAjax.js. Therefore, it is OK to change
+						the 'src' attribute or remove the SCRIPT tag for OpenAjax.js entirely
+						(if you include the Hub within your toolkit).
+						(But be aware that if the Hub is part of your toolkit, you probably have to move
+						the SCRIPT tag for HubTest-BasicConformance.js such that it is loaded
+						after your toolkit because it makes calls into various OpenAjax.* functions.)
+
+					- If you are using a different implementation of the Hub than the 
+						Alliance's reference implementation at http://openajaxallianc.sourceforge.net,
+						and your library register load event handlers with the Hub,
+						you probably need to change the logic within function HubTest_BasicConformance_Verify_Load()
+						to look at your implementation's private variables.
+				**************************************************************************** -->
+	<script language="JavaScript" type="text/javascript" src="release/OpenAjax.js"></script>
+
+	<script language="JavaScript" type="text/javascript">
+			var HubTest_BasicConformance_MyPrefix = "xap";
+
+			function HubTest_BasicConformance_Verify_Load() {
+				if ((OpenAjax._callbacks.load.library && OpenAjax._callbacks.load.library.length) || 
+						(OpenAjax._callbacks.load.component && OpenAjax._callbacks.load.component.length)) {
+					loadHandlerWorking = true;
+				}
+			}
+
+			// Invoke HubTest_BasicConformance_Verify_Load as the first thing that happens
+			// during OnLoad event processing. (Determine if callback arrays have been set properly.)
+			OpenAjax.addOnLoad("HubTest_BasicConformance_Verify_Load", null, "library");
+	</script>
+
+	<script language="JavaScript" type="text/javascript" src="HubTest-BasicConformance.js"></script>
+
+	<!--	****************************************************************************
+				YOU MUST REMOVE/REPLACE THE FOLLOWING SCRIPT ELEMENT.
+				The <script> tag below that references SampleAjaxLibrary.js must be removed and 
+				instead you will need to have your own Ajax library loaded instead.
+				**************************************************************************** -->
+	<script type="text/javascript">
+	djConfig = {
+		parseWidgets: false
+	};
+	</script>    	
+	 <script language="JavaScript" type="text/javascript" src="../../xapcore.js"></script>
+
+	<!--	****************************************************************************
+				YOU MAY CUSTOMIZE THE FOLLOWING LOGIC.
+					- Instead of having the ConformanceChecks() happen at the end of OnLoad processing
+						(as the code below does),
+						you might want instead to invoke ConformanaceChecks() manually, particularly if your toolkit
+						performs some of its initialization after the OnLoad event has completed.
+				**************************************************************************** -->
+	<script language="JavaScript" type="text/javascript">
+			// Invoke ConformanceChecks so that they happen at the end of OnLoad processing.
+			OpenAjax.addOnLoad("ConformanceChecks");
+	</script>
+
+
+</head>
+
+<body>
+	<!--	****************************************************************************
+				THE CONTENTS OF THE FOLLOWING DIV BLOCK MUST NOT BE CHANGED.
+				(But it's OK if your library needs to move this block elsewhere
+				within the document hierarchy and OK if you need to add other
+				elements to the BODY.)
+				**************************************************************************** -->
+	<div id="HubTest_BasicConformance">
+		<p id="OpenAjaxBanner" class="imageContainer">
+			<a href="http://www.openajax.org">
+				<img id="OpenAjaxBanner" src="images/OpenAjaxAllianceBanner.jpg" width="846px" alt="OpenAjax Alliance banner"/>
+			</a>
+		</p>
+		<h1 class="HubTestTitle">OpenAjax Hub Basic Conformance Test</h1>
+		<p id="LibraryName">For library: (unknown)</p>
+		<table id="HubTestResults" class="HubTestResults">
+			<tbody>
+				<tr>
+					<td class="HubTestNumber">1</td>
+					<td class="HubTestLabel">OpenAjax Conformance Requirement (Libraries): Library Registration</td>
+					<td class="HubTestResult" id="registerLibraryResult"><span style="color:red">TEST NOT SUCCESSFUL</span></td>
+				</tr>
+				<tr>
+					<td class="HubTestNumber">2</td>
+					<td class="HubTestLabel">OpenAjax Conformance Requirement (Libraries): Globals Registration</td>
+					<td class="HubTestResult" id="registerGlobalsResult"><span style="color:red">TEST NOT SUCCESSFUL</span></td>
+				</tr>
+				<tr>
+					<td class="HubTestNumber">3</td>
+					<td class="HubTestLabel">OpenAjax Conformance Requirement (Libraries): Load/Unload Handlers Registered Indirectly Through the Hub</td>
+					<td class="HubTestResult" id="addOnLoadResult"><span style="color:blue">TEST NOT APPLICABLE</span></td>
+				</tr>
+				<tr>
+					<td class="HubTestNumber">4</td>
+					<td class="HubTestLabel">OpenAjax Hub Publish/Subscribe Test</td>
+					<td class="HubTestResult" id="PublishSubscribeResult"><span style="color:red">TEST NOT SUCCESSFUL</span></td>
+				</tr>
+				<tr>
+					<td class="HubTestNumber">5</td>
+					<td class="HubTestLabel">OpenAjax Hub Markup Scanner Test</td>
+					<td class="HubTestResult" id="MarkupScannerResult"><span style="color:red">TEST NOT SUCCESSFUL</span></td>
+				</tr>
+			</tbody>
+		</table>
+		<p>Notes:</p>
+		<ul>
+			<li>A library completely passes this test if all boxes say TEST SUCCEEDED.</li>
+			<li>Some toolkits do not initialize themselves during 'load' event processing.
+					Because of these situations, it is OK if the load/unload test case says TEST NOT APPLICABLE.</li>
+		</ul>
+	</div>
+	
+	<!-- without a fixed height IE makes the table huge...maybe an xhtml thing -->
+	<div style="height:150px" startPage="xapApp.xal"/>
+
+	<!--	****************************************************************************
+				Extra credit: A library developer might want to include a snippet of content that uses
+				his Ajax library to include extra graphical content in order spice up the 
+				visual result from the test.
+				**************************************************************************** -->
+
+</body>
+</html>
\ No newline at end of file

Propchange: incubator/xap/trunk/samples/WebContent/examples/openAjax/HubTest-BasicConformance.html
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/xap/trunk/samples/WebContent/examples/openAjax/HubTest-BasicConformance.js
URL: http://svn.apache.org/viewvc/incubator/xap/trunk/samples/WebContent/examples/openAjax/HubTest-BasicConformance.js?view=auto&rev=519294
==============================================================================
--- incubator/xap/trunk/samples/WebContent/examples/openAjax/HubTest-BasicConformance.js (added)
+++ incubator/xap/trunk/samples/WebContent/examples/openAjax/HubTest-BasicConformance.js Sat Mar 17 04:49:36 2007
@@ -0,0 +1,62 @@
+/*******************************************************************************
+ * HubTest-BasicConformance.js:
+ *		JavaScript for test case HubTest-BasicConformance.html.
+ *
+ *		This JavaScript MUST NOT BE CHANGED.
+ *
+ * Copyright 2007 OpenAjax Alliance
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not 
+ * use this file except in compliance with the License. You may obtain a copy 
+ * of the License at http://www.apache.org/licenses/LICENSE-2.0 . Unless 
+ * required by applicable law or agreed to in writing, software distributed 
+ * under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 
+ * CONDITIONS OF ANY KIND, either express or implied. See the License for the 
+ * specific language governing permissions and limitations under the License.
+ *
+ ******************************************************************************/
+
+var checkPrefix = HubTest_BasicConformance_MyPrefix;
+var publishSubscribeWorking = false;
+var markupScannerWorking = false;
+var loadHandlerWorking = false;
+
+function TestWasSuccessful(idstring) {
+	var elem = document.getElementById(idstring);
+	elem.innerHTML = '<span style="color:green">TEST SUCCEEDED!!!</span>';
+}
+
+function subscribeTestCB(prefix, name, subscriberData, publisherData) {
+	publishSubscribeWorking = true;
+}
+
+/* This function updates the HTML DOM based on whether the various test succeeded.
+	It is invoked when the document 'load' event is raised. */
+function ConformanceChecks() {
+	var elem = document.getElementById("LibraryName");
+	elem.innerHTML = '<span style="color:green">For library: '+checkPrefix+'</span>';
+	if (OpenAjax.libraries[checkPrefix]) {
+		TestWasSuccessful("registerLibraryResult");
+	}
+	if (OpenAjax.globals[checkPrefix]) {
+		TestWasSuccessful("registerGlobalsResult");
+	}
+	if (loadHandlerWorking) {
+		TestWasSuccessful("addOnLoadResult");
+	}
+	OpenAjax.subscribe("foo","bar",subscribeTestCB);
+	OpenAjax.publish("foo","bar");
+	if (publishSubscribeWorking) {
+		TestWasSuccessful("PublishSubscribeResult");
+	}
+	if (markupScannerWorking) {
+		TestWasSuccessful("MarkupScannerResult");
+	}
+}
+
+/* This logic verifies that the markup scanner is working */
+function markupScannerCB(element) {
+	markupScannerWorking = true;
+}
+OpenAjax.registerAttrScanCB("foo", "class", "match", "HubTestResult", markupScannerCB);
+

Propchange: incubator/xap/trunk/samples/WebContent/examples/openAjax/HubTest-BasicConformance.js
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/xap/trunk/samples/WebContent/examples/openAjax/README.txt
URL: http://svn.apache.org/viewvc/incubator/xap/trunk/samples/WebContent/examples/openAjax/README.txt?view=auto&rev=519294
==============================================================================
--- incubator/xap/trunk/samples/WebContent/examples/openAjax/README.txt (added)
+++ incubator/xap/trunk/samples/WebContent/examples/openAjax/README.txt Sat Mar 17 04:49:36 2007
@@ -0,0 +1,47 @@
+
+README for the one and only test case for InteropFest March 2007
+----------------------------------------------------------------
+
+This directory contains the one and only test case for 
+OpenAjax Alliance's interoperability event that will happen
+around the time of the Alliance's face-to-face meeting
+on March 22-23, 2007 in NYC.
+
+To pass the test, an Ajax library has to do 5 things:
+
+1. Register itself with the Hub via OpenAjax.registerLibrary().
+2. Register its globals via OpenAjax.registerGlobals().
+3. Register its load event handlers via OpenAjax.addOnLoad().
+4. Don't anything to cause the publish/subscribe system to quit working.
+5. Don't anything to cause the markup scanner to quit working.
+
+The test case consists of the following files:
+
+* ./HubTest-BasicConformance.html
+	- This is the file that you load in a browser to show whether 
+		your library passes the test. If your library passes the
+		test completely, a table appears with five occurrences of
+		the string: "TEST SUCCEEDED!!!".
+	- You need to make minor customizations to this file.
+
+* ./HubTest-BasicConformance.js
+	- This file contains the logic behind the test case.
+	- Do not modify this file.
+
+* ./SampleAjaxLibrary.js
+	- Trivial sample library that passes the test.
+	- You must remove this file and replace with your own Ajax library.
+
+* ./stylesheets/*
+	- CSS used by the test
+
+* ./images/*
+	- Images used by the test
+
+Further instructions can be found within the comments in files
+HubTest-BasicConformance.html and SampleAjaxLibrary.js.
+
+OpenAjax Alliance Members should be sure to update the wiki page at:
+   http://www.openajax.org/member/wiki/InteropFest_2007_March
+as you make progress.
+

Propchange: incubator/xap/trunk/samples/WebContent/examples/openAjax/README.txt
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/xap/trunk/samples/WebContent/examples/openAjax/SampleAjaxLibrary.js
URL: http://svn.apache.org/viewvc/incubator/xap/trunk/samples/WebContent/examples/openAjax/SampleAjaxLibrary.js?view=auto&rev=519294
==============================================================================
--- incubator/xap/trunk/samples/WebContent/examples/openAjax/SampleAjaxLibrary.js (added)
+++ incubator/xap/trunk/samples/WebContent/examples/openAjax/SampleAjaxLibrary.js Sat Mar 17 04:49:36 2007
@@ -0,0 +1,40 @@
+/*******************************************************************************
+ * SampleAjaxLibrary.js:
+ *		JavaScript for test case HubTest-BasicConformance.html.
+ *
+ *		This sample JavaScript file is just for reference purposes
+ *		to provide an example of what an Ajax library needs to do to
+ *		pass this test.
+ *
+ *		When you attempt to get your library to pass this test,
+ *		delete this file and the SCRIPT tag that references it
+ *		and instead include SCRIPT tag(s) that load your Ajax library.
+ *
+ * Copyright 2007 OpenAjax Alliance
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not 
+ * use this file except in compliance with the License. You may obtain a copy 
+ * of the License at http://www.apache.org/licenses/LICENSE-2.0 . Unless 
+ * required by applicable law or agreed to in writing, software distributed 
+ * under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 
+ * CONDITIONS OF ANY KIND, either express or implied. See the License for the 
+ * specific language governing permissions and limitations under the License.
+ *
+ ******************************************************************************/
+
+/* To pass the test, an Ajax library has to do 5 things:
+	1. Register itself with the Hub via OpenAjax.registerLibrary().
+	2. Register its globals via OpenAjax.registerGlobals().
+	3. Register its load event handlers via OpenAjax.addOnLoad().
+	4. Don't anything to cause the publish/subscribe system to quit working.
+	5. Don't anything to cause the markup scanner to quit working.
+   The code below for SampleAjaxLibrary demonstrates how simple it can be.
+   (Of course, your library might have complications which require considerable
+   more work than this.) */
+	
+OpenAjax.registerLibrary("SampleAjaxLibrary", "http://example.com/SampleAjaxLibrary", "1.0");
+OpenAjax.registerGlobals("SampleAjaxLibrary", ["SampleAjaxLibrary"]);
+function SampleLibraryLoadHandler() {
+}
+OpenAjax.addOnLoad(SampleLibraryLoadHandler, null, "library");
+

Propchange: incubator/xap/trunk/samples/WebContent/examples/openAjax/SampleAjaxLibrary.js
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/xap/trunk/samples/WebContent/examples/openAjax/TablePopulator.js
URL: http://svn.apache.org/viewvc/incubator/xap/trunk/samples/WebContent/examples/openAjax/TablePopulator.js?view=auto&rev=519294
==============================================================================
--- incubator/xap/trunk/samples/WebContent/examples/openAjax/TablePopulator.js (added)
+++ incubator/xap/trunk/samples/WebContent/examples/openAjax/TablePopulator.js Sat Mar 17 04:49:36 2007
@@ -0,0 +1,28 @@
+TablePopulator = function(){	
+	
+}
+
+/**
+ * The way this works is rather goofy, when the XAP table is populated
+ * the HTML table hasn't been yet because the onLoad handler for the actual
+ * tests run after we construct the app, so we setTimeout
+ * to populate the table as soon as we can after the current
+ * execution is finished.
+ */
+TablePopulator.prototype.populate= function(){
+	this._tableCells = arguments;
+	
+	//call it once now so it will look cool and change on the fly
+	this.reallyPopulate();
+	dojo.lang.setTimeout(this,this.reallyPopulate,1000);
+	
+}
+
+TablePopulator.prototype.reallyPopulate= function(){
+	var uiDoc = this.getSession().getDocumentContainer().getUiDocument();
+	for (var i = 0; i<this._tableCells.length;i++){
+		var resultElement = document.getElementById(this._tableCells[i]);
+		var tableCell = uiDoc.getElementById(this._tableCells[i]+"Cell");
+		tableCell.setAttribute("text",resultElement.innerHTML);
+	}	
+}
\ No newline at end of file

Propchange: incubator/xap/trunk/samples/WebContent/examples/openAjax/TablePopulator.js
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/xap/trunk/samples/WebContent/examples/openAjax/xapApp.xal
URL: http://svn.apache.org/viewvc/incubator/xap/trunk/samples/WebContent/examples/openAjax/xapApp.xal?view=auto&rev=519294
==============================================================================
--- incubator/xap/trunk/samples/WebContent/examples/openAjax/xapApp.xal (added)
+++ incubator/xap/trunk/samples/WebContent/examples/openAjax/xapApp.xal Sat Mar 17 04:49:36 2007
@@ -0,0 +1,75 @@
+<!--
+ - Licensed to the Apache Software Foundation (ASF) under one
+ -  or more contributor license agreements.  See the NOTICE file
+ -  distributed with this work for additional information
+ -  regarding copyright ownership.  The ASF licenses this file
+ -  to you under the Apache License, Version 2.0 (the
+ -  "License"); you may not use this file except in compliance
+ -  with the License.  You may obtain a copy of the License at
+ -
+ -	http://www.apache.org/licenses/LICENSE-2.0
+ -
+ -  Unless required by applicable law or agreed to in writing, software
+ -  distributed under the License is distributed on an "AS IS" BASIS,
+ -  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ -  See the License for the specific language governing permissions and
+ -  limitations under the License.
+ -
+-->
+
+<xal xmlns="http://openxal.org/ui" xmlns:xal="http://openxal.org/ui"> 
+
+
+	<!-- copies the results from the HTML table into the xap table -->
+	<mco:mco xmlns:mco="http://openxal.org/core/mco" id="tablePopulator" src="TablePopulator.js" 
+		class="TablePopulator"/>
+	<xm:modifications xmlns:xm="http://openxal.org/core/xmodify">
+	<xm:append select="/ui">
+	
+			<label fontWeight="bold" text="A Xap table showing the test results"/>
+
+			<table onCreate="mco:tablePopulator.populate(
+				'registerLibraryResult',
+				'registerGlobalsResult',
+				'addOnLoadResult',
+				'PublishSubscribeResult',
+				'MarkupScannerResult')"
+				borderWidth="1px" borderColor="black" borderStyle="solid" backgroundColor="white">
+			<column><header text="Step #" backgroundColor="#CCF" width="100px"/></column>
+			<column><header text="Test Description" backgroundColor="#CCF" width="300px"/></column>
+			<column><header text="Result"  backgroundColor="#CCF" width="200px" /></column>
+		
+			<row>
+				<cell text="1"/>
+				<cell text="Library Registration"/>
+				<cell id="registerLibraryResultCell"/>
+			</row>
+
+			<row>
+				<cell text="2"/>
+				<cell text="Globals Registration"/>
+				<cell id="registerGlobalsResultCell"/>
+			</row>
+			
+			<row>
+				<cell text="3"/>
+				<cell text="Load/Unload Registration"/>
+				<cell id="addOnLoadResultCell"/>
+			</row>
+			
+			<row>
+				<cell text="4"/>
+				<cell text="Publish/Subscribe"/>
+				<cell id="PublishSubscribeResultCell"/>
+			</row>
+			
+			<row>
+				<cell text="5"/>
+				<cell text="Markup Scanner"/>
+				<cell id="MarkupScannerResultCell"/>
+			</row>
+		</table>
+	</xm:append> 	  		
+  	</xm:modifications>
+</xal>
+