Пример #1
0
        protected override BusinessObjectPropertyTreeNodeInfo[] GetPropertyNodes(
            BusinessObjectTreeNode parentNode, IBusinessObjectWithIdentity businessObject)
        {
            BusinessObjectPropertyTreeNodeInfo[] nodeInfos;
            if (businessObject is Person)
            {
                nodeInfos    = new BusinessObjectPropertyTreeNodeInfo[2];
                nodeInfos[0] = new BusinessObjectPropertyTreeNodeInfo(
                    "Children",
                    "ToolTip: Children",
                    new IconInfo(null, Unit.Empty, Unit.Empty),
                    (IBusinessObjectReferenceProperty)businessObject.BusinessObjectClass.GetPropertyDefinition("Children"));
                nodeInfos[1] = new BusinessObjectPropertyTreeNodeInfo(
                    "Jobs",
                    "ToolTip: Jobs",
                    new IconInfo(null, Unit.Empty, Unit.Empty),
                    (IBusinessObjectReferenceProperty)businessObject.BusinessObjectClass.GetPropertyDefinition("Jobs"));
            }
            else
            {
                nodeInfos = new BusinessObjectPropertyTreeNodeInfo[0];
            }

            return(nodeInfos);
        }
Пример #2
0
 private void CreateRootTreeNodes()
 {
     if (Value != null)
     {
         for (int i = 0; i < Value.Count; i++)
         {
             IBusinessObjectWithIdentity businessObject = (IBusinessObjectWithIdentity)Value[i];
             BusinessObjectTreeNode      node           = CreateBusinessObjectNode(null, businessObject);
             _treeView.Nodes.Add(node);
             if (EnableTopLevelExpander)
             {
                 if (EnableLookAheadEvaluation)
                 {
                     node.Evaluate();
                 }
                 else
                 {
                     node.IsEvaluated = false;
                 }
             }
             else // Top-Level nodes are expanded
             {
                 node.EvaluateExpand();
                 if (EnableLookAheadEvaluation)
                 {
                     node.EvaluateChildren();
                 }
             }
         }
     }
 }
Пример #3
0
        protected virtual BusinessObjectPropertyTreeNodeInfo[] GetPropertyNodes(
            BusinessObjectTreeNode parentNode,
            IBusinessObjectWithIdentity parentBusinessObject)
        {
            ArgumentUtility.CheckNotNull("parentNode", parentNode);
            ArgumentUtility.CheckNotNull("parentBusinessObject", parentBusinessObject);
            if (Property == null)
            {
                ArrayList referenceListPropertyInfos = new ArrayList();
                IBusinessObjectProperty[] properties = parentBusinessObject.BusinessObjectClass.GetPropertyDefinitions();
                for (int i = 0; i < properties.Length; i++)
                {
                    IBusinessObjectReferenceProperty referenceProperty = properties[i] as IBusinessObjectReferenceProperty;
                    if (referenceProperty != null &&
                        referenceProperty.IsList &&
                        referenceProperty.ReferenceClass is IBusinessObjectClassWithIdentity &&
                        referenceProperty.IsAccessible(parentBusinessObject))
                    {
                        referenceListPropertyInfos.Add(new BusinessObjectPropertyTreeNodeInfo(referenceProperty));
                    }
                }
                return((BusinessObjectPropertyTreeNodeInfo[])referenceListPropertyInfos.ToArray(typeof(BusinessObjectPropertyTreeNodeInfo)));
            }

            return(new[] { new BusinessObjectPropertyTreeNodeInfo(Property) });
        }
Пример #4
0
        private BusinessObjectTreeNode CreateBusinessObjectNode(
            IBusinessObjectReferenceProperty property,
            IBusinessObjectWithIdentity businessObject)
        {
            string   id                 = businessObject.UniqueIdentifier;
            string   text               = GetText(businessObject);
            string   toolTip            = GetToolTip(businessObject);
            IconInfo icon               = GetIcon(businessObject, businessObject.BusinessObjectClass.BusinessObjectProvider);
            BusinessObjectTreeNode node = new BusinessObjectTreeNode(id, text, toolTip, icon, property, businessObject);

            node.IsEvaluated = false;
            return(node);
        }
