/*

File IKSuitcaseInspector.m

Release 1.2, 7 June 1994
Copyright (C) 1994 by H. Scott Roy

This code is part of IconKit, a general toolbox for drag-and-drop applications.  IconKit is free for noncommercial use, but costs money for a commercial license.  You should have received a copy of the license agreement with this file.  If not, a copy of the license and the complete source of IconKit can be obtained from the author:

		H. Scott Roy
		2573 Stowe Ct.
		Northbrook, IL  60062-8103
		iconkit@cs.stanford.edu

For your editing convenience, this file is best viewed using an editor that automatically wraps long lines, in a fixed point font at 80 columns, with tabs every 4 spaces.

*/


/* ========================================================================== */


/*

This file implements a custom inspector for an IKCell.  The inspector lets one set the editing, dragging, shelf behavior, name, and icon.

*/

#import "IKSuitcaseInspector.h"
#import "IKSuitcase.h"

@implementation IKSuitcaseInspector


/* ========================================================================== */


/*

Here are the tags used to identify all the different cells.

*/

#define NAME				0
#define ICON				1
#define OPENICON			2


/* ========================================================================== */


- init
{
    char	path [MAXPATHLEN + 1];
    id		bundle;
    
    [super init];
    
    bundle = [NXBundle  bundleForClass: [IKSuitcase class]];
    [bundle  getPath: path  forResource: "IKSuitcaseInspector"  ofType: "nib"];
    [NXApp  loadNibFile: path  owner: self  withNames: NO
				fromZone: [self zone]];
    
	return self;
}


/* ========================================================================== */


/*

Reset the various options as needed.

*/


- updateLook: sender
{
	const char
		* name = [[look  findCellWithTag: NAME]  stringValue],
		* icon = [[look  findCellWithTag: ICON]  stringValue],
		* openIcon = [[look  findCellWithTag: OPENICON]  stringValue];
	
	[(IKSuitcase *) object  setName: name];
	[object  setImage: icon ? [NXImage  findImageNamed: icon] : nil];
	[object  setAcceptingDragImage: openIcon ?
					[NXImage  findImageNamed: openIcon] : nil];
	
	[self  ok: sender];
	
	return self;
}


- updateClassToHold: sender
{
	[object  setClassToHold: [classToHold  stringValue]];
	[self  ok: sender];
	
	return self;
}


/* ========================================================================== */


/*

The ok: method does nothing.  The revert method needs to initialize itself from the current selection.

*/


- ok: sender
{
	[self  touch: self];
	return [super  ok: sender];
}


- revert: sender
{
	const char
		* name = [object  name],
		* icon = [[object  image]  name],
		* openIcon = [[object  acceptingDragImage]  name];
	
	[[look  findCellWithTag: NAME]  setStringValue: name];
	[[look  findCellWithTag: ICON]  setStringValue: icon];
	[[look  findCellWithTag: OPENICON]  setStringValue: openIcon];
	
	[classToHold  setStringValue: [object  classToHold]];
	
	return [super revert: sender];
}


- (BOOL) wantsButtons
{
    return NO;
}


@end
