This is CEBrowserCell.m in view mode; [Download] [Up]
/* CEBrowserCell.m * * This object controls the data of a beaker (molecules, cameras, groups etc.) * It is the main document of BeakerBoy and controls everything from loading to * setting up the browser which does most of the other work. * * For interface-info see the header file. The comments in this file mostly * cover only the real implementation details. * * Written by: Thomas Engel * Created: 23.10.1993 (Copyleft) * Last modified: 12.11.1994 */ #define CURRENT_VERSION 1 #import <CEBrowserCell.h> @implementation CEBrowserCell + initialize { if ( self == [CEBrowserCell class] ) [CEBrowserCell setVersion:CURRENT_VERSION]; return self; } - free { // Don't free the objects...we might need them. [dragSources free]; return self; } - mouseDown:(NXEvent *)theEvent forView:aView { id dragSource; id dragPB; NXPoint zero = { 0.0, 0.0 }; NXPoint theSpot; // Only continue if there is someone who will handle the drags ! if( [dragSources count] < 1 ) return self; dragPB = [Pasteboard newName:NXDragPboard]; theSpot.x = (theEvent->location).x - 24; theSpot.y = (theEvent->location).y - 24; [aView convertPoint:&theSpot fromView:nil]; // restrict the dragging on the first tab. // BUG: this should be really automatic !! if( theSpot.x > 18 - 24 ) return self; dragSource = [dragSources objectAt:0]; [dragSource prepareDraggingPboard:dragPB]; // The source should normally be the object itself. // Butcurrently this is only for finding out about // what the drag should be able to do..perhaps this fits better // into the cells (= self) responsiblilty. [aView dragImage:[dragSource dragImage] at:&theSpot offset:&zero event:theEvent pasteboard:dragPB source:self slideBack:NO]; return nil; } - setSource:theObject { source = theObject; return self; } - source { return source; } - (NXDragOperation)draggingSourceOperationMaskForLocal:(BOOL)isLocal { if( isLocal ) return NX_DragOperationCopy; return NX_DragOperationAll; } - setDraggingSource:anObject at:(unsigned)index { // This is not implemented properly !! if( !dragSources ) dragSources = [List new]; [dragSources addObject:anObject]; return self; } @end /* * History: 13.01.95 Buh * * * Bugs: - ... */
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.