コード例 #1
0
        public override void OnDrawItemText(CalendarRendererBoxEventArgs e)
        {
            CalendarItem item = e.Tag as CalendarItem;

            if (item != null)
            {
                if (item.IsDragging)
                {
                    e.TextColor = Colors.FromArgb(120, e.TextColor);
                }
            }

            base.OnDrawItemText(e);
        }
コード例 #2
0
        /// <summary>
        /// Creates a new item on the current selection.
        /// If there's no selection, this will be ignored.
        /// </summary>
        /// <param name="itemText">Text of the item</param>
        /// <param name="editMode">If <c>true</c> activates the edit mode so user can edit the text of the item.</param>
        public void CreateItemOnSelection(string itemText, bool editMode)
        {
            if (SelectedElementEnd == null || SelectedElementStart == null)
            {
                return;
            }

            CalendarTimeScaleUnit unitEnd = SelectedElementEnd as CalendarTimeScaleUnit;
            CalendarDayTop        dayTop  = SelectedElementEnd as CalendarDayTop;
            CalendarDay           day     = SelectedElementEnd as CalendarDay;
            TimeSpan     duration         = unitEnd != null ? unitEnd.Duration : new TimeSpan(23, 59, 59);
            CalendarItem item             = new CalendarItem(this);

            DateTime dstart = SelectedElementStart.Date;
            DateTime dend   = SelectedElementEnd.Date;

            if (dend.CompareTo(dstart) < 0)
            {
                DateTime dtmp = dend;
                dend   = dstart;
                dstart = dtmp;
            }

            item.StartDate = dstart;
            item.EndDate   = dend.Add(duration);
            item.Text      = itemText;

            CalendarItemCancelEventArgs evtA = new CalendarItemCancelEventArgs(item);

            OnItemCreating(evtA);

            if (!evtA.Cancel)
            {
                Items.Add(item);

                if (editMode)
                {
                    _creatingItem = true;
                    ActivateEditMode(item);
                }
            }
        }
コード例 #3
0
 /// <summary>
 /// Returns a value indicating if the view range intersect the date range of the specified item
 /// </summary>
 /// <param name="item"></param>
 public bool ViewIntersects(CalendarItem item)
 {
     return(ViewIntersects(item.StartDate, item.EndDate));
 }
コード例 #4
0
        protected override void OnMouseMove(MouseEventArgs e)
        {
            base.OnMouseMove(e);

            ICalendarSelectableElement hitted = HitTest(e.GetPosition(this), State != CalendarState.Idle);
            CalendarItem   hittedItem         = hitted as CalendarItem;
            CalendarDayTop hittedTop          = hitted as CalendarDayTop;
            bool           shiftPressed       = Keyboard.IsKeyDown(Key.LeftShift) || Keyboard.IsKeyDown(Key.RightShift);

            if (hitted != null)
            {
                switch (State)
                {
                case CalendarState.Idle:
                    Cursor should = Cursors.Arrow;

                    if (hittedItem != null)
                    {
                        if ((hittedItem.ResizeEndDateZone(e.GetPosition(this)) || hittedItem.ResizeStartDateZone(e.GetPosition(this))) && AllowItemResize)
                        {
                            should = hittedItem.IsOnDayTop || DaysMode == CalendarDaysMode.Short ? Cursors.SizeWE : Cursors.SizeNS;
                        }

                        OnItemMouseHover(new CalendarItemEventArgs(hittedItem));
                    }
                    if (!Cursor.Equals(should))
                    {
                        Cursor = should;
                    }
                    break;

                case CalendarState.DraggingTimeSelection:
                    if (SelectedElementStart != null && !SelectedElementEnd.Equals(hitted))
                    {
                        SelectedElementEnd = hitted;
                    }
                    break;

                case CalendarState.DraggingItem:
                    TimeSpan duration = itemOnState.Duration;
                    itemOnState.SetIsDragging(true);
                    itemOnState.StartDate = hitted.Date;
                    itemOnState.EndDate   = itemOnState.StartDate.Add(duration);
                    Renderer.PerformItemsLayout();
                    Invalidate();
                    itemOnStateChanged = true;
                    break;

                case CalendarState.ResizingItem:
                    if (itemOnState.IsResizingEndDate && hitted.Date.CompareTo(itemOnState.StartDate) >= 0)
                    {
                        itemOnState.EndDate = hitted.Date.Add(hittedTop != null || DaysMode == CalendarDaysMode.Short ? new TimeSpan(23, 59, 59) : Days[0].TimeUnits[0].Duration);
                    }
                    else if (itemOnState.IsResizingStartDate && hitted.Date.CompareTo(itemOnState.EndDate) <= 0)
                    {
                        itemOnState.StartDate = hitted.Date;
                    }
                    Renderer.PerformItemsLayout();
                    Invalidate();
                    itemOnStateChanged = true;
                    break;

                case CalendarState.EditingItemText:
                    break;
                }
            }
        }
