This is DwellingQueryController.m in view mode; [Download] [Up]
#import "DwellingQueryController.h"
#import <pudobjectmodel/WaterHeater.h>
@implementation DwellingQueryController
- awakeFromNib
{
[queryEOController fetch:self];
return [super awakeFromNib];
}
- (int)runAlertPanel:sender
{
return NXRunAlertPanel("Invalid Dwelling Type","Cannot Find Dwelling Type beginning with %s","Edit","Show Listing",NULL,[(TextField *)sender stringValue]);
}
- fetchFromTextField:sender
{
BOOL found = NO;
if ([(TextField *)sender stringValue] && strlen([(TextField *)sender stringValue]) >0) {
id theString = [NSString stringWithCString:[(TextField *)sender stringValue]];
NSEnumerator *theEnum = [[queryEOController allObjects] objectEnumerator];
EOGenericRecord * theRecord = nil;
NSRange aRange = {0,[theString length]};
unsigned mask = NSCaseInsensitiveSearch;
while (!found && (theRecord = [theEnum nextObject])) {
NSString *cmpKey = [theRecord objectForKey:@"CATEGORY_NAME"];
found = ([cmpKey compare:theString
options:mask
range:aRange] == NSOrderedSame);
}
if (found)
[queryEOController selectObjectAtIndex:[[queryEOController allObjects] indexOfObject:theRecord]];
}
if (found)
[self setObject:sender];
else {
int answer = 2;
if ([[appController preferences] useAlertPanels] && [self respondsToSelector:@selector(runAlertPanel:)])
answer = [self runAlertPanel:sender];
if (answer == 0)
[[tableView window] makeKeyAndOrderFront:self];
else {
NXBeep();
[sender setStringValue:""];
[sender selectText:self];
}
}
return self;
}
- (void)setObject:sender
{
id currentWaterHeater = [rootEOController currentObject],
currentDwellingCategory = [queryEOController currentObject];
if (currentWaterHeater && currentDwellingCategory) {
[currentWaterHeater setDWELLING_CATEGORY:[currentDwellingCategory objectForKey:@"CATEGORY_NAME"]];
// This will update the query fields
[appController controllerDidChangeSelection:rootEOController];
[[appController rootEditController] registerOperation:TD_Update onObject:currentWaterHeater];
// This line is only to update the UI with the new default value.
// It has nothing to do with registering the edit to be saved.
[appController resetMenuCells];
[[tableView window] performClose:self];
[[nextText window] makeKeyAndOrderFront:self];
[nextText selectText:self];
}
}
@end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.