This is DefConnectionInspector.m in view mode; [Download] [Up]
// Tue Oct 8 10:09:42 MET 1996 by Daniel Böhringer
// Built using the very educative ListInspector of Ralph Zazula (zazula@running-start.com) as
// template
/* toDo: create a contents inspector that handles a NXDefaultsVector which is registered in
* DefaultController's awakeFromNib- message
*
*/
#import <apps/InterfaceBuilder.h>
#import <appkit/NXImage.h>
#import "DefConnectionInspector.h"
#import "DefaultController.h"
@interface Button(PopUpButtonSel)
-(void)selectCellAt:(int)position;
-(int) selectedTag;
@end
@implementation Button(PopUpButtonSel)
-(void)selectCellAt:(int)position
{ Matrix *matrix=[[self target] itemList];
[matrix selectCellAt:position :0];
[self setTitle:[[matrix selectedCell] title]];
}
- (int)selectedTag
{ Matrix *matrix=[[self target] itemList];
if(![matrix selectedCell])
[matrix selectCellAt:[[self target] indexOfItem:[self title]] :0];
return [[matrix selectedCell] tag];
}
@end
@implementation DefConnectionInspector
- init
{ char path[MAXPATHLEN+1];
NXBundle *bundle = [NXBundle bundleForClass:[self class]];
[bundle getPath:path forResource:"DefConnectionInspector" ofType:"nib"];
[NXApp loadNibFile:path owner:self withNames:NO fromZone:[self zone]];
return self;
}
- ok:sender
{ if([NXApp isConnecting])
{ [object addObjectIfAbsent:[NXApp connectDestination]];
[self revert:nil]; // display¼
} return [super ok:sender];
}
- revert:sender
{ if (!sender)
{ [okButton setTitle:"Connect"];
[okButton setEnabled:([NXApp isConnecting] &&
[object indexOf:[NXApp connectDestination]] == NX_NOT_IN_LIST)];
[revertButton setTitle:"Disconnect"];
[revertButton setEnabled:([NXApp isConnecting] &&
[object indexOf:[NXApp connectDestination]] != NX_NOT_IN_LIST)];
} else // disconnecting
{ [object removeObjectAt:[[browser matrixInColumn:0] selectedRow]];
[NXApp stopConnecting];
} [browser loadColumnZero]; //update
/*
* This next bit checks to see if the user has dragged out a connection
* that duplicates one we've already stored in the list. If so, reflect
* this by selecting the appropriate cell in the browser.
*/
if([NXApp isConnecting] &&
([object indexOf:[NXApp connectDestination]] != NX_NOT_IN_LIST))
{ [[browser matrixInColumn:0]
selectCellAt:[object indexOf:[NXApp connectDestination]]:0];
[self displayDBStuff:browser];
} return [super revert:sender];
}
- (BOOL)wantsButtons
{ return YES;
}
- dbTextChanged:sender
{ [object registerName:[defName stringValue] andType:[typePopup selectedTag]
for:[object objectAt:[[browser matrixInColumn:0] selectedRow]]];
return self;
}
- displayDBStuff:sender
{ const char *aName;
DefaultControllerType_t aType;
id uiObjc=[object objectAt:[[browser matrixInColumn:0] selectedRow]];
if([object getName:&aName andType:&aType for:uiObjc])
{ [defName setStringValue:aName];
[typePopup selectCellAt:aType];
} return self;
}
- displayConnection:sender
{ id uiObjc=[object objectAt:[[browser matrixInColumn:0] selectedRow]];
[self displayDBStuff:sender];
[NXApp displayConnectionBetween:object and:uiObjc];
return self;
}
// NXBrowser delegation¼
-(int) browser:sender fillMatrix:matrix inColumn:(int)column
{ int i;
id cellList, theCell;
char buf[128];
id item;
[matrix renewRows:[object count] cols:1]; //Set the matrix to have the right number of cells.
cellList = [matrix cellList]; // Get list of cells from the matrix.
/*
* For each cell set its value, set whether it is a leaf
* or not and mark it loaded.
*/
for(i=0; i<[cellList count]; i++)
{ item = [object objectAt:i];
theCell = [cellList objectAt:i];
if([item respondsTo:@selector(title)] && [item title] && strlen([item title]))
{ sprintf(buf, "%s (%s)", [[item class] name], [item title]);
} else sprintf(buf, "%s", [[item class] name]);
[theCell setStringValue:buf];
[theCell setLeaf:YES];
[theCell setLoaded:YES];
} return [object count]; //Return the number of rows.
}
@end
@implementation DefaultController(IBInfoStuff)
- getIBImage
{ char path[1024];
NXImage *image = [NXImage findImageNamed:"defaultController"];
if(!image) {
NXBundle *bundle = [NXBundle bundleForClass:[self class]];
if([bundle getPath:path forResource:"defaultController" ofType:"tiff"])
image = [[NXImage alloc] initFromFile:path];
} return image;
}
- (const char *)getConnectInspectorClassName
{ return "DefConnectionInspector";
}
@end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.