Ignore:
Timestamp:
11/18/02 08:57:41 (21 years ago)
Author:
Nicholas Riley
Message:

Alarms.nib: Removed horizontal scroll bar. Turned on grid. Set delegate to NJRTableDelegate instead of PSAlarmSetController.

NJRTableDelegate: In general, made functional (was previously unused). Fixed MyCompanyName. Changed ORDER_BY_CONTEXT to use key-value coding instead of assuming data consists of a dictionary of dictionaries. Added sorting support (reorderedData, replaces oData) with autosave support for sort context. Added _positionTypeSelectDisplay, which adjusts position and justification of type select display control based on the current sort column. Added support for reverse sorting in type select string. Use table data source instead of sorted data so text matches as displayed (this will break with non-text cells...).

NJRTableView: Adapted from iTableView (Jaguar table alternate table background color), TableTester (most everything else) and NJROutlineView (keyDown, moveToBeginning/EndOfDocument). Support for type selection, delete shortcut for row deletion, and iTunes-alike background colors and frame.

NSCharacterSet-NJRExtensions: Moved _typeSelectSet from NJROutlineView as it's now shared with NJRTableView. Still need to factor NJROutlineView as embedded in HostLauncher some day.

PSAlarm: Reorganized, renamed and categorized methods. Added time accessor for the benefit of sorting. Renamed compare: to compareDate: for clarity. Added compareMessage:, though it's currently unused. Renamed cancel to cancelTimer for clarity.

PSAlarmSetController: More fun with initial first responder on window show/hide; still need to work around bug properly (subclass NSComboBox?) and fix it for real. As is, works for OS X 10.1.

PSAlarms: Added alarms accessor, returning alarm array. Fixed memory leak on successful alarm removal (oops). Added removeAlarms:, needed with sorted alarm list.

PSAlarmsController: Set window resize increment. Changes to table delegate methods to use reordered alarm list. Register for NSTableViewSelectionDidChangeNotification now we're no longer the table view delegate. Fixed autoselection in alarmsChanged by using data reordering support in NJRTableView. Implement NJRTableViewDataSource to permit deletion from table view.

Pester.pbproj: Added new files.

Read Me.rtfd: Added TableTester/iTableView acknowledgements. Updated release notes.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Cocoa/Pester/Source/PSAlarmsController.m

    r34 r51  
    1010#import "PSAlarm.h"
    1111#import "NSTableView-NJRExtensions.h"
    12 
     12#import "NJRTableView.h"
     13#import "NJRTableDelegate.h"
    1314
    1415@implementation PSAlarmsController
     16
     17- (void)alarmsChanged;
     18{
     19    reorderedAlarms = [[tableView delegate] reorderedDataForData: [alarms alarms]];
     20}
    1521
    1622- (id)init;
     
    2329        if (nil == [[NSUserDefaults standardUserDefaults] objectForKey:
    2430            [@"NSWindow Frame " stringByAppendingString: [[self window] frameAutosaveName]]])
    25         {
     31           {
    2632            [[self window] center];
    27         }
     33           }
    2834        [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(alarmsChanged) name: PSAlarmsDidChangeNotification object: alarms];
     35        [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(tableViewSelectionDidChange:) name: NSTableViewSelectionDidChangeNotification object: tableView];
    2936        [tableView setAutosaveName: @"Alarm list"];
    3037        [tableView setAutosaveTableColumns: YES];
    31         [tableView noteNumberOfRowsChanged];
     38        [self alarmsChanged];
    3239        [[self window] makeFirstResponder: tableView];
     40        [[self window] setResizeIncrements: NSMakeSize(1, [tableView cellHeight])];
    3341    }
    3442    return self;
    3543}
    3644
    37 - (void)alarmsChanged; // XXX fix autoselection to be more reasonable, see whatever I did in that _Learning Cocoa_ project I think
    38 {
    39     [tableView reloadData];
    40     [tableView deselectAll: self];
    41 }
    4245
    4346- (IBAction)remove:(id)sender;
    4447{
    45     [alarms removeAlarmsAtIndices: [[tableView selectedRowEnumerator] allObjects]];
     48    [alarms removeAlarms: [[tableView delegate] selectedItems]];
    4649}
    4750
     
    5760- (id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn *)tableColumn row:(int)row;
    5861{
    59     PSAlarm *alarm = [alarms alarmAtIndex: row];
     62    PSAlarm *alarm = [reorderedAlarms objectAtIndex: row];
    6063
    6164    if ([[tableColumn identifier] isEqualToString: @"message"]) return [alarm message];
     
    7073    return nil;
    7174}
     75@end
     76
     77@implementation PSAlarmsController (NJRTableViewDataSource)
     78
     79- (void)removeSelectedRowsFromTableView:(NSTableView *)aTableView;
     80{
     81    [self remove: aTableView];
     82}
     83
    7284@end
    7385
Note: See TracChangeset for help on using the changeset viewer.