diff -r 000000000000 -r d760517a8095 uidesigner/com.nokia.carbide.cpp.uiq.components/components/layoutDataLibrary.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/uidesigner/com.nokia.carbide.cpp.uiq.components/components/layoutDataLibrary.js Tue Mar 24 22:20:21 2009 -0500 @@ -0,0 +1,102 @@ +/* +* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of the License "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* +*/ + + +include("containerLibrary.js") + +/** + * Get the layout data. + * + * If Layout Data is different than "Inherit", then the layout data is returned, + * if not, iterate over all parent relationship. + * + * @param instance the instance where look in the layout data. + * @param propertyPath the name of the property to analize. + * @param propertyDefaultValue the default value of propertyPath which will + * determine if the parent layout data should be reviewed or not. + * @return the layout data. + */ +function getLayoutData ( instance, propertyPath, propertyDefaultValue ) { + + var container = "com.nokia.carbide.uiq.CQikContainer"; + var sbb = "com.nokia.carbide.uiq.SystemBuildingBlock"; + var slot = "com.nokia.carbide.uiq.ItemSlot"; + var viewPage = "com.nokia.carbide.uiq.ViewPage"; + var containersGroup = "com.nokia.carbide.uiq.ContainersGroup"; + + var parentInstance = instance.parent; + var parentID = instance.parent.component.id; + var properties = instance.properties; + var layoutManagerInstance = null; + var layoutData = null; + + while ((parentInstance != null) && (parentID != viewPage) && (parentID != containersGroup)) { + if (parentID == container) { + //println("**************** parent: container"); + layoutManagerInstance = findImmediateChildByAttributeValue( parentInstance.children, "is-layout-manager", "true"); + if ( layoutManagerInstance == null ) { + return propertyDefaultValue; + } + layoutData = instance.properties.layoutData[propertyPath]; + if ( layoutData != propertyDefaultValue ) { + return layoutData + } + return getLayoutData ( parentInstance, propertyPath, propertyDefaultValue ); + } + if (parentID == slot) { + //println("**************** parent: slot"); + return getLayoutData ( parentInstance, propertyPath, propertyDefaultValue ); + } + if (parentID == sbb) { + //println("**************** parent: SBB"); + layoutManagerInstance = findImmediateChildByAttributeValue( parentInstance.parent.children, "is-layout-manager", "true"); + if ( layoutManagerInstance == null ) { + return propertyDefaultValue; + } + layoutData = parentInstance.properties.layoutData[propertyPath]; + if ( layoutData != propertyDefaultValue ) { + return layoutData + } + return getLayoutData ( parentInstance, propertyPath, propertyDefaultValue ); + } + return propertyDefaultValue; + } + + return getLayoutManagerLayoutData( instance.children, propertyPath, propertyDefaultValue ); +} + + +/** + * Get the layout data of LayoutManager. + * + * If Layout Manager is null, then the default value of the property will be + * returned. + * + * @param children the children where look in the layout data. + * @param propertyPath the name of the property to analize. + * @param propertyDefaultValue the default value of propertyPath. + * @return the layout data of LayoutManager or propertyDefaultValue if + * LayoutManager is null . + */ +function getLayoutManagerLayoutData( children, propertyPath, propertyDefaultValue ) { + var layoutManager = findImmediateChildByAttributeValue( children, "is-layout-manager", "true"); + if (layoutManager != null) { + //println("**************** sister: layout Manager"); + return layoutManager.properties.defaultLayoutData[propertyPath]; + } + return propertyDefaultValue; +} \ No newline at end of file