This is EditMatrix.m in view mode; [Download] [Up]
/*
* Copyright (C) 1993 Robert Davis
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of Version 2, or any later version, of
* the GNU General Public License as published by the Free Software
* Foundation.
*/
static char RCSId[]="$Id: EditMatrix.m,v 1.5 1993/05/18 03:55:01 davis Exp $";
#import <appkit/TextFieldCell.h>
#import "EditMatrix.h"
@interface EditMatrix (Private)
- (BOOL)_incrementCount:sender;
@end
@implementation EditMatrix
- initFrame:(const NXRect *)frameRect
{
[super initFrame:frameRect];
editableCells = NO;
return self;
}
- setEditableCells:(BOOL)aCond
{
editableCells = aCond;
return self;
}
- (BOOL)editableCells
{
return editableCells;
}
- mouseDown:(NXEvent *)theEvent
{
/*
* If there's a double-click, and if editableCells is turned on,
* allow the cell to be edited.
*/
if (editableCells && theEvent->data.mouse.click == 2)
[editingCell = [self selectedCell] setEditable:YES];
/* Clicking outside the cell should end editing */
if (editingCell && [window makeFirstResponder:window] )
[window endEditingFor:nil];
return [super mouseDown:theEvent];
}
- textDidEnd:textObject endChar:(short unsigned)whyEnd
{
[editingCell setEditable:NO];
editingCell = nil;
return [super textDidEnd:textObject endChar:whyEnd];
}
- (BOOL)multipleCellsSelected
{
selectedCount = 0;
[self sendAction:@selector(_incrementCount:) to:self forAllCells:NO];
return (selectedCount > 1);
}
- selectedCell
{
if ([self multipleCellsSelected])
return nil;
else
return [super selectedCell];
}
// Shuts up the compiler about unused RCSId
- (const char *) rcsid
{
return RCSId;
}
@end
@implementation EditMatrix (Private)
- (BOOL)_incrementCount:sender
{
return (++selectedCount < 2);
}
@end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.