Annotation of Examples/EnterpriseObjects/SHLExamples/Delegation/AppController.m, revision 1.1.1.1

1.1       root        1: /*--------------------------------------------------------------------------
                      2:  *
                      3:  *     You may freely copy, distribute, and reuse the code in this example.
                      4:  *     SHL Systemhouse disclaims any warranty of any kind, expressed or  
                      5:  *     implied, as to its fitness for any particular use.
                      6:  *
                      7:  *
                      8:  *     AppController
                      9:  *
                     10:  *     Inherits From:          NSObject
                     11:  *
                     12:  *     Conforms To:            None
                     13:  *
                     14:  *     Declared In:            AppController.h
                     15:  *
                     16:  *
                     17:  *------------------------------------------------------------------------*/
                     18: #import <eointerface/eointerface.h>
                     19: 
                     20: #import "AppController.h"
                     21: #import "ScrollViewExtensions.h"
                     22: 
                     23: 
                     24: typedef enum {
                     25:     EOCONTROLLER, EODATABASE, EODATABASECONTEXT, EODATABASECHANNEL,
                     26:        EOADAPTOR, EOADAPTORCONTEXT, EOADAPTORCHANNEL
                     27: } EOFDelegates;
                     28: 
                     29: 
                     30: 
                     31: 
                     32: @implementation AppController
                     33: 
                     34: /*--------------------------------------------------------------------------
                     35:  *     Tracing
                     36:  *------------------------------------------------------------------------*/
                     37: - (BOOL) isTracing
                     38: {
                     39:        return trace;
                     40: }
                     41: 
                     42: 
                     43: - (BOOL) isVerbose
                     44: {
                     45:        return verbose;
                     46: }
                     47: 
                     48: 
                     49: - (BOOL) wantsAlertPanels
                     50: {
                     51:        return alert;
                     52: }
                     53: 
                     54: 
                     55: - setTracingOFF: sender
                     56: {
                     57:        trace = ( ! [[sender selectedCell] state]);
                     58:        return self;
                     59: }
                     60: 
                     61: 
                     62: - setIsVerbose: sender
                     63: {
                     64:        verbose = [[sender selectedCell] state];
                     65:        return self;
                     66: }
                     67: 
                     68: 
                     69: - setWantsAlertPanels: sender
                     70: {
                     71:        alert = [[sender selectedCell] state];
                     72:        return self;
                     73: }
                     74: 
                     75: 
                     76: - console:sender
                     77: {
                     78:        id      window = [console window];
                     79:        
                     80:        [window isVisible] ? [window orderOut:nil] : [window orderFront:nil];
                     81:        return self;
                     82: }
                     83: 
                     84: 
                     85: /*--------------------------------------------------------------------------
                     86:  *     Setting Delegates
                     87:  *------------------------------------------------------------------------*/
                     88: - _eofObjectForTag:(int)tag
                     89: {
                     90:        id      eofObject;
                     91:        
                     92:        switch (tag)
                     93:                {
                     94:                case EOCONTROLLER:
                     95:                        eofObject = eoController;
                     96:                        break;
                     97:                        
                     98:                case EODATABASECHANNEL: 
                     99:                        eofObject =  [(EODatabaseDataSource *) [eoController dataSource] databaseChannel]; 
                    100:                        break;
                    101: 
                    102:                case EOADAPTOR: 
                    103:                        eofObject = [[[[(EODatabaseDataSource *)[eoController dataSource] databaseChannel] 
                    104:                                adaptorChannel] adaptorContext] adaptor];
                    105:                        break;
                    106: 
                    107:                case EOADAPTORCONTEXT:  
                    108:                        eofObject = [[[(EODatabaseDataSource *)[eoController dataSource] databaseChannel] 
                    109:                                adaptorChannel] adaptorContext];
                    110:                        break;
                    111: 
                    112:                case EOADAPTORCHANNEL:  
                    113:                        eofObject = [[(EODatabaseDataSource *)[eoController dataSource] databaseChannel] 
                    114:                                adaptorChannel];
                    115:                        break;
                    116: 
                    117:                case EODATABASE:
                    118:                case EODATABASECONTEXT:
                    119:                default:
                    120:                        eofObject = nil;
                    121:                        break;
                    122:                }
                    123: 
                    124:        return eofObject;
                    125: }
                    126: 
                    127: 
                    128: - setDelegates: sender
                    129: {
                    130:        int     rows, cols, iterator;
                    131:        
                    132:        [sender getNumRows:&rows numCols:&cols];
                    133:        for (iterator = 0; iterator < rows; iterator++)
                    134:                {
                    135:                id cell = [sender cellAt:iterator :0];
                    136:                        /* Just a type cast to avoid warning of mulitple declarations */
                    137:                [ (EODatabaseChannel *)[self _eofObjectForTag:[cell tag]] 
                    138:                        setDelegate:[cell state] ? eofDelegate : nil];
                    139:                }
                    140:                
                    141:        return self;
                    142: }
                    143:                
                    144: 
                    145: /*--------------------------------------------------------------------------
                    146:  *     Modifying EOController Characteristics
                    147:  *------------------------------------------------------------------------*/
                    148: - setEnableUndo: sender
                    149: {
                    150:        [eoController setUndoEnabled: [[sender selectedCell] state]];
                    151:        return self;
                    152: }
                    153: 
                    154: 
                    155: - setAutomaticUndoMarks: sender
                    156: {
                    157:        [eoController setMarksEveryOperation: [[sender selectedCell] state]];
                    158:        return self;
                    159: }
                    160: 
                    161: 
                    162: - setBufferEdits: sender
                    163: {
                    164:        [eoController setSavesToObjectsAutomatically: 
                    165:                ( ! [[sender selectedCell] state])];
                    166:        return self;
                    167: }
                    168: 
                    169: 
                    170: - setBufferOperations: sender
                    171: {
                    172:        [eoController setSavesToDataSourceAutomatically: 
                    173:                ( ! [[sender selectedCell] state])];
                    174:        return self;
                    175: }
                    176: 
                    177: 
                    178: - setMaximumUndoEntries: sender
                    179: {
                    180:        [eoController setMaximumUndoMarks: [sender intValue]];
                    181:        return self;
                    182: }
                    183: 
                    184: 
                    185: /*--------------------------------------------------------------------------
                    186:  *     Announcing Trace Info
                    187:  *------------------------------------------------------------------------*/
                    188: - (void) announce:sender selector:(SEL)selector
                    189: {
                    190:        return [self announce:sender selector:selector with:nil];
                    191: }
                    192: 
                    193: 
                    194: - (void) announce:sender selector:(SEL)selector with:array
                    195: {
                    196:        NSMutableString *string;
                    197: 
                    198:        if (trace == NO) return;
                    199:        
                    200:        string = [NSMutableString stringWithFormat:@"BEGIN> {Sender = %s%s",
                    201:                [[(NSObject *)[sender class] description] cString], verbose ? " " : "}"];
                    202:        
                    203:        if (verbose)
                    204:                {
                    205:                id verboseString = 
                    206:                        [NSMutableString 
                    207:                                stringWithFormat:@"}\n\t{Sender Description = %s}",
                    208:                        [ [(NSObject *)sender description] cString]];
                    209:                [string appendString:verboseString];
                    210:                }
                    211:                
                    212:        [string appendFormat:@" \n\t{Delegate Method = %s} ", sel_getName(selector)];
                    213: 
                    214:        if (verbose && array)
                    215:                {
                    216:                id object;
                    217:                id verboseString = [NSMutableString stringWithCapacity:0];
                    218:                id enumerator = [array objectEnumerator];
                    219:                
                    220:                while ((object = [enumerator nextObject]) != nil)
                    221:                        [verboseString 
                    222:                                appendFormat:@"\n\t{Argument = %s} \n\t{Argument Description = %s} ", 
                    223:                                [[(NSObject *)[object class] description] cString], 
                    224:                                [[(NSObject *) object description] cString]];
                    225: 
                    226:                [string appendString:verboseString];
                    227:                }
                    228: 
                    229:                
                    230:        [string appendFormat:@"\n"];
                    231:        [console sprintf: "%s", [string cString]];
                    232: }
                    233: 
                    234: 
                    235: /*--------------------------------------------------------------------------
                    236:  *     Application Control
                    237:  *------------------------------------------------------------------------*/
                    238: - appDidInit: sender
                    239: {
                    240:        trace = YES;
                    241:        verbose = NO;
                    242:        alert = YES;
                    243:        
                    244:        [(EOController *)eoController setDelegate:eofDelegate];
                    245:        [(EODatabaseChannel *)[self _eofObjectForTag:EODATABASECHANNEL] setDelegate:eofDelegate];
                    246:        [(EOAdaptorChannel *)[self _eofObjectForTag:EOADAPTORCHANNEL] setDelegate:eofDelegate];
                    247:        [(EOAdaptorContext *)[self _eofObjectForTag:EOADAPTORCONTEXT] setDelegate:eofDelegate];
                    248:        [(EOAdaptor *)[self _eofObjectForTag:EOADAPTOR] setDelegate:eofDelegate];
                    249:        [eoController setSelectsFirstObjectAfterFetch: YES];
                    250:        return self;
                    251: }
                    252: 
                    253: 
                    254: - windowWillClose:sender
                    255: {
                    256:        if ((sender = [console window]))
                    257:                [consoleButton setState:1];
                    258:                
                    259:        return self;
                    260: }
                    261: 
                    262: 
                    263: - windowDidBecomeKey:sender
                    264: {
                    265:        if ((sender = [console window]))
                    266:                [consoleButton setState:0];
                    267:                
                    268:        return self;
                    269: }
                    270: 
                    271: 
                    272: @end

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.