|
|
1.1 ! root 1: ! 2: #import "EmpController.h" ! 3: #import <eointerface/eointerface.h> ! 4: #import "ValueForKey.h" ! 5: #import "SelectionInsertionAssociation.h" ! 6: ! 7: @implementation EmpController ! 8: ! 9: - appDidInit:sender ! 10: { ! 11: // add custom association that inserts and deletes objects in the ! 12: // empProjectsController based on the selection in the allProjectsController ! 13: [empProjectsController addAssociation:[[SelectionInsertionAssociation alloc] initWithController:empProjectsController key:nil destination:allProjectsController]]; ! 14: ! 15: // add custom association that inserts and deletes objects in the ! 16: // empDeptsController based on the selection in the allDeptsController ! 17: [empDeptsController addAssociation:[[SelectionInsertionAssociation alloc] initWithController:empDeptsController key:nil destination:allDeptsController]]; ! 18: ! 19: // Fetch the list of all projects and all departments for our pick lists. ! 20: // A real app would probably cache these list so it wouldn't have to ! 21: // requery the database each time a new window is opened. ! 22: [allProjectsController fetch:nil]; ! 23: [allDeptsController fetch:nil]; ! 24: ! 25: // Set a controller in memory sort for first name and last name ! 26: // and fetch all of the employees ! 27: [empController setSortOrdering:[NSArray arrayWithObjects: ! 28: [EOKeySortOrdering keyOrderingWithKey:@"last_name" ordering:NSOrderedAscending], ! 29: [EOKeySortOrdering keyOrderingWithKey:@"first_name" ordering:NSOrderedAscending], nil]]; ! 30: [empController fetch:nil]; ! 31: ! 32: return self; ! 33: } ! 34: ! 35: - insert:sender ! 36: { ! 37: // Add a new employee ! 38: // In addition to inserting the employee itself, we need to insert ! 39: // in any detail controller that represent mandatory to-one relationships. ! 40: // Possible Enhansement: make the Savvy controller propagate inserts to ! 41: // detail controllers automatically. ! 42: [empController insert:self]; ! 43: [quoteController insert:self]; ! 44: [photoController insert:self]; ! 45: // default the department for the new employee to the first department in the list ! 46: [empDeptsController insertObject:[[allDeptsController allObjects] objectAtIndex:0] atIndex:0]; ! 47: return self; ! 48: } ! 49: ! 50: - (BOOL)controllerWillDiscardOperations:(EOController *)controller ! 51: { ! 52: // Application policy: if they fetch or change selection, ! 53: // automatically save the current employee data. ! 54: return [self save:nil] ? YES : NO; ! 55: } ! 56: ! 57: ! 58: - save:sender ! 59: { ! 60: [empController saveToDataSource]; ! 61: ! 62: // Updates to controllers (like our department) may have changed property ! 63: // values that we display in the master. ! 64: // Re-sort in case the save changed the sort attributes ! 65: [empController resort]; ! 66: ! 67: return self; ! 68: } ! 69: ! 70: @end
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.