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 mt...@apache.org on 2006/08/11 21:54:57 UTC

svn commit: r430906 - /incubator/xap/trunk/src/xap/Xap.js

Author: mturyn
Date: Fri Aug 11 14:54:57 2006
New Revision: 430906

URL: http://svn.apache.org/viewvc?rev=430906&view=rev
Log:
Halfway to producing another way of specifying sessions:  with a function call on Xap before we start creating them (with a function call changed from scanPage() to createAllPredefinedSession()).

Modified:
    incubator/xap/trunk/src/xap/Xap.js

Modified: incubator/xap/trunk/src/xap/Xap.js
URL: http://svn.apache.org/viewvc/incubator/xap/trunk/src/xap/Xap.js?rev=430906&r1=430905&r2=430906&view=diff
==============================================================================
--- incubator/xap/trunk/src/xap/Xap.js (original)
+++ incubator/xap/trunk/src/xap/Xap.js Fri Aug 11 14:54:57 2006
@@ -141,31 +141,74 @@
 Xap.APPLICATION_SOURCE_ATTRIBUTE__NAME = "xapSrc" ;
 Xap.APPLICATION_TOOLKIT_ATTRIBUTE__NAME = "xapToolkit" ;
 
-Xap.scanPage = function(){
+Xap.xapletCount = 0 ;
+
+
+Xap.scanPage= function(){
 	var allPossibleContainerNodes = Xap._findAppElements() ;
 	if( !window.xapSessionIds){
 		window.xapSessionIds = new Array( 0 ) ;
 	}
+	// information may already be here from a script in the html file:
+	if( !Xap.predefinedSessions){
+	// ...or not:
+		Xap.predefinedSessions = new Array( 0 ) ;
+	}
 	for (var i =0; i<allPossibleContainerNodes.length; i++){
+		var thisSessionsParameters = new Object() ;
 		var element = allPossibleContainerNodes[i] ; 	
 		if( !element.getAttribute ){
 			continue;
 		}
-		var thisElementsAppName = null ;		
-		thisElementsAppName = element.getAttribute(Xap.APPLICATION_ID_ATTRIBUTE__NAME);
-		if(!thisElementsAppName){
-			continue;
-		}
+		// The HTML DOM node from which we're getting all these attributes....
+		thisSessionsParameters.htmlElement = element ;	
+
 		// What's the XAL file?---required
-		var src = element.getAttribute(Xap.APPLICATION_SOURCE_ATTRIBUTE__NAME);	
-		// What's the toolkit?---dojo?---defaults to zimbra if null
-		var toolkit = element.getAttribute(Xap.APPLICATION_TOOLKIT_ATTRIBUTE__NAME);
+		thisSessionsParameters.xapSrc = element.getAttribute(Xap.APPLICATION_SOURCE_ATTRIBUTE__NAME);	
+		if(! thisSessionsParameters.xapSrc  ){
+			continue ;
+		}
+
+
+		// What's the i.d.?---if none passed in, generate one:	
+		thisSessionsParameters.xapId = element.getAttribute(Xap.APPLICATION_ID_ATTRIBUTE__NAME);
+		var passedInId = true ;
+
+		if(! thisSessionsParameters.xapId  ){
+			passedInId = false ;
+			thisSessionsParameters.xapId = "xaplet_"+ (++Xap.xapletCount) ;
+		}
+	
+		// What's the toolkit?---dojo?---defaults to zimbra if null	
+		thisSessionsParameters.xapToolkit = element.getAttribute(Xap.APPLICATION_TOOLKIT_ATTRIBUTE__NAME);
+		
 		// what's the load context for plugin.xml or its equivalent?---default to boot context:
-		var context = Xap._sourceRootDir ;
+		thisSessionsParameters.xapContext = Xap._sourceRootDir ;
 		if( element.getAttribute(Xap.APPLICATION_CONTEXT_ATTRIBUTE__NAME)){
-			context = element.getAttribute(Xap.APPLICATION_CONTEXT_ATTRIBUTE__NAME) ;
+			thisSessionsParameters.xapContext  = element.getAttribute(Xap.APPLICATION_CONTEXT_ATTRIBUTE__NAME) ;
 		};
 		
+		Xap.predefinedSessions.push(thisSessionsParameters) ;
+		
+	}
+}
+
+
+/**
+ * Uses the data gathered into Xap.predefinedSessions to create them:
+**/ 
+Xap.createAllPredefinedSessions = function(){
+	// Gather any information on sessions found in the page
+	Xap.scanPage() ;
+	
+	for( var j=0; j<Xap.predefinedSessions.length; ++j ){
+		var thisSessionDef = Xap.predefinedSessions[j] ;
+		var thisElementsAppName = thisSessionDef.xapId ;
+		var src = thisSessionDef.xapSrc ;	
+		var toolkit = thisSessionDef.xapToolkit ;
+		var context = thisSessionDef.xapContext ;		
+		var element = thisSessionDef.htmlElement ;				
+
 		var session = Xap.createSession(context, src, toolkit , element);
 		// these might be handy to keep around:
 		session[Xap.APPLICATION_ID_ATTRIBUTE__NAME] = thisElementsAppName ;
@@ -177,10 +220,7 @@
 		if (window[thisElementsAppName]==null){
 			window[thisElementsAppName]= session;
 			window.xapSessionIds.push( thisElementsAppName ) ;
-		}
-		
-		
-		else{
+		} else{
 			//TODO throw some error?
 		}
 	}
@@ -188,6 +228,22 @@
 
 
 
+
+Xap.defineSession = function(src, xapletName,elementId,context,toolkit){
+
+	if( !Xap.predefinedSessions){
+		Xap.predefinedSessions = new Array( 0 ) ;
+	}
+	var newSess = new Object() ;
+	newSess.xapId = xapletName ;
+	newSess.xapContext = context ;	
+	newSess.xapSrc = src  ;
+	newSess.xapToolkit =  toolkit ;
+	newSess.htmlElement = document.getElementId(elementId) ;
+
+
+	Xap.predefinedSessions.push(newSess) ;
+}