Retired Document
Important: This sample code may not represent best practices for current development. The project may use deprecated symbols and illustrate technologies and techniques that are no longer recommended.
NameAndAddress.m
/* |
File: NameAndAddress.m |
Contains: The private implementation for the NameAndAddress class. |
NameAndAddress is a cover for the functionality of the the NSHost class. |
NameAndAddress acts as a controller that allows hostname or IP address lookups. |
In this interface, the IPAddressField is used by the hostNameButton, |
and the hostnameField is used by the IPAddressButton. The interface |
disables a button if its corresponding field is empty. |
Written by: Guy @Werk |
Created: June 1997 |
Copyright: (c)1997 by Apple Computer, Inc., all rights reserved. |
Change History (most recent first): |
June 2000 - Updated to Project Builder on DP4 |
March 1998 - HI changes - DG |
April 1997 -- Created for the initial Rhapsody training. |
You may incorporate this sample code into your applications without |
restriction, though the sample code has been provided "AS IS" and the |
responsibility for its operation is 100% yours. However, what you are |
not permitted to do is to redistribute the source as "DSC Sample Code" |
after having made changes. If you're going to re-distribute the source, |
we require that you make it clear in the source that the code was |
descended from Apple Sample Code, but that you've made changes. |
*/ |
#import "NameAndAddress.h" |
@implementation NameAndAddress |
// D E L E G A T A T I O N A N D N O T I F I C A T I O N |
// NSApplication notification method |
// gets the host name and IP address for the local host |
// places the window onscreen |
- (void)applicationDidFinishLaunching:(NSNotification *)notification |
{ |
NSHost *host; |
host = [NSHost currentHost]; |
if (host) { |
[hostNameField setStringValue:[host name]]; |
[self getIPAddress:nil]; |
} |
[[hostNameField window] makeKeyAndOrderFront:nil]; |
} |
// NSControl notification method |
// checks as each character is entered in the text field |
// if the result is an empty text field, disables the corresponding button |
- (void)controlTextDidChange:(NSNotification *)notification |
{ |
NSControl *textField; |
NSButton *button; |
// get the field that is sending the notification |
textField = [notification object]; |
// get the button that corresponds to the field |
button = (textField == IPAddressField) ? hostNameButton : IPAddressButton; |
// disable that button if the field is empty |
[[textField stringValue] isEqualToString:@""] ? [button setEnabled:NO] : [button setEnabled:YES]; |
} |
// A C T I O N S |
// gets a host name for the IP adress in the IPAddressField |
- (void)getHostName:(id)sender |
{ |
NSHost *host; |
NSString *IPAddress; |
// get the IP address |
IPAddress = [IPAddressField stringValue]; |
// get a host for the IP address |
host = [NSHost hostWithAddress:IPAddress]; |
// if there is no host for that IP address, |
// empty the host name and disable the corresponding button |
if (!host) { |
[hostNameField setStringValue:@""]; |
[IPAddressButton setEnabled:NO]; |
NSBeep(); |
return; |
} |
// get and display the host name |
[hostNameField setStringValue:[host name]]; |
// enable the corresponding button |
[IPAddressButton setEnabled:YES]; |
} |
// get an IP address for the host name in the hostNameField |
- (void)getIPAddress:(id)sender |
{ |
NSHost *host; |
NSString *hostName; |
// get the host name |
hostName = [hostNameField stringValue]; |
// get the host for the host name |
host = [NSHost hostWithName:hostName]; |
// if there is no host for that host name, |
// empty the IP address and disable the corresponding button |
if (!host) { |
[IPAddressField setStringValue:@""]; |
[hostNameButton setEnabled:NO]; |
NSBeep(); |
return; |
} |
// get and display the IP address |
[IPAddressField setStringValue:[host address]]; |
// enable the corresponding button |
[hostNameButton setEnabled:YES]; |
} |
@end |
Copyright © 2003 Apple Computer, Inc. All Rights Reserved. Terms of Use | Privacy Policy | Updated: 2003-01-14