コード例 #5
0
        protected override void OnMouseLeftButtonDown(MouseButtonEventArgs e)
        {
            base.OnMouseLeftButtonDown(e);

            ICalendarSelectableElement hitted = HitTest(e.GetPosition(this));
            CalendarItem hittedItem           = hitted as CalendarItem;
            bool         shiftPressed         = Keyboard.IsKeyDown(Key.LeftShift) || Keyboard.IsKeyDown(Key.RightShift);

            if (!Focused)
            {
                Focus();
            }

            switch (State)
            {
            case CalendarState.Idle:
                if (hittedItem != null)
                {
                    if (!shiftPressed)
                    {
                        ClearSelectedItems();
                    }

                    hittedItem.SetSelected(true);
                    Invalidate(hittedItem);
                    OnItemSelected(new CalendarItemEventArgs(hittedItem));

                    itemOnState        = hittedItem;
                    itemOnStateChanged = false;

                    if (AllowItemEdit)
                    {
                        if (itemOnState.ResizeStartDateZone(e.GetPosition(this)) && AllowItemResize)
                        {
                            SetState(CalendarState.ResizingItem);
                            itemOnState.SetIsResizingStartDate(true);
                        }
                        else if (itemOnState.ResizeEndDateZone(e.GetPosition(this)) && AllowItemResize)
                        {
                            SetState(CalendarState.ResizingItem);
                            itemOnState.SetIsResizingEndDate(true);
                        }
                        else
                        {
                            SetState(CalendarState.DraggingItem);
                        }
                    }

                    SetSelectionRange(null, null);
                }
                else
                {
                    ClearSelectedItems();

                    if (shiftPressed)
                    {
                        if (hitted != null && SelectedElementEnd == null && !SelectedElementEnd.Equals(hitted))
                        {
                            SelectedElementEnd = hitted;
                        }
                    }
                    else
                    {
                        if (SelectedElementStart == null || (hitted != null && !SelectedElementStart.Equals(hitted)))
                        {
                            SetSelectionRange(hitted, hitted);
                        }
                    }

                    SetState(CalendarState.DraggingTimeSelection);
                }
                break;

            case CalendarState.DraggingTimeSelection:
                break;

            case CalendarState.DraggingItem:
                break;

            case CalendarState.ResizingItem:
                break;

            case CalendarState.EditingItemText:
                break;
            }
        }
コード例 #6
0
 public CalendarRendererItemEventArgs(CalendarRendererEventArgs original, CalendarItem item)
     : base(original)
 {
     _item = item;
 }
コード例 #7
0
 /// <summary>
 /// Creates a new <see cref="CalendarItemEventArgs"/>
 /// </summary>
 /// <param name="item">Related Item</param>
 public CalendarItemEventArgs(CalendarItem item)
 {
     _item = item;
 }
コード例 #8
0
 /// <summary>
 /// Creates a new <see cref="CalendarItemEventArgs"/>
 /// </summary>
 /// <param name="item">Related Item</param>
 public CalendarItemCancelEventArgs(CalendarItem item)
 {
     _item = item;
 }