This is DomainAndRange.m in view mode; [Download] [Up]
// DomainAndRange.m // By Charles G. Fleming, Halchin and Fleming. // You may freely copy, distribute and reuse this code. // Halchin and Fleming, and the author disclaim any warranty of any kind, // expressed or implied, as to its fitness for any particular use. #import "DomainAndRange.h" #import <appkit/TextField.h> #import <appkit/Application.h> #import <appkit/Button.h> #import "MathGraph.h" #import <appkit/Window.h> @implementation DomainAndRange // Initialize the instance variables used in this window. - initContent:(const NXRect *)contentRect style:(int)aStyle backing:(int)bufferingType buttonMask:(int)mask defer:(BOOL)flag { [super initContent:contentRect style:aStyle backing:bufferingType buttonMask:mask defer:flag]; domainLow = 0; domainUp = 10; rangeLow = -5; rangeUp = 5; return self; } // Disable the field give it a gray background. - setRangeLower:anObject { rangeLower = anObject; [rangeLower setEnabled:NO]; [rangeLower setBackgroundGray:0.6]; return self; } // Disable the field give it a gray background. - setRangeUpper:anObject { rangeUpper = anObject; [rangeUpper setEnabled:NO]; [rangeUpper setBackgroundGray:0.6]; return self; } // Get the values from the fields and store them in the instance variables. - setValues:sender { domainLow = [domainLower doubleValue]; domainUp = [domainUpper doubleValue]; rangeLow = [rangeLower doubleValue]; rangeUp = [rangeUpper doubleValue]; [mathGraph clearMathGraph]; [NXApp stopModal]; [parametersWindow makeKeyAndOrderFront:self]; [self close]; return self; } // Bring this window up and start a modal loop. - activate:sender { [self makeKeyAndOrderFront:sender]; if([defaults state]) { [rangeLower setEnabled:NO]; [rangeUpper setEnabled:NO]; } [domainLower selectText:self]; [NXApp runModalFor:self]; return self; } // If the default button is clicked, disable the range fields and set // their background to a light gray, otherwise enable the range fields and // set their background to white. -default:sender { if([sender state]) { [rangeLower setEnabled:NO]; [rangeUpper setEnabled:NO]; [rangeLower setBackgroundGray:0.6]; [rangeUpper setBackgroundGray:0.6]; } else { [rangeLower setEnabled:YES]; [rangeUpper setEnabled:YES]; [rangeLower setBackgroundGray:1.0]; [rangeUpper setBackgroundGray:1.0]; } return self; } // If the defaults button has been clicked, send a performClick to // the okButton, otherwise move to the next text field. - performClick:sender { if([defaults state]) [okButton performClick:self]; else [rangeLower selectText:self]; return sender; } - defaultButton:sender { return defaults; } -(double)domainLower { return domainLow; } -(double)domainUpper { return domainUp; } -(double)rangeLower { return rangeLow; } -(double)rangeUpper { return rangeUp; } @end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.