Пример #5
0
        private void CreateAndAppendBusinessObjectNodes(
            BocTreeNode parentNode,
            IBusinessObjectWithIdentity parentBusinessObject,
            IBusinessObjectReferenceProperty parentProperty)
        {
            var children = GetBusinessObjects(parentNode, parentBusinessObject, parentProperty);

            for (int i = 0; i < children.Length; i++)
            {
                IBusinessObjectWithIdentity childBusinessObject = children[i];
                BusinessObjectTreeNode      childNode           = CreateBusinessObjectNode(parentProperty, childBusinessObject);
                parentNode.Children.Add(childNode);
            }
        }
Пример #6
0
 private void CreateAndAppendPropertyNodes(
     BusinessObjectTreeNode parentNode,
     BusinessObjectPropertyTreeNodeInfo[] propertyNodeInfos)
 {
     for (int i = 0; i < propertyNodeInfos.Length; i++)
     {
         BusinessObjectPropertyTreeNodeInfo propertyNodeInfo = propertyNodeInfos[i];
         BusinessObjectPropertyTreeNode     propertyNode     = new BusinessObjectPropertyTreeNode(
             propertyNodeInfo.Property.Identifier,
             propertyNodeInfo.Text,
             propertyNodeInfo.ToolTip,
             propertyNodeInfo.Icon,
             propertyNodeInfo.Property);
         propertyNode.IsEvaluated = false;
         parentNode.Children.Add(propertyNode);
     }
 }
Пример #7
0
        private void CreateAndAppendBusinessObjectNodeChildren(BusinessObjectTreeNode businessObjectNode)
        {
            IBusinessObjectWithIdentity businessObject = businessObjectNode.BusinessObject;

            BusinessObjectPropertyTreeNodeInfo[] propertyNodeInfos = GetPropertyNodes(businessObjectNode, businessObject);
            if (propertyNodeInfos.Length > 0)
            {
                if (propertyNodeInfos.Length == 1)
                {
                    CreateAndAppendBusinessObjectNodes(businessObjectNode, businessObject, propertyNodeInfos[0].Property);
                }
                else
                {
                    CreateAndAppendPropertyNodes(businessObjectNode, propertyNodeInfos);
                }
            }
            businessObjectNode.IsEvaluated = true;
        }
Пример #8
0
        private void EvaluateTreeNode(WebTreeNode node)
        {
            ArgumentUtility.CheckNotNullAndType <BocTreeNode> ("node", node);

            if (node.IsEvaluated)
            {
                return;
            }

            BusinessObjectTreeNode         businessObjectNode = node as BusinessObjectTreeNode;
            BusinessObjectPropertyTreeNode propertyNode       = node as BusinessObjectPropertyTreeNode;

            if (businessObjectNode != null)
            {
                CreateAndAppendBusinessObjectNodeChildren(businessObjectNode);
            }
            else if (propertyNode != null)
            {
                CreateAndAppendPropertyNodeChildren(propertyNode);
            }
        }
Пример #9
0
        /// <summary> Loads the settings of the <paramref name="nodes"/> from <paramref name="nodesState"/>. </summary>
        private void LoadNodesControlStateRecursive(Pair[] nodesState, WebTreeNodeCollection nodes)
        {
            for (int i = 0; i < nodesState.Length; i++)
            {
                Pair     nodeState   = nodesState[i];
                object[] values      = (object[])nodeState.First;
                string   itemID      = (string)values[0];
                bool     isExpanded  = (bool)values[1];
                bool     isEvaluated = (bool)values[2];
                bool     isSelected  = (bool)values[3];
                string   menuID      = (string)values[4];
                string   text        = (string)values[5];
                string   toolTip     = (string)values[6];
                IconInfo icon        = (IconInfo)values[7];
                bool     isBusinessObjectTreeNode = (bool)values[9];

                WebTreeNode node;
                if (isBusinessObjectTreeNode)
                {
                    node = new BusinessObjectTreeNode(itemID, text, toolTip, icon, null, null);
                    string propertyIdentifier = (string)values[8];
                    ((BusinessObjectTreeNode)node).PropertyIdentifier = propertyIdentifier;
                }
                else
                {
                    node = new BusinessObjectPropertyTreeNode(itemID, text, toolTip, icon, null);
                }
                node.IsExpanded  = isExpanded;
                node.IsEvaluated = isEvaluated;
                if (isSelected)
                {
                    node.IsSelected = true;
                }
                node.MenuID = menuID;
                nodes.Add(node);

                LoadNodesControlStateRecursive((Pair[])nodeState.Second, node.Children);
            }
        }
