/// <summary>
        /// Templete method 
        /// </summary>
        /// <param name="point"></param>
        public override void HandleDownPoint(BuildingBasicDomain.IPoint point)
        {
            if (line1 == null)
            {
                InitializeLine(ref line1);

                line1.SNode = BuildingStructuralElements.Node.CreateNode(point);
                line1.ENode = BuildingStructuralElements.Node.CreateNode(point);

                DisplayLineToView(line1);
            }
            else
            {
                ClearLines();

                InitializeLine(ref line1);

                line1.SNode = BuildingStructuralElements.Node.CreateNode(point);
                line1.ENode = BuildingStructuralElements.Node.CreateNode(point);

                DisplayLineToView(line1);
            }
            

        }
        public override void HandleUpPoint(BuildingBasicDomain.IPoint point)
        {

        }
        public override void HandleMovePoint(BuildingBasicDomain.IPoint point)
        {
            if (line2 != null)
                line2.ENode = point;

            base.HandleMovePoint(point);
        }
        public override void HandleDownPoint(BuildingBasicDomain.IPoint point)
        {
            if (point1 == null)
            {
                point1 = BuildingStructuralElements.Node.CreateNode(point);
                point2 = BuildingStructuralElements.Node.CreateNode(point);

                InitializeLine(ref line1);            
                InitializeLine(ref line2);
                InitializeLine(ref line3);
                InitializeLine(ref line4);

            }
        }
     //   public ComplexSelectionElasticBox(MVCFramework.Presenter.Presenter presenter):base (presenter ){}
     //
        public override void HandleDownPoint(BuildingBasicDomain.IPoint point)
        {

            if (line2 == null)
            {
                InitializeLine(ref line2);
                line2.SNode = BuildingStructuralElements.Node.CreateNode(point);
                line2.ENode = BuildingStructuralElements.Node.CreateNode(point);
 
            }
            if (this.line2 != line1)
                DisplayLineToView(line2);
             
            base.HandleDownPoint(point);
        }
 public abstract void HandleUpPoint(BuildingBasicDomain.IPoint point);
 public override void HandleUpPoint(BuildingBasicDomain.IPoint point)
 {
     throw new Exception("The method or operation is not implemented.");
 }
 public override void HandleMovePoint(BuildingBasicDomain.IPoint point)
 {
     if (line1 != null)
         line1.ENode = point;
 }
 /// <summary>
 /// 
 /// </summary>
 /// <param name="line1"></param>
 protected virtual void DisplayLineToView(BuildingBasicDomain .ILine line)
 {
   //  _presenter.RequestAddition<MVCFramework.IModelData>(line1 as BuildingStructuralElements .ElasticLine);
   //  _presenter.AddLine(line);
     
 }