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.