This is OICNSTableView.m in view mode; [Download] [Up]
//************************************************************************ // // OICNSTableView.m // // by Juergen Moellenhoff <jm@oic.de> // // // This code is supplied "as is" the author makes no warranty as to its // suitability for any purpose. This code is free and may be distributed // in accordance with the terms of the: // // GNU GENERAL PUBLIC LICENSE // Version 2, June 1991 // copyright (C) 1989, 1991 Free Software Foundation, Inc. // 675 Mass Ave, Cambridge, MA 02139, USA // //************************************************************************ #import "OICNSTableView.h" #import "OICNSTableHeaderCell.h" #import "OICNSTableHeaderView.h" #import "OICNSTableColumn.h" #import "OICNSTableViewPrivate.h" #import <AppKit/AppKit.h> #define OICNSTABLEVIEW_CURRENT_VERSION 3 @implementation OICNSTableView // // Private Methods // + (OICNSTableColumn *)_createNewTableColumn:(NSTableColumn *)oldColumn { OICNSTableColumn *newColumn; newColumn = [[OICNSTableColumn alloc] initWithIdentifier:[oldColumn identifier]]; // Try to copy the "outfit" of the old column, but don't copy the // headerCell... [newColumn setTableView:[oldColumn tableView]]; [newColumn setWidth:[oldColumn width]]; [newColumn setMinWidth:[oldColumn minWidth]]; [newColumn setMaxWidth:[oldColumn maxWidth]]; [newColumn setResizable:[oldColumn isResizable]]; [newColumn setEditable:[oldColumn isEditable]]; [newColumn setDataCell:[oldColumn dataCell]]; return [newColumn autorelease]; } // // This bumps the class version so that we can compatibly read // old objects out of an archive. // + (void)initialize { if (self == [OICNSTableView class]) [OICNSTableView setVersion:OICNSTABLEVIEW_CURRENT_VERSION]; } // // Init // - initWithFrame:(NSRect)newFrame { OICNSTableHeaderView *newTableHeaderView; if ([super initWithFrame:newFrame] == nil) return nil; // Replace the headerView with a new (my own) // headerView, but try to copy the "outfit" // of the old headerView. newTableHeaderView = [[[OICNSTableHeaderView alloc] initWithFrame:[[self headerView] frame]] autorelease]; [self setHeaderView:newTableHeaderView]; return self; } // // NSCoding protocol // - (id)initWithCoder:(NSCoder *)aDecoder { [super initWithCoder:aDecoder]; if ([aDecoder versionForClassName:@"OICNSTableView"] < OICNSTABLEVIEW_CURRENT_VERSION) { unsigned int i, iCount; NSTableColumn *oldColumn; OICNSTableColumn *newColumn; NSArray *colArray; int iDummy; if ([aDecoder versionForClassName:@"OICNSTableView"] == 1) { // read code for old version [aDecoder decodeValueOfObjCType:@encode(typeof(iDummy)) at:&iDummy]; } // Replace old columns colArray = [NSArray arrayWithArray:[self tableColumns]]; for (i = 0, iCount = [colArray count]; i < iCount; i++) { [self removeTableColumn:[colArray objectAtIndex:i]]; } for (i = 0, iCount = [colArray count]; i < iCount; i++) { oldColumn = [colArray objectAtIndex:i]; newColumn = [OICNSTableView _createNewTableColumn:oldColumn]; [newColumn setHeaderCell:[OICNSTableColumn _createNewHeaderCell:[oldColumn headerCell]]]; [newColumn setOrdering:[[oldColumn headerCell] ordering]]; [self addTableColumn:newColumn]; } } return self; } // // NSCoding protocol // - (void)encodeWithCoder:(NSCoder *)aCoder { [super encodeWithCoder:aCoder]; } @end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.