uidesigner/com.nokia.sdt.series60.componentlibrary/components/containers/CAknDialog.component
changeset 0 fb279309251b
equal deleted inserted replaced
-1:000000000000 0:fb279309251b
       
     1 <?xml version="1.0" encoding="UTF-8"?>
       
     2 <!-- Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). -->
       
     3 <!-- All rights reserved. -->
       
     4 <!-- This component and the accompanying materials are made available -->
       
     5 <!-- under the terms of the License "Eclipse Public License v1.0" -->
       
     6 <!-- which accompanies this distribution, and is available -->
       
     7 <!-- at the URL "http://www.eclipse.org/legal/epl-v10.html". -->
       
     8 
       
     9 <componentDefinition xmlns="http://www.nokia.com/sdt/emf/component" 
       
    10 xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" 
       
    11 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >
       
    12 	<component baseComponent="com.nokia.sdt.series60.DialogBase" 
       
    13 			friendlyName="%friendlyName" 
       
    14 			qualifiedName="com.nokia.sdt.series60.CAknDialog" 
       
    15 			abstract="true"
       
    16 			version="1.0">
       
    17 		<documentation>
       
    18 			<information>%information</information>
       
    19 			<wizardDescription>%information</wizardDescription>
       
    20 		</documentation>
       
    21 		<symbian sdkName="com.nokia.series60" minSDKVersion="2.0" 
       
    22 			className="CAknDialog" classHelpTopic="" />
       
    23 		<designerImages 
       
    24 			smallIconFile="CAknDialog_sm.png" 
       
    25 			largeIconFile="CAknDialog.png"/>
       
    26 
       
    27 		<attributes>
       
    28 			<attribute key="options-menu-property-name">optionsMenu</attribute>
       
    29 			<attribute key="event-handler-target">true</attribute>
       
    30 			<attribute key="base-container-class">CAknDialog</attribute>
       
    31 		</attributes>
       
    32 		<properties>
       
    33 			<property category="Appearance" name="backColor" type="string" 
       
    34 				editorClass="com.nokia.sdt.symbian.ui.editors.RGBEditorFactoryWithSystemColorCombo"/>
       
    35 			<property category="Appearance" name="fillRect" type="boolean" default="true"/>
       
    36 				<!-- corresponds to flag EEikDialogFlagFillAppClientRect 0x1000 -->
       
    37 			<componentReferenceProperty category="Dialog" scope="children" constraint="com.nokia.sdt.series60.MenuBar" name="optionsMenu"/>
       
    38 		</properties>
       
    39 		<implementations>
       
    40 			<implementation>
       
    41 				<interface id="com.nokia.sdt.datamodel.adapter.IVisualAppearance"/>
       
    42 				<interface id="com.nokia.sdt.datamodel.adapter.ILayout"/>
       
    43 				<code class="com.nokia.sdt.series60.component.AknDialogVisualAndLayoutImplFactory"/>
       
    44 			</implementation>
       
    45 			<implementation>
       
    46 				<interface id="com.nokia.sdt.datamodel.adapter.IQueryContainment"/>
       
    47 				<script file="CAknDialog_queryContainment.js" prototype="CAknDialogQueryContainment"/>
       
    48 			</implementation>
       
    49 		</implementations>
       
    50 		
       
    51 		<sourceMapping>
       
    52 			<mapResource struct="DIALOG" headers="avkon.rsg avkon.rh eikon.rh">
       
    53 				<!-- TODO: flags -->
       
    54 				<mapBitmaskMember property="." member="flags"
       
    55 					includedProperties="fillRect wait notifyEsc modeless">
       
    56 					<!-- initial blank entries force bits on -->
       
    57 					<mapBitmaskValue properties="" value="EEikDialogFlagNoDrag" />
       
    58 					<mapBitmaskValue properties="" value="EEikDialogFlagNoTitleBar" />
       
    59 					<mapBitmaskValue properties="" value="EEikDialogFlagCbaButtons" />
       
    60 					
       
    61 					<mapBitmaskValue properties="notifyEsc" value="EEikDialogFlagNotifyEsc" />
       
    62 					<mapBitmaskValue properties="modeless" value="EEikDialogFlagModeless" />
       
    63 					<mapBitmaskValue properties="fillRect" value="EEikDialogFlagFillAppClientRect" />
       
    64 					<mapBitmaskValue properties="wait" value="EEikDialogFlagWait" />
       
    65 				</mapBitmaskMember>
       
    66 	  		    <select property="[parent].[com.nokia.sdt.series60.CBA]">
       
    67 	   		        <choice value="">
       
    68 	  		          <!-- no CBA -->
       
    69 	  		        </choice>
       
    70 	  		        <choice>
       
    71 			 		  <select property="[parent].[com.nokia.sdt.series60.CBA].info">
       
    72 					    <choice value="com.nokia.sdt.series60.CBA.Type.CUSTOM">
       
    73 					    	<!-- emit a reference to the resource generated -->
       
    74 					        <mapReferenceMember property="[parent].[com.nokia.sdt.series60.CBA]" member="buttons"/>
       
    75 					    </choice>
       
    76 					    <choice>
       
    77 							<!-- else, emit the builtin -->
       
    78 							<mapIdentifierMember property="[parent].[com.nokia.sdt.series60.CBA].info" member="buttons" />
       
    79 					    </choice> 
       
    80 					  </select>
       
    81 					</choice>
       
    82 				</select>
       
    83 				<mapArrayMember property="." member="items">
       
    84 					<select attribute="is-dialog-content">
       
    85 						<!-- only map visible items, not menu bars, etc. -->
       
    86 						<choice value="true">
       
    87 							<mapResourceElement struct="DLG_LINE" headers="avkon.rh"
       
    88 								instanceIdentifyingMember="id" id="dialog_line">
       
    89 								<!-- looking at the current array element, always
       
    90 									create a unique value from the dialog and instance name -->
       
    91 								<mapEnumMember property="." member="id"
       
    92 									uniqueValue="*"
       
    93 									nameAlgorithm="com.nokia.sdt.component.symbian.NAME_ALG_DIALOG_LINE_ID"
       
    94 								/>
       
    95 								<!-- looking at the current array element, get the
       
    96 									enumerator for the instance's control type -->
       
    97 								<mapEnumMember property="." member="type"
       
    98 									nameAlgorithm="com.nokia.sdt.component.symbian.NAME_ALG_CONTROL_TYPE"
       
    99 								/>
       
   100 								<mapResourceMember property="." member="control"/>
       
   101 							</mapResourceElement>
       
   102 						</choice>
       
   103 						<!-- default case does nothing -->
       
   104 						<choice/>
       
   105 					</select>						
       
   106 				</mapArrayMember>
       
   107 			
       
   108 			</mapResource>
       
   109 		</sourceMapping>
       
   110 		
       
   111 		<sourceGen forms="AppUi AknView RootAppUi">
       
   112 		
       
   113 			<!-- contributions as dialog -->
       
   114 
       
   115 			<defineLocation id="HEADER_FILE" domain="cpp" dir="${inc}" 
       
   116 				file="${instanceName}.h"
       
   117 				owned="false"
       
   118 				location="">
       
   119 			</defineLocation>
       
   120 			
       
   121 			<template location="HEADER_FILE">
       
   122 #ifndef ${instanceName.toUpperCase()}_H
       
   123 #define ${instanceName.toUpperCase()}_H
       
   124 
       
   125 			</template>
       
   126 			
       
   127 			<defineLocation id="HEADER_INCLUDES" baseLocation="HEADER_FILE"
       
   128 				location="region(Generated Includes)"
       
   129 				filter="unique-includes">
       
   130 			</defineLocation>
       
   131 			
       
   132 			<template location="HEADER_INCLUDES"><![CDATA[
       
   133 #include <akndialog.h>
       
   134 ]]>			</template>
       
   135 		
       
   136 			<defineLocation id="EVENT_INCLUDES" baseLocation="HEADER_FILE"
       
   137 				owned="false"
       
   138 				filter="unique-includes"
       
   139 				location="region(Event Handler Includes)">
       
   140 			</defineLocation>
       
   141 			
       
   142 			<template location="EVENT_INCLUDES" />
       
   143 			
       
   144 			<defineLocation id="HEADER_FORWARD_DECLARATIONS" baseLocation="HEADER_FILE"
       
   145 				location="region(Generated Forward Declarations)">
       
   146 			</defineLocation>	
       
   147 				
       
   148 			<template location="HEADER_FORWARD_DECLARATIONS"/>
       
   149 			
       
   150 	
       
   151 			<defineLocation id="CLASS" baseLocation="HEADER_FILE"
       
   152 				owned="false"
       
   153 				location="class(${className})">
       
   154 				<template><![CDATA[
       
   155 /**
       
   156  * @class	${className} ${instanceName}.h
       
   157  */
       
   158 class ${className} : public CAknDialog
       
   159 	{
       
   160 public:
       
   161 	// constructors and destructor
       
   162 	${className}();
       
   163 	virtual ~${className}();
       
   164 	void ConstructL();
       
   165 	
       
   166 	static TBool RunDlgLD();
       
   167 	void LoadFromResourceL();
       
   168 
       
   169 protected:
       
   170 	// from CAknDialog
       
   171 	void Draw( const TRect& aRect ) const;
       
   172 	TBool OkToExitL( TInt aButtonId );
       
   173 	void PreLayoutDynInitL();
       
   174 	};
       
   175 ]]>
       
   176 				</template>
       
   177 			</defineLocation>
       
   178 			
       
   179 			<template location="CLASS"/>
       
   180 
       
   181 			<defineLocation id="CLASS_IVARS" baseLocation="CLASS"
       
   182 			location="region(Generated Instance Variables)">
       
   183 				<template><![CDATA[
       
   184 private: <% contrib.indentAdjust(-1); %>
       
   185 ]]>				</template>
       
   186 			</defineLocation>
       
   187 
       
   188 			<template location="CLASS_IVARS"/>
       
   189 
       
   190 			<template location="HEADER_FILE">
       
   191 #endif // ${instanceName.toUpperCase()}_H
       
   192 			</template>
       
   193 							
       
   194 			<defineLocation id="MAIN_FILE" domain="cpp" dir="${src}" 
       
   195 				file="${instanceName}.cpp"
       
   196 				owned="false"
       
   197 				location="">
       
   198 			</defineLocation>
       
   199 
       
   200 			<template location="MAIN_FILE"/>
       
   201 			
       
   202 			<defineLocation id="MAIN_SYSTEM_INCLUDES" baseLocation="MAIN_FILE"
       
   203 				location="region(Generated System Includes)"
       
   204 				filter="unique-includes">
       
   205 				<template><![CDATA[
       
   206 #include <aknappui.h>
       
   207 ]]>				</template>
       
   208 				<template><![CDATA[
       
   209 #include <avkon.hrh>
       
   210 ]]>				</template>
       
   211 			</defineLocation>
       
   212 
       
   213 			<template location="MAIN_SYSTEM_INCLUDES"/>
       
   214 	
       
   215 			<defineLocation id="MAIN_USER_INCLUDES" baseLocation="MAIN_FILE"
       
   216 				location="region(Generated User Includes)"
       
   217 				filter="unique-includes">
       
   218 				<template><![CDATA[
       
   219 #include "${instanceName}.h"
       
   220 ]]>				</template>
       
   221 			</defineLocation>		
       
   222 
       
   223 			<template location="MAIN_USER_INCLUDES"/>
       
   224 			
       
   225 			<inline>
       
   226 if (Engine.formMatches(form, [""])) {
       
   227 	this.getHrhFiles(contribs);
       
   228 }
       
   229 			</inline>
       
   230 			
       
   231 			<defineLocation id="CONSTANTS" baseLocation="MAIN_FILE"
       
   232 				location="region(Generated Constants)">
       
   233 			</defineLocation>
       
   234 
       
   235 			<template location="CONSTANTS" />
       
   236 
       
   237 			<defineLocation id="CONSTRUCTOR" baseLocation="MAIN_FILE"
       
   238 				owned="false"
       
   239 				location="function(${className}::${className}())">
       
   240 				<template><![CDATA[
       
   241 /**
       
   242  * Construct the ${className} instance
       
   243  */ 
       
   244 ${className}::${className}()
       
   245 	{
       
   246 	}
       
   247 ]]>
       
   248 				</template>			
       
   249 			</defineLocation>
       
   250 			
       
   251 			<template location="CONSTRUCTOR"/>
       
   252 
       
   253 			<defineLocation id="CONSTRUCTOR_BODY" baseLocation="CONSTRUCTOR"
       
   254 				location="region(Generated Contents)">
       
   255 				<template>
       
   256 iContextMenuCommandObserver = NULL;
       
   257 				</template>
       
   258 			</defineLocation>
       
   259 					
       
   260 			
       
   261 			<defineLocation id="CONSTRUCTL" baseLocation="MAIN_FILE"
       
   262 				owned="false"
       
   263 				location="function(${className}::ConstructL())">
       
   264 				<template><![CDATA[
       
   265 /**
       
   266  * @brief Completes the second phase of Symbian object construction. 
       
   267  * Put initialization code that could leave here.  
       
   268  */ 
       
   269 void ${className}::ConstructL()
       
   270 	{
       
   271 	}
       
   272 ]]>
       
   273 				</template>			
       
   274 			</defineLocation>
       
   275 			
       
   276 			<template location="CONSTRUCTL"/>
       
   277 
       
   278 			<defineLocation id="CONSTRUCTL_BODY" baseLocation="CONSTRUCTL"
       
   279 				location="region(Generated Contents)">
       
   280 			</defineLocation>
       
   281 
       
   282 			<inline scope="prototype">
       
   283 include("containerLibrary.js")
       
   284 			</inline>			
       
   285 
       
   286 			<template location="CONSTRUCTL_BODY"><![CDATA[
       
   287 <% var menuBarId = 
       
   288 	Engine.getGeneratedResource(getInstanceFromChildName(children, properties.optionsMenu)); 
       
   289 	// TODO children are not yet generated, so can't get the generated resource name for menuBar!
       
   290 	if (menuBarId != null) { %>
       
   291 CAknDialog::ConstructL( ${menuBarId.toUpperCase()} );
       
   292 <%	} %>
       
   293 ]]>			</template>
       
   294 
       
   295 
       
   296 			<defineLocation id="DESTRUCTOR" baseLocation="MAIN_FILE"
       
   297 				owned="false"
       
   298 				location="function(${className}::~${className}())">
       
   299 				<template><![CDATA[
       
   300 /** 
       
   301  * The dialog's destructor removes the container from the control
       
   302  * stack and destroys it.
       
   303  */
       
   304 ${className}::~${className}()
       
   305 	{
       
   306 	}
       
   307 ]]>
       
   308 				</template>			
       
   309 			</defineLocation>
       
   310 			
       
   311 			<template location="DESTRUCTOR"/>
       
   312 
       
   313 			<defineLocation id="DESTRUCTOR_BODY" baseLocation="DESTRUCTOR"
       
   314 				location="region(Generated Contents)">
       
   315 			</defineLocation>
       
   316 			
       
   317 			<defineLocation id="RUNDLGLD" baseLocation="MAIN_FILE"
       
   318 				owned="false"
       
   319 				location="function(${className}::RunDlgLD())">
       
   320 				<template><![CDATA[
       
   321 /**
       
   322 * Static construction and execution of the dialog. 
       
   323 * @return ETrue if the dialog is accepted, EFalse if canceled
       
   324 */
       
   325 TBool ${className}::RunDlgLD()
       
   326 	{
       
   327 	${className}* ${instanceName} = new ( ELeave ) ${className}();
       
   328 	return ${instanceName}->ExecuteLD( ${resourceName$upper} );
       
   329 	}
       
   330 ]]>				
       
   331 				</template>			
       
   332 			</defineLocation>
       
   333 			
       
   334 			<template location="RUNDLGLD"/>
       
   335 
       
   336 
       
   337 			<defineLocation id="DRAW_BODY" baseLocation="DRAW"
       
   338 				location="region(Generated Contents)">
       
   339 			</defineLocation>
       
   340 
       
   341 			<useTemplate ids="DrawBodyBgColor"/>
       
   342 			
       
   343 			<defineLocation id="OKTOEXITL" baseLocation="MAIN_FILE"
       
   344 				owned="false"
       
   345 				location="function(${className}::OkToExitL(TInt))">
       
   346 				<template><![CDATA[
       
   347 /**
       
   348  * Handle a button press and tell whether it closes the dialog.  (override)  
       
   349  * @param aButtonId the identifier for the button (avkon.hrh)
       
   350  */
       
   351 TBool ${className}::OkToExitL( TInt aButtonId )
       
   352 	{
       
   353 	}
       
   354 ]]>				
       
   355 				</template>			
       
   356 			</defineLocation>
       
   357 			
       
   358 			<template location="OKTOEXITL"/>
       
   359 			
       
   360 			<defineLocation id="OKTOEXITL_BODY" baseLocation="OKTOEXITL"
       
   361 				location="region(Generated Contents)">
       
   362 			</defineLocation>
       
   363 		
       
   364 <!-- TODO: need to check for CBA overrides -->
       
   365 			<template location="OKTOEXITL_BODY" form="AppUi"><![CDATA[
       
   366 switch ( aButtonId )
       
   367 	{
       
   368 	case EAknSoftkeyOptions:
       
   369 		iAvkonAppUi->ProcessCommandL( EAknSoftkeyOptions );
       
   370 		break;
       
   371 	case EAknSoftkeyBack:
       
   372 		iAvkonAppUi->ProcessCommandL( EEikCmdExit );
       
   373 		break;
       
   374 	}
       
   375 
       
   376 // Do not exit the application; this is the main window.  
       
   377 // AppUi determines when to exit based on the EEikCmdExit command above.
       
   378 return EFalse;
       
   379 ]]>			</template>			
       
   380 		
       
   381 			<inline scope="prototype">
       
   382 include("../cba/cbaLibrary.js")
       
   383 			</inline>			
       
   384 
       
   385 			<template location="OKTOEXITL_BODY" form="AknView"><![CDATA[
       
   386 switch ( aButtonId )
       
   387 	{
       
   388 <%			// "handle" left command id
       
   389 			var id = findCbaLeftId(children);
       
   390 			if (id != null && id != "") {
       
   391 %>	case ${id}:
       
   392 		{
       
   393 		// handle left button
       
   394 		break;
       
   395 		}
       
   396 <%	}		// "handle" right command id
       
   397 			id = findCbaRightId(children);
       
   398 			if (id == null) 
       
   399 				id = "EAknSoftkeyExit";
       
   400 			var rightShouldExit = (id == null || id == "EAknSoftkeyExit" || id == "EAknSoftkeyBack");
       
   401 %>	case ${id}:
       
   402 		{
       
   403 		// handle right button<% if (rightShouldExit) { %>
       
   404 		iAvkonAppUi->ProcessCommandL( EEikCmdExit );<% } %>
       
   405 		break;
       
   406 		}
       
   407 	}	
       
   408 return EFalse;
       
   409 ]]>			</template>			
       
   410 		
       
   411 			
       
   412 	
       
   413 	
       
   414 			<defineLocation id="PRELAYOUTDYNINITL" baseLocation="MAIN_FILE"
       
   415 				owned="false"
       
   416 				location="function(${className}::PreLayoutDynInitL())">
       
   417 				<template><![CDATA[
       
   418 /**
       
   419  * Initialize controls and settings before a dialog is laid out.  (override)
       
   420  */
       
   421 void ${className}::PreLayoutDynInitL()
       
   422 	{
       
   423 	}
       
   424 ]]>				
       
   425 				</template>			
       
   426 			</defineLocation>
       
   427 			
       
   428 			<template location="PRELAYOUTDYNINITL"/>
       
   429 			
       
   430 			<defineLocation id="PRELAYOUTDYNINITL_BODY" baseLocation="PRELAYOUTDYNINITL"
       
   431 				location="region(Generated Contents)">
       
   432 			</defineLocation>
       
   433 
       
   434 			<template location="PRELAYOUTDYNINITL_BODY"/>
       
   435 
       
   436 			<defineLocation id="DRAW" baseLocation="MAIN_FILE"
       
   437 				owned="false"
       
   438 				location="function(${className}::Draw(const TRect&amp;))">
       
   439 				<template><![CDATA[
       
   440 void ${className}::Draw( const TRect& aRect ) const
       
   441 	{
       
   442 	}
       
   443 ]]>				
       
   444 				</template>
       
   445 			</defineLocation>
       
   446 
       
   447 
       
   448 			<defineLocation id="LOADFROMRESOURCEL" baseLocation="MAIN_FILE"
       
   449 				location="function(${className}::LoadFromResourceL())">
       
   450 				<template>
       
   451 void ${className}::LoadFromResourceL()
       
   452 	{
       
   453 	}
       
   454 				</template>
       
   455 			</defineLocation>
       
   456 			
       
   457 			<template form="AppUi" location="LOADFROMRESOURCEL">
       
   458 ExecuteLD( ${resourceName.toUpperCase()} );
       
   459 			</template>
       
   460 		
       
   461 			<!-- gather child contributions -->
       
   462 
       
   463 			<inline scope="prototype">
       
   464 			include("../srcgenLibrary.js");
       
   465 			</inline>
       
   466 
       
   467 			<inline>
       
   468 
       
   469 			if (form != 'RootAppUi') {
       
   470 				if (Engine.formMatches(form, [ "AknView", "AppUi" ])) {
       
   471 					// clear out any image stuff
       
   472 					resetImagePropertyState(instance);
       
   473 					
       
   474 					// get default and dialog-specific contributions
       
   475 					contribs.addAll(Engine.generateChildContributions(form+"|Dialog"))
       
   476 				} else {
       
   477 					// get specific desired contributions
       
   478 					contribs.addAll(Engine.generateChildContributions(form))
       
   479 				}
       
   480 				
       
   481 				// fix up the phases so they point to real locations
       
   482 				Engine.assignLocationsForPhase(contribs, "ClassSource", "MAIN_FILE");
       
   483 				Engine.assignLocationsForPhase(contribs, "ClassHeader", "HEADER_FILE");
       
   484 
       
   485 				Engine.assignLocationsForPhase(contribs, "MainConstants", "CONSTANTS");
       
   486 				Engine.assignLocationsForPhase(contribs, "MainSystemIncludes", "MAIN_SYSTEM_INCLUDES");
       
   487 				Engine.assignLocationsForPhase(contribs, "MainUserIncludes", "MAIN_USER_INCLUDES");
       
   488 				Engine.assignLocationsForPhase(contribs, "Construct", "CONSTRUCTOR_BODY");
       
   489 				Engine.assignLocationsForPhase(contribs, "Initialize", "PRELAYOUTDYNINITL_BODY");
       
   490 				Engine.assignLocationsForPhase(contribs, "HeaderIncludes", "HEADER_INCLUDES");
       
   491 				Engine.assignLocationsForPhase(contribs, "EventIncludes", "EVENT_INCLUDES");
       
   492 				Engine.assignLocationsForPhase(contribs, "ForwardDeclarations", "HEADER_FORWARD_DECLARATIONS");
       
   493 				Engine.assignLocationsForPhase(contribs, "InstanceVariables", "CLASS_IVARS");
       
   494 	
       
   495 				//Engine.removeDuplicateContributionsForLocation(contribs, "HEADER_INCLUDES");
       
   496 				Engine.removeDuplicateContributionsForLocation(contribs, "HEADER_FORWARD_DECLARATIONS");
       
   497 				//Engine.removeDuplicateContributionsForLocation(contribs, "MAIN_SYSTEM_INCLUDES");
       
   498 				//Engine.removeDuplicateContributionsForLocation(contribs, "MAIN_USER_INCLUDES");
       
   499 			}
       
   500 						
       
   501 			</inline>
       
   502 
       
   503 			<template id="IncludeRsgFile" location="MAIN_SYSTEM_INCLUDES"><![CDATA[
       
   504 #include <${resourceFileNameBase}.rsg>
       
   505 ]]>			</template>
       
   506 
       
   507 			<!-- contributions as child  -->
       
   508 
       
   509 			<template form="AknView" phase="MainUserIncludes">
       
   510 #include "${instanceName}.h"
       
   511 			</template>
       
   512 
       
   513 			<template form="AknView" phase="ForwardDeclarations">
       
   514 class ${className};
       
   515 			</template>
       
   516 
       
   517 			<template form="AknView" phase="InstanceVariables">
       
   518 ${className}* ${instanceMemberName};
       
   519 			</template>
       
   520 
       
   521 			<template form="AknView" phase="DoActivateL"><![CDATA[
       
   522 if ( ${instanceMemberName} == NULL )
       
   523 	{
       
   524 	${instanceMemberName} = new ${className}();
       
   525 	${instanceMemberName}->SetMopParent( this ); <%
       
   526 if ( properties.wait ) {
       
   527 	var sb = newStatusBuilder();
       
   528 	sb.add(IStatus.ERROR, lookupString("waitPropertySetInView"), [ instanceName ]);
       
   529 	logStatus(sb.createStatus("", null));
       
   530 	} %>
       
   531 	${instanceMemberName}->ExecuteLD( ${resourceName.toUpperCase()} );
       
   532 	AppUi()->AddToStackL( *this, ${instanceMemberName} );
       
   533 	} 
       
   534 ]]>			</template>
       
   535 			
       
   536 			<template form="AknView" phase="DoDeactivate">
       
   537 if ( ${instanceMemberName} != NULL )
       
   538 	{
       
   539 	AppUi()->RemoveFromViewStack( *this, ${instanceMemberName} );
       
   540 	delete ${instanceMemberName};
       
   541 	${instanceMemberName} = NULL;
       
   542 	}
       
   543 			</template>
       
   544 
       
   545 
       
   546 			<template form="RootAppUi" phase="MainUserIncludes">
       
   547 #include "${instanceName}.h"
       
   548 			</template>
       
   549 
       
   550 			<template form="RootAppUi" phase="ForwardDeclarations">
       
   551 class ${className};
       
   552 			</template>
       
   553 
       
   554 			<template form="RootAppUi" phase="InstanceVariables">
       
   555 ${className}* ${instanceMemberName};
       
   556 			</template>
       
   557 
       
   558 
       
   559 			<!-- NOTE: this only makes sense when this is the initial view -->
       
   560 			<template form="RootAppUi" phase="Initialize">
       
   561 ${instanceMemberName} = new ( ELeave ) ${className};
       
   562 ${instanceMemberName}->ConstructL();
       
   563 ${instanceMemberName}->SetMopParent( this );
       
   564 ${instanceMemberName}->LoadFromResourceL();
       
   565 AddToStackL( ${instanceMemberName} );
       
   566 			</template>
       
   567 
       
   568 			<template form="RootAppUi" phase="Destroy">
       
   569 if ( ${instanceMemberName} != NULL )
       
   570 	{
       
   571 	RemoveFromStack( ${instanceMemberName} );
       
   572 	delete ${instanceMemberName};
       
   573 	${instanceMemberName} = NULL;
       
   574 	}
       
   575 			</template>
       
   576 
       
   577 			<useTemplateGroup ids="GeneratePrepareForFocusTransition GeneratePageChanged GenerateLineChanged"/>
       
   578 			<useTemplateGroup ids="GenerateProcessCommand GenerateOfferKeyToApp"/>
       
   579 			<useTemplateGroup ids="GenerateFocusChanged"/>
       
   580 			<useTemplateGroup ids="GenerateSizeChanged GeneratePositionChanged"/>
       
   581 			<useTemplateGroup ids="GenerateDraw GenerateOfferKeyEvent"/>
       
   582 			<useTemplateGroup ids="GeneratePrepareForFocusLoss GeneratePrepareForFocusGain"/>
       
   583 
       
   584 		</sourceGen>
       
   585 	</component>
       
   586 </componentDefinition>