InterfaceController. [plain text]
/*
* © Copyright 2001-2003 Apple Computer, Inc. All rights reserved.
*
* IMPORTANT: This Apple software is supplied to you by Apple Computer, Inc. (ÒAppleÓ) in
* consideration of your agreement to the following terms, and your use, installation,
* modification or redistribution of this Apple software constitutes acceptance of these
* terms. If you do not agree with these terms, please do not use, install, modify or
* redistribute this Apple software.
*
* In consideration of your agreement to abide by the following terms, and subject to these
* terms, Apple grants you a personal, non exclusive license, under AppleÕs copyrights in this
* original Apple software (the ÒApple SoftwareÓ), to use, reproduce, modify and redistribute
* the Apple Software, with or without modifications, in source and/or binary forms; provided
* that if you redistribute the Apple Software in its entirety and without modifications, you
* must retain this notice and the following text and disclaimers in all such redistributions
* of the Apple Software. Neither the name, trademarks, service marks or logos of Apple
* Computer, Inc. may be used to endorse or promote products derived from the Apple Software
* without specific prior written permission from Apple. Except as expressly stated in this
* notice, no other rights or licenses, express or implied, are granted by Apple herein,
* including but not limited to any patent rights that may be infringed by your derivative
* works or by other works in which the Apple Software may be incorporated.
*
* The Apple Software is provided by Apple on an "AS IS" basis. APPLE MAKES NO WARRANTIES,
* EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED WARRANTIES OF NON-
* INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, REGARDING THE APPLE
* SOFTWARE OR ITS USE AND OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS.
*
* IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE,
* REPRODUCTION, MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED AND
* WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE), STRICT LIABILITY OR
* OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
//ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ
// Includes
//ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ
#import "InterfaceController.h"
#import "MyDocument.h"
#import "DeviceDataSource.h"
#import "AuthoringDevice.h"
#import "VerticallyCenteredTextFieldCell.h"
#import "ImageAndTextCell.h"
//ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ
// Constants
//ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ
#define kCDImagePath @"CD-R"
@implementation InterfaceController
//ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ
// init
//ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ
- ( id ) init
{
[ super init ];
// Create the document array. We keep an array of documents so that in case
// a user selects a drive and then tries to select one again, it just brings
// the window forward and out of hiding.
[ self setTheDocumentArray: [ NSMutableArray arrayWithCapacity : 0 ] ];
return self;
}
//ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ
// dealloc
//ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ
- ( void ) dealloc
{
[ self setTheDocumentArray: nil ];
[ super dealloc ];
}
//ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ
// awakeFromNib
//ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ
- ( void ) awakeFromNib
{
// This is a dirty trick we do to set the far left column up so
// that we can put images in it. We create an NSImageCell and tell
// it we want an NSImage inside it. Later on, when the selector for
// that column is called in the data source, the correct image name
// is returned and that will put the correct image in the column.
NSImageCell * theImageCell = nil;
NSImage * theImage = nil;
VerticallyCenteredTextFieldCell * textCell = nil;
theImageCell = [ [ NSImageCell alloc ] init ];
textCell = [ [ VerticallyCenteredTextFieldCell alloc ] init ];
theImage = [ NSImage imageNamed: kCDImagePath ];
[ theImageCell setObjectValue: theImage ];
[ iconColumn setDataCell: theImageCell ];
[ theImageCell release ];
[ vendorColumn setDataCell: textCell ];
[ productColumn setDataCell: textCell ];
[ revisionLevelColumn setDataCell: textCell ];
[ physicalInterconnectColumn setDataCell: textCell ];
[ textCell release ];
[ [ self theTableView ] setDoubleAction: @selector ( selectDrive: ) ];
}
//ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ
// selectDrive:
//ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ
- ( void ) selectDrive: ( id ) sender
{
NSNumber * selectedIndex = nil;
NSEnumerator * rowEnumerator = nil;
DeviceDataSource * dataSource = nil;
rowEnumerator = [ [ self theTableView ] selectedRowEnumerator ];
while ( selectedIndex = [ rowEnumerator nextObject ] )
{
MyDocument * theDocument = nil;
NSEnumerator * documentEnumerator = nil;
AuthoringDevice * theSelectedDevice = nil;
id object = nil;
documentEnumerator = [ [ self theDocumentArray ] objectEnumerator ];
dataSource = ( DeviceDataSource * ) ( [ [ self theTableView ] dataSource ] );
theSelectedDevice = [ [ dataSource theDeviceList ] objectAtIndex: [ selectedIndex intValue ] ];
while ( object = [ documentEnumerator nextObject ] )
{
if ( [ [ object theAuthoringDevice ] isEqual : theSelectedDevice ] )
{
NSWindow * theWindow = nil;
theDocument = ( MyDocument * ) object;
theWindow = [ theDocument theWindow ];
// They selected a window for which we have a document created. Just
// bring it to the front.
[ [ theDocument theWindow ] makeKeyAndOrderFront: nil ];
return;
}
}
// Create a new document
theDocument = [ MyDocument myDocument ];
[ theDocumentArray addObject: theDocument ];
[ theDocument setTheAuthoringDevice:
[ [ dataSource theDeviceList ] objectAtIndex: [ selectedIndex intValue ] ] ];
}
}
#if 0
#pragma mark -
#pragma mark Accessor Methods
#pragma mark -
#endif
- ( NSTableView * ) theTableView { return theTableView; }
- ( NSMutableArray * ) theDocumentArray { return theDocumentArray; }
- ( void ) setTheDocumentArray: ( NSMutableArray * ) value
{
[ value retain ];
[ theDocumentArray release ];
theDocumentArray = value;
}
@end