
/*
    MiscNibManager_Protected.m
*/

// RCS identification information
static char *rcsID = "$Id:$";
static void __AvoidCompilerWarning(void) {if(!rcsID)__AvoidCompilerWarning();}

// NeXT Headers
#import <AppKit/AppKit.h>

// Other Headers
#import <MiscControllerKit/MiscNibManager.h>


@implementation MiscNibManager (Protected)

/*"
    This protected category of MiscNibManager should only be
    used by this class or subclasses. 
"*/


//-------------------------------------------------------------------
// 	Protected accessors
//-------------------------------------------------------------------

- (NSMutableArray*) mutableWindowManagers
/*"
    Returns our windowManagers instance variable. This is a method
   for us and our subclasses. Public classes should use our
   #windowManagers method which returns an immutable array.
"*/
{
    return _windowManagers;
}


//-------------------------------------------------------------------
// 	Protected accessors
//-------------------------------------------------------------------

- (void) _initializeUI
/*"
   A hook for subclasses to add UI initialization code. It is called from
   our #awakeFromNib method. Using this is preferable to extending
   #awakeFromNib. The current implementation only sends a release message
   to all our current window managers. This is done because all objects
   in the nib already have a retain count of 1. Since they are on our
   windowManagers list they'll have a retain count of 2. We don't want
   to release all the windowManagers twice when we release ourselves
   because it is possible that one could have been added programmically
   later (and would only have a retainCount of 1). Therefore by the time
   we get this message we know the only window managers in our array were
   the ones in the nib.
"*/
{
    [[self windowManagers] makeObjectsPerform:@selector(release)];
}

@end


@implementation MiscNibManager (NibNotification)

- (void) awakeFromNib
/*"
    Currently only calls #_initializeUI. 
"*/
{
    [self _initializeUI];
}

@end


