예제 #1
0
		/// <summary>
		/// Удаляет связь с дочерним элементом
		/// </summary>
		/// <param name="child">Дочерний элемент.</param>
		protected internal void UnlinkChild(GraphItem child)
		{
			if(Object.Equals(_ch, child))
				_ch = null;
			else if(_chs != null)
			{
				_chs.Remove(child);
				if(_chs.Length == 0)
					_chs = null;
				else if(_chs.Length == 1)
				{
					_ch = _chs[0];
					_chs = null;
				}
			}
		}
예제 #2
0
		/// <summary>
		/// Удаляет связь с родителским элементом
		/// </summary>
		/// <param name="parent">Родительский элемент.</param>
		protected internal void UnlinkParent(GraphItem parent)
		{
			if(Object.Equals(_p, parent))
			 _p = null;
			else if(_ps != null)
			{
				_ps.Remove(parent);
				if(_ps.Length == 0)
				 _ps = null;
				else if(_ps.Length == 1)
				{
					_p = _ps[0];
					_ps = null;
				}
			}
		}
예제 #3
0
		/// <summary>
		/// Добавляет связь с дочерним элементом в начало списка связей
		/// </summary>
		/// <param name="child">Дочерний элемент.</param>
		protected internal void LinkChildFirst(GraphItem child)
		{
			if(_chs != null)
				_chs.Insert(0, child);
			else if(_ch == null)
				_ch = child;
			else
			{
				_chs = new ElasticArray<GraphItem>() {child,  _ch };
				_ch = null;
			}
		}
예제 #4
0
		/// <summary>
		/// Добавляет связь с дочерним элементом
		/// </summary>
		/// <param name="child">Дочерний элемент.</param>
		protected internal void LinkChild(GraphItem child)
		{
		 if(_chs != null)
				_chs.Add(child);
			else if(_ch == null)
				_ch = child;
			else
			{
				_chs = new ElasticArray<GraphItem>() { _ch, child };
				_ch = null;
			}
		}
예제 #5
0
		/// <summary>
		/// Добавляет связь с родителским элементом
		/// </summary>
		/// <param name="parent">Родительский элемент.</param>
		protected internal void LinkParent(GraphItem parent)
		{
		 if(_ps != null)
			 _ps.Add(parent);
			else if(_p == null)
			 _p = parent;
			else
			{
				_ps = new ElasticArray<GraphItem>() { _p, parent };
			 _p = null;
			}
		}
예제 #6
0
		//-------------------------------------------------------------------------------------
		#region << Protected & Override Methods >>
		/// <summary>
		/// Удаляет все дочерние и родительские связи элемента.
		/// </summary>
		protected internal void UnlinkItem()
		{
			if(IsRoot == false)
			{
			 foreach(GraphItem i in Parents.ToArray())
				 i.UnlinkChild(this);
				_p = null;
				_ps = null;
			}
			if(HasChildren)
			{
			 foreach(GraphItem i in Children.ToArray())
				 i.UnlinkParent(this);
				_ch = null;
				_chs = null;
			}
		}