--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/uidesigner/com.nokia.carbide.cpp.uiq.components/components/layoutDataLibrary.js Fri Apr 03 23:33:03 2009 +0100
@@ -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