private void SetPosition(IComponent componentToPosition) { Composite compositeToPosition; compositeToPosition = componentToPosition as Composite; if (compositeToPosition != null) { foreach (IComponent component in compositeToPosition) { if (component is IComposite) { SetPosition(component); } IIntervalComponent ic = component as IIntervalComponent; if (ic != null && ic.Interval != null) { IntervalType i = ic.Interval; i.XStart = (i.StartDateTime.Ticks - _offset) / _res; i.XEnd = (i.EndDateTime.Value.Ticks - _offset) / _res; // TODO: null check i.Y = _y += LineHeight; } IComposite composite = component as IComposite; if (composite != null) { composite.YCoord = _y += LineHeight; } } } }
private void SetMinMaxDateTime(IComponent component) { Composite composite; composite = component as Composite; if (composite != null) { foreach (IComponent c in composite) { if (c is IComposite) { SetMinMaxDateTime(c); } IIntervalComponent ic = c as IIntervalComponent; // TODO: Consider moving some calculation to composite.... if (ic != null && ic.Interval != null) { if (_componentMinDateTime == null) { _componentMinDateTime = ic; } else if (ic.Interval.StartDateTime < _componentMinDateTime.Interval.StartDateTime) { _componentMinDateTime = ic; } if (_componentMaxDateTime == null) { _componentMaxDateTime = ic; } else if (ic.Interval.EndDateTime > _componentMaxDateTime.Interval.EndDateTime) { _componentMaxDateTime = ic; } } } } }