home *** CD-ROM | disk | FTP | other *** search
- /*
- * Author: Greg Burd, Mr. Average Developer
- * (I would like to be a member of the NeXT Developer Support Team.)
- *
- * You may freely copy, distribute and reuse the code in this example.
- * I disclaim any warranty of any kind, expressed or implied, as to
- * its fitness for any particular use.
- */
-
- #import <appkit/Application.h>
- #import <appkit/PopUpList.h>
- #import <appkit/Matrix.h>
- #import <strings.h>
- #import "SwapView.h"
-
- #import "InspectorController.h"
-
- /*
- * local global to help speed up the swapping out of views by keeping track
- * of the titles
- */
- static const char *theTitle;
-
- @implementation InspectorController
-
- - init
- {
- [super init];
-
- /* get our panel etc. */
- [NXApp loadNibSection:"Inspector.nib" owner:self withNames:NO];
-
- /* set target action of the popUp */
- [[popUpCover target] setTarget:self];
- [[popUpCover target] setAction:@selector(popUpAction:)];
-
- /* set the swapView's delegate so we get the message (this could be done
- * in IB, but I do it here for clarity). */
- [swapView setDelegate:self];
-
- /* set up the matrix so that it can receive the command-key events */
- //[[[popUpCover window] contentView] setNextResponder:[popUpCover target]];
-
- /* swap in the first inspector */
- theTitle = [popUpCover title];
-
- /* this is the default for SwapView, we can make it anything we want */
- [swapView setBackgroundGray:NX_LTGRAY];
- /* now swap in the first inspector */
- [swapView swapIt];
-
- return self;
- }
-
- /* this is to allow us to junp to any inspector given its key name */
- - inspectName:(char *)str
- {
- if (str) { theTitle = str; }
- [swapView swapIt];
-
- return self;
- }
-
- - showInspector
- {
- /* I separate this so that you can show and hide the inspector at will */
- [inspectorPanel makeKeyAndOrderFront:self];
- return self;
- }
-
- - popUpAction:sender
- {
- /* set up a pointer to the selectedCell of the matrix */
- theTitle = [[sender selectedCell] title];
- /* and swap out the view */
- [swapView swapIt];
-
- return self;
- }
-
- // delegate method of swapView
-
- /*
- * This is the delegate call every time the swap view gets a - swapIt
- * message. What this should return is the id of a panel, which is
- * off screen, and buffered, but not defered (SwapView needs its gstate).
- * SwapView will take the contentView of the panel and swap it in while
- * also removing the old view, if any, and placing it back into its old
- * panel.
- */
-
- - whatPanel
- {
- /*
- * now jsut do a set of 'ifs' to find out what panel to give to the
- * SwapView
- */
-
- if(theTitle) {
-
- /* make sure that the Button title matches the inspector name
- * this doesn't happen with a command key call
- */
- if (strcmp(theTitle,[popUpCover title])) {
- [popUpCover setTitle:theTitle];
- }
-
- if (!strcmp(theTitle,"Info..."))
- return infoPanel;
-
- if (!strcmp(theTitle,"First Inspector"))
- return firstInspectorPanel;
-
- if (!strcmp(theTitle,"Second Inspector"))
- return secondInspectorPanel;
-
- if (!strcmp(theTitle,"Third Inspector"))
- return thirdInspectorPanel;
-
- if (!strcmp(theTitle,"Fourth Inspector"))
- return fourthInspectorPanel;
- }
-
- /* the button title has no related inspector, this should never happen. */
- return (id)NULL;
- }
-
- /* HINT:: those panels should all be nibs so they have controllers
- and the above code should load the nib section if it
- already isn't loaded. It should load here because you only
- want to take up memory when it is demanded. */
-
- - free
- {
- return [super free];
- }
- @end
-