//----------------------------------------------------------------------------- // MiscTableScroll TODO // $Id: TODO.txt,v 1.36 97/06/10 05:20:06 sunshine Exp $ //----------------------------------------------------------------------------- TODO: ---- - Add a keyboard equivalent to start text editing in a cell. - Consider adding support for up/down keys during editing which would edit the previous and next cells in the current column, respectively. Having done so in Clew(tm), we see how extremely nice this feature is. - isSelectable should be conditional. Currently it unconditionally returns YES. Instead, it should return YES only if rows and columns are present. This will eliminate the (probably) undesirable behavior where it accepts first-responder status even when its empty. - Finish printing -- page headers/footers options, etc. - Document the printing methods. - Add dragging-destination support so that images can be dragged-in and dropped on cells. The delegate should get appropritate messages. - MiscTableView -- route drawRect: through a cell-coordinate oriented -doDrawRange:::: and provide a public -drawRange::: method. Most places where drawing is done in the code, we know the cell coordinates. It does not make sense to convert them to NXRect visual rectangle only to convert it back to cell coordinates. - We should automate the rcs -n version label tag in the pack.sh script. - Allow all cells under mouse to participate in mouse-tracking rather than *only* the first cell under which the mouse went down. - Centralize selection-mode handling during mouse & keyboard tracking. Right now this is spread throughout TableView, BorderView, TableScrollKB, and TableScrollISearch. Each needs to perform selection via either mouse or keyboard, and each reimplements much of the same code. - Add ability to disable selection. Pawl says: We should add the ability to disable selection. We never had an example where this was desirable before, but with Narinder's scheduler, there is no useful information in the underlying table view. The only useful items are the subviews that he is adding. Having selection enabled runs into that problem where we obscure the subview in reflectSelection. - Use display: mechanism to perform drawing. Pawl says: We should use the -display::: mechanism to perform more of our drawing. Specifically, I think this can be used to fix the problems with the mis-drawn dragged columns. It will also address a problem that Narinder is running into when he is trying to attach subviews to the table-view. Basically, since we short-circuit the display::: mechanism when we do our drawing in -reflectSelection, we never give subviews a chance to draw themselves. Subviews get obscured whenever we redraw a slot that contains them. Also, subviews do not get a chance to draw themselves onto the slot that is being dragged. - Upgrade keyboard interaction to mirror OpenStep conventions: Ctrl-tab and Ctrl-Shift-tab when plain tab has other interpretations. - Use NXOrderStrings() for case-insensitive comparisons in MiscTableScroll(Sort) and MiscTableScroll(IncrementalSearch) - The C++ MiscTableBorder stuff should be doing its allocations from the table scroll's zone. - Need IB (and possibly user) interface for setting cell alignment, wrap. I think this can be handled by the slot inspector. - Allow copyFont / pasteFont operations. - Need to figure out what to do about data-sizing. - User should be able to set the width/height of row/col titles, just like resizing normal slots. - Should be able to put a label on the "null-view" -- specifically, a title for the row-titles column. - Should be able to resize uniformSize borders. The result should be to change the uniform size for the whole border. - Figure out how icon cells should work precisely. Should they take control of the image display in any way? For instance, if the cell is too small to contain the entire image should it be cropped? Scaled? Not shown? - Add search (find) support. - Consider adding facilities to automatically save column order and sizes to NeXT defaults (like Window does). - Need to revamp mouse-tracking, selection (cell-wise selection). - Fix the handling of the grid. The width for the grid lines should not count as part of the width of the slots. It should be separated from the slots themselves entirely. Move grid drawing out of the *BORDER* cells. (This has already been done for the *table* cells.) - Provide public access / IB methods for selecting grid styles. DONE: ---- v127 - Make cell prototypes scrollable by default -- since we've had to do this manually in each place which has used cell editing to date. - After editing ends via Return in TableScroll, firstResponder status should be returned to the TableScroll, rather than reverting uselessly to the Window. - Put together some kind of coordinated error-reporting mechanism. Create assertion macro(s) which raise exceptions which can be caught and logged if needed (unlike standard assert()). v126 - Update documentation on ownerDraw stuff. v123 - Remove the unnecessary code in MiscTableView's -drawSelf:: which sets up a clipping rect if there are subviews. It's not needed at all since no drawing of subviews occurs inside of -drawSelf::. - Remove the unused -tooSmall method in MiscTableViewPrint.M Not only is this method unused, but it's probably not the correct thing to do. This presumes that the view is being used in an interactive application. It's probably better to throw a "too small" exception. - Remove the unused -putImage:atPoint: method from MiscTableViewPrint.M - Inline use-owner-font check in MiscTableCell's high-frequency -tableScroll:reviveAt::. - Add unselect{row/col/slot} methods. - Merge -reflectSelection and -selectionChanged since they now do the same thing. In the OpenStep version, -reflectSelection was removed altogether.