Synopsis
I want to build a custom control which displays events in a calendar.
Here is the draft:
The Concept
- The bottom left box is vertically scrollable. The bottom right box scrollable in both directions.
- It's possible to move the event views around. If they come near the bounds during dragging the view auto-scrolls in that direction.
- The scroll area is finite according to the earliest and latest event in a database or a certain maximum. But if the user continues scrolling the scroll area grows accordingly and collapses if the user scrolls back and did not create a new event.
- This "July 2011" button at the bottom acts as scroller. If the user pulls it beyond the bounds of the scroll area, it grows accordingly.
- The month name in the header stays always at this position until the next month moves in, so it's a long cell which spans over the day cells of the month with a floating caption.
- The header rows and columns are always visible.
The Question
Since I'm only slightly familiar with the capabilities of Cappuccino or Cocoa's control classes: Where can I make direct use of Cappuccino or Cocoa classes, where is it reasonable to subclass Cappuccino/Cocoa controls and where do I have to write custom controls from scratch?
Edit: My Thoughts
I think its reasonable dividing the control with a SplitView with a vertical divider. I could use a TableView for the left header column in the left subview. And I could synchronize the vertical scrolling with what happens on the right side.
But I'm not so sure about the view on the right side. I thought about TableView but I would actually only need the cells as a background grid. Thus, I guess, it would be difficult to have two header rows and to implement the desired scrolling behavior. So the best way is probably to create a completely new custom view. But then again the question: Where is it reasonable to subclass Cappuccino resp. Cocoa controls and where do I have to write custom controls from scratch?