Section Implementation Design
Notes from 02/13/06 Meeting on Section Prototyping
Agenda
- Review current prototypes
- Alec's sections (15min)
- John's wxWidgets experiment (15 min)
- Discuss pros and cons
- Complexity/risks (10 min)
- Adequacy to PPD's current design (10 min)
- Decision or next step (10 min)
Alec's prototype
Design (condensed notes):
- Used the wxTableData to create an abstraction layer between the rows and the table
- Implemented a SectionedGridDelegate delegate method
- Implemented a general get_divisions method (in util.divisions)
Cons:
- Drawing the actual row for the section is tricky. John thinks he knows a tricky to span a cell to several.
- Selection gets in the way of clicking on the section headers
- Selecting a range of items accross a section limit is weird (but works)
- Indenting or hierarchical sections would not be easy to implement
Pros:
- It makes the scrollbar issue easy to handle
- It's a known quantity (we have quite a bit of experience in house with the wxGrid code)
- It works crossplatform for sure
John's prototype
The idea is to use existing sample widgets that handle collapse/expand. 2 of them are pretty good (by jorg at
The WasteBucket):
- wxFoldPanelBar: Take a panel and expand collapse (similar to Flash or Windows Accordion widget). There's a C implementation of it.
- wxTreeMultiCtrl: Same with a tree. This one is not folded into widgets.
Cons:
- Scroll bar might be weird (scroll bar per section ?)
Pros:
- Very cool widgets, could be used outside the Summary View (Detail View may be, Side Bar more than likely)
Decision
We decided to go with Alec's proposal.
Alec is the driver of the Dashboard feature for 0.7.
Risks:
- Selection could end up being tricky
- Drawing could be a perf issue
- Drawing layout (indent for instance) not very flexible, constrained by the overall grid layout
- Hierarchival sections might look weird or impossible to implement
- C level change required (wxColumnHeader integration)
- DnD between section is an unknown at that point (likely possible though)
- Background sync is an unknown too (not enough thoughts put into this right now)
Actions
- Communicate to PPD (Philippe)
- wxColumnHeader integration (David)
- Span column trick proposal (John)
- Identify current applicable Summary Table View bugs (Philippe, John)
- Identify tasks, driver of the Dashboard feature (Alec)