by Miroslav Nedyalkov
Moving forward to BETA
After one Q in CTP stage the RadGanttView control is now BETA. This means that most of the core features are already implemented and the rest of the features we are going to add are considered marginal and will not affect its internal architecture neither its API a lot. We reconsidered the public API of the data objects (IGanttTask) and did some changes which we believe will enhance the experience of the control.
We developed some core features which add greater interaction to RadGanttView:
- Drag & drop – the user is now able to drag and resize the tasks and summaries using the mouse. We also enabled comprehensive customization of the drag and resize operations allowing you to specify in great details how they should work in a straightforward way. We’ve added the following properties to the GanttView control:
- DragDropBehavior – allows you to customize how tasks are moved using the mouse. Using this behavior you may disable dragging of some tasks, disable an area in the timeline in which the tasks cannot be dropped or perform some custom action when a task is dropped (for example you can update its parent like in MSProject)
- ResizeBehavior – allows you to customize how the tasks are resized using the mouse. With this behavior you can disable resizing of some tasks, or disallow making tasks shorter than a specific duration. You will also be able to perform some custom action like adding some extra duration if the end of the task is dropped over a weekend day
- Filtering time ruler items – with this feature you will be able to hide some time intervals from the timeline setting the TimeLineFilteringBehavior property. This feature might be useful for hiding non-working time or days from the timeline. The behavior should point the intervals to be shown, and not the ones to be hidden.
- Highlighting special slots – with this feature you will be able to color parts of the timeline. This could be done for different reasons: to mark the range as disabled, to drive user’s attention to a specific range, to mark the weekend days, to mark intervals containing events which are not actual tasks from the GanttView. This feature can be used by setting the SpecialSlotsGenerator property. The generator should point the intervals to be highlighted.
Both properties are of type IRangeGenerator so here are some implementations of the interface we included:
- EmptyRangeGenerator – this generator generates no ranges
- SingleRangeGenerator – this generator generates a single range coincident with the visible range
- WeekDaysGenerator – this generator generates ranges using a weekly pattern by a specified start day and count of days. The generated ranges are all part of the visible range.
We considered these generators to be the most common ones, but we are planning to add even more cool built-in range generators that can be used in more specific scenarios.
To demonstrate the newly created features some examples are available online:
These are the cool features we developed this Q for the GanttView control. I’ve created an example which uses data from our release history for the purpose of a simple demonstration. The data contains past and future items and only the future events are editable. Optionally, you can show a highlight over the past timeslots as an indication that tasks cannot be changed. You will also find configurations for the visibility of the weekend days and state of the timeline - zoomed-in or out.
You can download its WPF and Silverlight (shared) source code from here.