Пример #10
0
        /// <summary> Fires the <see cref="Click"/> event. </summary>
        protected virtual void OnClick(WebTreeNode node, string[] path)
        {
            BocTreeNodeClickEventHandler handler = (BocTreeNodeClickEventHandler)Events[s_clickEvent];

            if (handler != null)
            {
                ArgumentUtility.CheckNotNullAndType <BocTreeNode> ("node", node);
                BusinessObjectTreeNode         businessObjectNode = node as BusinessObjectTreeNode;
                BusinessObjectPropertyTreeNode propertyNode       = node as BusinessObjectPropertyTreeNode;

                BocTreeNodeClickEventArgs e = null;
                if (businessObjectNode != null)
                {
                    e = new BocTreeNodeClickEventArgs(businessObjectNode, path);
                }
                else if (propertyNode != null)
                {
                    e = new BocTreeNodeClickEventArgs(propertyNode, path);
                }

                handler(this, e);
            }
        }
Пример #11
0
        /// <summary> Fires the <see cref="SelectionChanged"/> event. </summary>
        protected virtual void OnSelectionChanged(WebTreeNode node)
        {
            BocTreeNodeEventHandler handler = (BocTreeNodeEventHandler)Events[s_selectionChangedEvent];

            if (handler != null)
            {
                ArgumentUtility.CheckNotNullAndType <BocTreeNode> ("node", node);
                BusinessObjectTreeNode         businessObjectNode = node as BusinessObjectTreeNode;
                BusinessObjectPropertyTreeNode propertyNode       = node as BusinessObjectPropertyTreeNode;

                BocTreeNodeEventArgs e = null;
                if (businessObjectNode != null)
                {
                    e = new BocTreeNodeEventArgs(businessObjectNode);
                }
                else if (propertyNode != null)
                {
                    e = new BocTreeNodeEventArgs(propertyNode);
                }

                handler(this, e);
            }
        }
Пример #12
0
        private void CreateAndAppendPropertyNodeChildren(BusinessObjectPropertyTreeNode propertyNode)
        {
            if (propertyNode.ParentNode == null)
            {
                throw new ArgumentException(
                          string.Format(
                              "BusinessObjectPropertyTreeNode with ItemID '{0}' has no parent node but property nodes cannot be used as root nodes.",
                              propertyNode.ItemID));
            }
            if (!(propertyNode.ParentNode is BusinessObjectTreeNode))
            {
                throw new ArgumentException(
                          string.Format(
                              "BusinessObjectPropertyTreeNode with ItemID '{0}' has parent node of type '{1}' but property node cannot be children of nodes of type '{2}'.",
                              propertyNode.ItemID,
                              propertyNode.ParentNode.GetType().Name,
                              typeof(BusinessObjectTreeNode).Name));
            }

            BusinessObjectTreeNode parentNode = (BusinessObjectTreeNode)propertyNode.ParentNode;

            CreateAndAppendBusinessObjectNodes(propertyNode, parentNode.BusinessObject, propertyNode.Property);
            propertyNode.IsEvaluated = true;
        }
Пример #13
0
 public BocTreeNodeEventArgs(BusinessObjectTreeNode node)
     : base(node)
 {
 }
Пример #14
0
 public BocTreeNodeClickEventArgs(BusinessObjectTreeNode node, string[] path)
     : base(node)
 {
     _path = path;
 }