/** NSNibBindingConnector Copyright (C) 2007 Free Software Foundation, Inc. Author: Gregory John Casamento Date: 2007 Author: Fred Kiefer Date: Nov 2007 This file is part of the GNUstep GUI Library. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; see the file COPYING.LIB. If not, see or write to the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ #import #import #import #import @implementation NSNibBindingConnector - (id) init { if((self = [super init]) != nil) { _binding = @""; _keyPath = @""; _options = RETAIN([NSMutableDictionary dictionary]); } return self; } - (void) dealloc { RELEASE(_binding); RELEASE(_keyPath); RELEASE(_options); [super dealloc]; } - (NSString *) binding { return _binding; } - (NSString *) keyPath { return _keyPath; } - (NSDictionary *) options { return _options; } - (void) setBinding: (NSString *)binding { ASSIGN(_binding, binding); } - (void) setKeyPath: (NSString *)keyPath { ASSIGN(_keyPath, keyPath); } - (void) setOptions: (NSDictionary *)options { ASSIGN(_options, options); } - (void) replaceObject: (id)anObject withObject: (id)anotherObject { if (_binding == anObject) { ASSIGN(_binding, anotherObject); } if (_keyPath == anObject) { ASSIGN(_keyPath, anotherObject); } if (_options == anObject) { ASSIGN(_options, anotherObject); } [super replaceObject: anObject withObject: anotherObject]; } - (void) establishConnection { [_src bind: _binding toObject: _dst withKeyPath: _keyPath options: _options]; } - (void) encodeWithCoder: (NSCoder*)aCoder { if ([aCoder allowsKeyedCoding]) { if (_binding != nil) { [aCoder encodeObject: _binding forKey: @"NSBinding"]; } if (_keyPath != nil) { [aCoder encodeObject: _keyPath forKey: @"NSKeyPath"]; } if (_options != nil) { [aCoder encodeObject: _options forKey: @"NSOptions"]; } } else { [aCoder encodeObject: _binding]; [aCoder encodeObject: _keyPath]; [aCoder encodeObject: _options]; } } - (id) initWithCoder: (NSCoder*)aDecoder { if (!(self = [super initWithCoder: aDecoder])) { return nil; } if ([aDecoder allowsKeyedCoding]) { if ([aDecoder containsValueForKey: @"NSNibBindingConnectorVersion"]) { int version = [aDecoder decodeIntForKey: @"NSNibBindingConnectorVersion"]; if (version != 2) { NSLog(@"Unexpected NSNibBindingConnectorVersion %d", version); RELEASE(self); return nil; } } if ([aDecoder containsValueForKey: @"NSBinding"]) { ASSIGN(_binding, [aDecoder decodeObjectForKey: @"NSBinding"]); } if ([aDecoder containsValueForKey: @"NSKeyPath"]) { ASSIGN(_keyPath, [aDecoder decodeObjectForKey: @"NSKeyPath"]); } if ([aDecoder containsValueForKey: @"NSOptions"]) { ASSIGN(_options, [aDecoder decodeObjectForKey: @"NSOptions"]); } } else { ASSIGN(_binding,[aDecoder decodeObject]); ASSIGN(_keyPath,[aDecoder decodeObject]); ASSIGN(_options,[aDecoder decodeObject]); } return self; } - (NSString *) description { return [NSString stringWithFormat: @"<%@ binding=%@ keypath=%@ options=%@>", [super description], [self binding], [self keyPath], [self options]]; } @end