private IEnumerable<IAction> Convert( RoadLaneBlock control )
        {
            yield return CreateNewCommand( control );
            if ( control.LeftEdge.Connector.PreviousEdge != null )
            {
                yield return Actions.Call<RoadLaneBlock>(
                    control.Id,
                    // BUG To nie bedzie dzialac
                    () =>
                    control.LeftEdge.Connector.ConnectEndOn( Is.Control( control.LeftEdge.Connector.PreviousEdge.Parent ) ) );
            }

            if ( control.RightEdge.Connector.NextEdge != null )
            {
                yield return Actions.Call<RoadLaneBlock>(
                    control.Id,
                    // BUG To nie bedzie dzialac
                    () =>
                    control.RightEdge.Connector.ConnectStartFrom( Is.Control( control.RightEdge.Connector.NextEdge.Parent ) ) );
            }

            base.BuildRoutes( control );
//            base.BuildRoutes( control.LeftEdge );
//            base.BuildRoutes( control.RightEdge );
        }
 public EndRoadLaneEdge( Factories.Factories factories, MovablePoint startPoint, MovablePoint endPoint, RoadLaneBlock parent )
     : base( factories, startPoint, endPoint, Styles.NormalStyle, parent )
 {
     this._parrent = parent;
     this._notMovableMouseHandler = factories.MouseHandlerFactory.CreateEmpty();
     this.Connector = new EndRoadLaneEdgeConnector( this );
 }
 public Lane( RoadLaneBlock lane, Func<Lane, IRoadInformation> conductorFactory )
     : base( lane )
 {
     Contract.Requires( lane != null ); Contract.Requires( conductorFactory != null ); Contract.Ensures( this.Information != null );
     this.RoadLaneBlock = lane;
     this._roadInformation = conductorFactory( this );
 }
        public void ConnectStartFrom( RoadLaneBlock roadLaneEdge )
        {
            this.ConnectedEdge = roadLaneEdge.LeftEdge;
            this.OpositeEdge = roadLaneEdge.LeftEdge.GetOppositeEdge();
            this.OpositeEdge.Translated.Subscribe( x => this._owner.RecalculatePosition() );
            this._owner.RecalculatePosition();
//            this._owner.Routes.AddRoute( new RouteElement( roadLaneEdge, PriorityType.None ) );
        }
 private static UseCtorToCreateControl<RoadLaneBlock> CreateNewCommand( RoadLaneBlock control )
 {
     return Actions.CreateControl( control.Id, () => new RoadLaneBlock( Is.Ioc<Factories.Factories>() ) );
 }
 public void ConnectBeginFrom( RoadLaneBlock roadLaneEdge )
 {
     this.Edge = roadLaneEdge.LeftEdge;
 }
 public void ConnectEndsOn( RoadLaneBlock roadLaneEdge )
 {
     this.Edge = roadLaneEdge.RightEdge;
 }