summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/kim/agent/mac/Identities.h60
-rw-r--r--src/kim/agent/mac/Identities.m904
-rw-r--r--src/kim/agent/mac/KIMUtilities.h16
-rw-r--r--src/kim/agent/mac/KIMUtilities.m29
-rw-r--r--src/kim/agent/mac/KerberosFormatters.h21
-rw-r--r--src/kim/agent/mac/KerberosFormatters.m170
-rw-r--r--src/kim/agent/mac/SelectIdentityController.h29
-rw-r--r--src/kim/agent/mac/SelectIdentityController.m195
-rw-r--r--src/kim/agent/mac/resources/English.lproj/SelectIdentity.xib2288
-rw-r--r--src/kim/agent/mac/resources/KerberosFormatters.stringsbin0 -> 3446 bytes
10 files changed, 3110 insertions, 602 deletions
diff --git a/src/kim/agent/mac/Identities.h b/src/kim/agent/mac/Identities.h
index 82819f8ee..cdb3167ac 100644
--- a/src/kim/agent/mac/Identities.h
+++ b/src/kim/agent/mac/Identities.h
@@ -23,24 +23,51 @@
*/
#import <Cocoa/Cocoa.h>
+#import <Kerberos/kim.h>
+#import "KIMUtilities.h"
@interface Identity : NSObject {
kim_identity kimIdentity;
- int state;
- cc_time_t expirationTime;
- int favorite;
-
+ kim_options kimOptions;
+ kim_credential_state state;
+ cc_time_t expiration_time;
+ BOOL favorite;
}
-@property(readonly) NSString *principal;
-@property(readonly) NSString *timeRemaining;
-@property int state;
-@property cc_time_t expirationTime;
-@property(readonly) int favorite;
-- (id) initWithIdentity: (kim_identity) identity;
-- (id) initWithFavoriteIdentity: (kim_identity) identity;
+@property kim_identity kimIdentity;
+@property kim_options kimOptions;
+@property kim_credential_state state;
+@property BOOL favorite;
+@property cc_time_t expiration_time;
+
+// derived properties
+@property(readonly) NSString *principalString;
+@property(readonly) NSString *componentsString;
+@property(readonly) NSString *realmString;
+@property(readonly) NSDate *expirationDate;
+@property(readonly) NSString *expirationString;
+@property(readonly) NSString *validLifetimeString;
+@property(readonly) NSString *renewableLifetimeString;
+@property(readonly) BOOL hasCCache;
+@property(readwrite) BOOL isRenewable;
+@property(readwrite) BOOL isForwardable;
+@property(readwrite) BOOL isAddressless;
+@property(readwrite) BOOL isProxiable;
+@property(readwrite) NSUInteger validLifetime;
+@property(readwrite) NSUInteger renewableLifetime;
+
+- (id) initWithIdentity: (kim_identity) identity options: (kim_options) options;
+- (id) initWithFavoriteIdentity: (kim_identity) identity options: (kim_options) options;
- (BOOL) isEqualToKIMIdentity: (kim_identity) identity;
+- (BOOL) isEqual: (Identity *)otherIdentity;
+
+- (kim_error) setPrincipalComponents: (NSString *) componentsString realm: (NSString *) realmString;
+
+- (void) resetOptions;
+- (void) toggleFavorite;
+- (BOOL) addToFavorites;
+- (BOOL) removeFromFavorites;
@end
@@ -49,10 +76,17 @@
NSArray *favoriteIdentities;
NSArray *identities;
NSConnection *threadConnection;
-
}
-@property(readonly, copy) NSArray *identities;
+@property(readonly, retain) NSArray *identities;
+@property(readonly) NSUInteger minimumValidLifetime;
+@property(readonly) NSUInteger maximumValidLifetime;
+@property(readonly) NSUInteger minimumRenewableLifetime;
+@property(readonly) NSUInteger maximumRenewableLifetime;
+
+- (void) reload;
- (int) update;
+- (kim_error) addIdentity: (Identity *) anIdentity;
+- (void) synchronizePreferences;
@end
diff --git a/src/kim/agent/mac/Identities.m b/src/kim/agent/mac/Identities.m
index 211d980ee..e7cd31ae9 100644
--- a/src/kim/agent/mac/Identities.m
+++ b/src/kim/agent/mac/Identities.m
@@ -23,23 +23,89 @@
*/
#import "Identities.h"
-#import <Kerberos/kim.h>
+#import <Kerberos/Kerberos.h>
+
+#define VALID_LIFETIME_INCREMENT (5 * 60)
+#define RENEWABLE_LIFETIME_INCREMENT (15 * 60)
+
+@interface Identity ()
+
+- (NSString *)stringForLifetime:(NSUInteger)lifetime;
+
+@end
+
@implementation Identity
@synthesize state;
-@synthesize expirationTime;
+@synthesize expiration_time;
@synthesize favorite;
+#pragma mark Initialization & Comparison
+
// ---------------------------------------------------------------------------
-- (id) initWithIdentity: (kim_identity) identity
++ (NSSet *)keyPathsForValuesAffectingValueForKey:(NSString *)key
+{
+ NSMutableSet *result = [[super keyPathsForValuesAffectingValueForKey:key] mutableCopy];
+ NSSet *otherKeys = nil;
+
+ if ([key isEqualToString:@"principalString"]) {
+ otherKeys = [NSSet setWithObjects:@"kimIdentity", nil];
+ }
+ else if ([key isEqualToString:@"expirationDate"]) {
+ otherKeys = [NSSet setWithObjects:@"kimOptions", @"state", @"expirationTime", nil];
+ }
+ else if ([key isEqualToString:@"expirationString"]) {
+ otherKeys = [NSSet setWithObjects:@"kimOptions", @"state", @"expirationTime", nil];
+ }
+ else if ([key isEqualToString:@"isProxiable"]) {
+ otherKeys = [NSSet setWithObjects:@"kimOptions", nil];
+ }
+ else if ([key isEqualToString:@"isForwardable"]) {
+ otherKeys = [NSSet setWithObjects:@"kimOptions", nil];
+ }
+ else if ([key isEqualToString:@"isAddressless"]) {
+ otherKeys = [NSSet setWithObjects:@"kimOptions", nil];
+ }
+ else if ([key isEqualToString:@"isRenewable"]) {
+ otherKeys = [NSSet setWithObjects:@"kimOptions", nil];
+ }
+ else if ([key isEqualToString:@"validLifetime"]) {
+ otherKeys = [NSSet setWithObjects:@"kimOptions", nil];
+ }
+ else if ([key isEqualToString:@"renewableLifetime"]) {
+ otherKeys = [NSSet setWithObjects:@"kimOptions", nil];
+ }
+ else if ([key isEqualToString:@"validLifetimeString"]) {
+ otherKeys = [NSSet setWithObjects:@"kimOptions", @"validLifetime", nil];
+ }
+ else if ([key isEqualToString:@"renewableLifetimeString"]) {
+ otherKeys = [NSSet setWithObjects:@"kimOptions", @"renewableLifetime", nil];
+ }
+
+ [result unionSet:otherKeys];
+
+ return [result autorelease];
+}
+
+// ---------------------------------------------------------------------------
+
+- (id) init
+{
+ return [self initWithIdentity: NULL options: NULL];
+}
+
+// ---------------------------------------------------------------------------
+
+- (id) initWithIdentity: (kim_identity) identity options: (kim_options) options
{
if ((self = [super init])) {
- kimIdentity = identity;
- state = kim_credentials_state_not_yet_valid;
- expirationTime = 0;
- favorite = FALSE;
+ self.kimIdentity = identity;
+ self.kimOptions = options;
+ self.state = kim_credentials_state_not_yet_valid;
+ self.expiration_time = 0;
+ self.favorite = FALSE;
}
return self;
@@ -47,10 +113,10 @@
// ---------------------------------------------------------------------------
-- (id) initWithFavoriteIdentity: (kim_identity) identity
+- (id) initWithFavoriteIdentity: (kim_identity) identity options: (kim_options) options
{
- if ((self = [self initWithIdentity: identity])) {
- favorite = TRUE;
+ if ((self = [self initWithIdentity: identity options: options])) {
+ self.favorite = TRUE;
}
return self;
@@ -70,39 +136,451 @@
// ---------------------------------------------------------------------------
-- (NSString *)principal
+- (BOOL) isEqual: (Identity *)otherIdentity
+{
+ return ([self isEqualToKIMIdentity:otherIdentity.kimIdentity]);
+}
+
+// ---------------------------------------------------------------------------
+
+- (NSUInteger)hash
+{
+ return [self.principalString hash];
+}
+
+// ---------------------------------------------------------------------------
+
+- (NSComparisonResult) compare: (Identity *)otherIdentity
+{
+ return ([self.principalString compare:otherIdentity.principalString]);
+}
+
+#pragma mark Actions
+
+// ---------------------------------------------------------------------------
+
+- (void) resetOptions
+{
+ // property setter converts NULL into actual kim_options with default settings
+ self.kimOptions = NULL;
+}
+
+// ---------------------------------------------------------------------------
+
+- (void) toggleFavorite
+{
+ if (self.favorite) {
+ [self removeFromFavorites];
+ } else {
+ [self addToFavorites];
+ }
+}
+
+// ---------------------------------------------------------------------------
+
+- (BOOL) addToFavorites
+{
+ kim_error err = KIM_NO_ERROR;
+ kim_preferences preferences = NULL;
+ kim_options options = NULL;
+ kim_string error_string = NULL;
+ err = kim_preferences_create(&preferences);
+
+ if (!err) {
+ err = kim_options_create(&options);
+ }
+
+ if (!err) {
+ err = kim_preferences_add_favorite_identity(preferences, self.kimIdentity, options);
+ }
+ if (!err) {
+ err = kim_preferences_synchronize(preferences);
+ }
+ if (options) {
+ kim_options_free(&options);
+ }
+ kim_preferences_free(&preferences);
+ if (!err) {
+ self.favorite = true;
+ } else {
+ kim_string_create_for_last_error(&error_string, err);
+ NSLog(@"%s failed with %s", _cmd, error_string);
+ }
+ return (err != KIM_NO_ERROR);
+}
+
+// ---------------------------------------------------------------------------
+
+- (BOOL) removeFromFavorites
+{
+ kim_error err = KIM_NO_ERROR;
+ kim_preferences preferences = NULL;
+ kim_options options = NULL;
+ kim_string error_string = NULL;
+ err = kim_preferences_create(&preferences);
+
+ if (!err) {
+ err = kim_options_create(&options);
+ }
+
+ if (!err) {
+ err = kim_preferences_remove_favorite_identity(preferences, self.kimIdentity);
+ }
+ if (!err) {
+ err = kim_preferences_synchronize(preferences);
+ }
+ if (options) {
+ kim_options_free(&options);
+ }
+ kim_preferences_free(&preferences);
+ if (!err) {
+ self.favorite = false;
+ } else {
+ kim_string_create_for_last_error(&error_string, err);
+ NSLog(@"%s failed with %s", _cmd, error_string);
+ }
+ return (err != KIM_NO_ERROR);
+}
+
+#pragma mark Accessors
+
+// ---------------------------------------------------------------------------
+
+- (NSDate *) expirationDate
+{
+ return [NSDate dateWithTimeIntervalSince1970:expiration_time];
+}
+
+// ---------------------------------------------------------------------------
+
+- (BOOL) hasCCache
+{
+ kim_error err = KIM_NO_ERROR;
+ kim_ccache ccache = NULL;
+
+ err = kim_ccache_create_from_client_identity(&ccache, self.kimIdentity);
+
+ if (!err && ccache) {
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+
+// ---------------------------------------------------------------------------
+
+- (kim_identity) kimIdentity
+{
+ return kimIdentity;
+}
+
+// ---------------------------------------------------------------------------
+
+- (void) setKimIdentity:(kim_identity)newKimIdentity
+{
+ kim_error err = KIM_NO_ERROR;
+ kim_string string = NULL;
+
+ if (!kimIdentity || kimIdentity != newKimIdentity) {
+ [self willChangeValueForKey:@"kimOptions"];
+
+ kim_identity_free(&kimIdentity);
+ kimIdentity = NULL;
+ if (newKimIdentity != NULL) {
+ kim_identity_get_display_string(newKimIdentity, &string);
+ err = kim_identity_copy(&kimIdentity, newKimIdentity);
+ }
+
+ [self didChangeValueForKey:@"kimOptions"];
+ }
+
+ if (err) {
+ NSLog(@"%s got error %s", _cmd, error_message(err));
+ }
+}
+
+// ---------------------------------------------------------------------------
+
+- (kim_options) kimOptions
+{
+ return kimOptions;
+}
+
+// ---------------------------------------------------------------------------
+
+- (void) setKimOptions:(kim_options)newKimOptions
+{
+ // Passing NULL resets to default options
+ kim_error err = KIM_NO_ERROR;
+
+ if (!kimOptions || kimOptions != newKimOptions) {
+ [self willChangeValueForKey:@"kimOptions"];
+
+ kim_options_free(&kimOptions);
+ kimOptions = NULL;
+
+ if (newKimOptions == NULL) {
+ err = kim_options_create(&kimOptions);
+ } else {
+ err = kim_options_copy(&kimOptions, newKimOptions);
+ }
+
+ [self didChangeValueForKey:@"kimOptions"];
+ }
+}
+
+// ---------------------------------------------------------------------------
+
+- (BOOL) isRenewable
+{
+ kim_error err = KIM_NO_ERROR;
+ kim_boolean result = FALSE;
+ kim_options options = self.kimOptions;
+
+ err = kim_options_get_renewable(options, &result);
+
+ return (result != 0);
+}
+
+// ---------------------------------------------------------------------------
+
+- (void) setIsRenewable: (BOOL) value
+{
+ kim_error err = KIM_NO_ERROR;
+ kim_options options = self.kimOptions;
+
+ err = kim_options_set_renewable(options, value);
+}
+
+// ---------------------------------------------------------------------------
+
+- (BOOL) isForwardable
+{
+ kim_error err = KIM_NO_ERROR;
+ kim_boolean result = FALSE;
+ kim_options options = self.kimOptions;
+
+ err = kim_options_get_forwardable(options, &result);
+
+ return (result != 0);
+}
+
+// ---------------------------------------------------------------------------
+
+- (void) setIsForwardable: (BOOL) value
+{
+ kim_error err = KIM_NO_ERROR;
+ kim_options options = self.kimOptions;
+
+ err = kim_options_set_forwardable(options, value);
+}
+
+// ---------------------------------------------------------------------------
+
+- (BOOL) isAddressless
+{
+ kim_error err = KIM_NO_ERROR;
+ kim_boolean result = FALSE;
+ kim_options options = self.kimOptions;
+
+ err = kim_options_get_addressless(options, &result);
+
+ return (result != 0);
+}
+
+// ---------------------------------------------------------------------------
+
+- (void) setIsAddressless: (BOOL) value
+{
+ kim_error err = KIM_NO_ERROR;
+ kim_options options = self.kimOptions;
+
+ err = kim_options_set_addressless(options, value);
+}
+
+// ---------------------------------------------------------------------------
+
+- (BOOL) isProxiable
+{
+ kim_error err = KIM_NO_ERROR;
+ kim_boolean result = FALSE;
+ kim_options options = self.kimOptions;
+
+ err = kim_options_get_proxiable(options, &result);
+
+ return (result != 0);
+}
+
+// ---------------------------------------------------------------------------
+
+- (void) setIsProxiable: (BOOL) value
+{
+ kim_error err = KIM_NO_ERROR;
+ kim_options options = self.kimOptions;
+
+ err = kim_options_set_proxiable(options, value);
+}
+
+// ---------------------------------------------------------------------------
+
+- (NSUInteger) validLifetime
+{
+ kim_error err = KIM_NO_ERROR;
+ kim_lifetime value = 0;
+ kim_options options = self.kimOptions;
+
+ err = kim_options_get_lifetime(options, &value);
+
+ return (NSUInteger) value;
+}
+
+// ---------------------------------------------------------------------------
+
+- (void) setValidLifetime: (NSUInteger) newLifetime
+{
+ kim_error err = KIM_NO_ERROR;
+ kim_options options = self.kimOptions;
+
+ // round to nearest five minutes
+ newLifetime = (newLifetime / VALID_LIFETIME_INCREMENT) * VALID_LIFETIME_INCREMENT;
+
+ err = kim_options_set_lifetime(options, (kim_lifetime) newLifetime);
+}
+
+// ---------------------------------------------------------------------------
+
+- (NSUInteger) renewableLifetime
+{
+ kim_error err = KIM_NO_ERROR;
+ kim_lifetime value = 0;
+ kim_options options = self.kimOptions;
+
+ err = kim_options_get_renewal_lifetime(options, &value);
+
+ return (NSUInteger) value;
+}
+
+// ---------------------------------------------------------------------------
+
+- (void) setRenewableLifetime: (NSUInteger) newLifetime
+{
+ kim_error err = KIM_NO_ERROR;
+ kim_options options = self.kimOptions;
+
+ // round to nearest five minutes
+ newLifetime = (newLifetime / RENEWABLE_LIFETIME_INCREMENT) * RENEWABLE_LIFETIME_INCREMENT;
+
+ err = kim_options_set_renewal_lifetime(options, (kim_lifetime) newLifetime);
+}
+
+#pragma mark String representations
+
+// ---------------------------------------------------------------------------
+
+- (NSString *) principalString
{
kim_error err = KIM_NO_ERROR;
kim_string display_string = NULL;
NSString *result = nil;
- err = kim_identity_get_display_string(kimIdentity, &display_string);
+ if (self.kimIdentity) {
+ err = kim_identity_get_display_string(self.kimIdentity, &display_string);
+ }
- if (!err) {
- result = [NSString stringWithCString:display_string encoding:NSUTF8StringEncoding];
+ if (!err && display_string) {
+ result = [NSString stringWithUTF8String:display_string];
}
else {
result = @"-";
}
+
+ if (err) {
+ NSLog(@"%s got error %s", _cmd, error_message(err));
+ }
+
+ kim_string_free(&display_string);
+
return result;
}
// ---------------------------------------------------------------------------
-- (NSDate *)expirationDate
+- (NSString *) componentsString
{
- return [NSDate dateWithTimeIntervalSince1970:expirationTime];
+ kim_error err = KIM_NO_ERROR;
+ kim_string display_string = NULL;
+ NSString *result = @"";
+
+ err = kim_identity_get_display_string(kimIdentity, &display_string);
+ // err = kim_identity_get_components(kimIdentity, &display_string);
+
+ if (!err) {
+ NSRange atRange;
+
+ result = [NSString stringWithUTF8String:display_string];
+ atRange = [result rangeOfString:@"@" options:NSBackwardsSearch];
+ result = [result substringToIndex:atRange.location];
+ }
+
+ kim_string_free(&display_string);
+
+ return result;
}
// ---------------------------------------------------------------------------
-- (NSString *)timeRemaining
+- (NSString *) realmString
+{
+ kim_error err = KIM_NO_ERROR;
+ kim_string display_string = NULL;
+ NSString *result = @"";
+
+ err = kim_identity_get_realm(kimIdentity, &display_string);
+
+ if (!err) {
+ result = [NSString stringWithUTF8String:display_string];
+ }
+
+ kim_string_free(&display_string);
+
+ return result;
+}
+
+// ---------------------------------------------------------------------------
+
+- (kim_error) setPrincipalComponents: (NSString *) componentsString realm: (NSString *) realmString
+{
+ kim_error err = KIM_NO_ERROR;
+ kim_identity new_identity = NULL;
+ char *principal_string = NULL;
+
+ asprintf(&principal_string, "%s@%s",
+ [componentsString UTF8String], [realmString UTF8String]);
+
+ if (principal_string) {
+ err = kim_identity_create_from_string(&new_identity, principal_string);
+ }
+
+ self.kimIdentity = new_identity;
+
+ kim_identity_free(&new_identity);
+ if (principal_string) {
+ free(principal_string);
+ }
+
+ return err;
+}
+
+// ---------------------------------------------------------------------------
+
+- (NSString *) expirationString
{
NSString *result = nil;
- if (expirationTime > 0) {
+ if (expiration_time > 0) {
time_t now = time(NULL);
- time_t lifetime = expirationTime - now;
+ time_t lifetime = expiration_time - now;
time_t seconds = (lifetime % 60);
time_t minutes = (lifetime / 60 % 60);
time_t hours = (lifetime / 3600 % 24);
@@ -114,38 +592,77 @@
result = [NSString stringWithFormat:@"%02ld:%02ld", hours, minutes];
} else {
- result = @"Expired";
+ result = @"--:--";
}
-
- NSLog(@"timeRemaining = %@ (expirationTime == %ld)", result, expirationTime);
return result;
}
-- (NSString *)description
+// ---------------------------------------------------------------------------
+
+- (NSString *) validLifetimeString
+{
+ return [self stringForLifetime:self.validLifetime];
+}
+
+// ---------------------------------------------------------------------------
+
+- (NSString *) renewableLifetimeString
{
- NSString *result = nil;
- kim_error err = KIM_NO_ERROR;
- kim_string display_name = NULL;
+ return [self stringForLifetime:self.renewableLifetime];
+}
+
+// ---------------------------------------------------------------------------
- err = kim_identity_get_display_string(kimIdentity, &display_name);
+- (NSString *)stringForLifetime:(NSUInteger)lifetime
+{
+ NSMutableArray *parts = nil;
+ NSUInteger days, hours, minutes, seconds;
- if (!err) {
- result = [NSString stringWithCString:display_name encoding:NSUTF8StringEncoding];
+ days = (lifetime / 86400);
+ hours = (lifetime / (60 * 60) % 24);
+ minutes = (lifetime / 60 % 60);
+ seconds = (lifetime % 60);
+
+ if (seconds > 0) { seconds = 0; minutes++; }
+ if (minutes > 59) { minutes = 0; hours++; }
+ if (hours > 23) { hours = 0; days++; }
+
+ parts = [NSMutableArray arrayWithCapacity:3];
+ if (days > 0) {
+ [parts addObject:[NSString stringWithFormat:@"%d days", days]];
}
- return result;
+ if (hours > 0) {
+ [parts addObject:[NSString stringWithFormat:@"%d hours", hours]];
+ }
+ if (minutes > 0) {
+ [parts addObject:[NSString stringWithFormat:@"%d minutes", minutes]];
+ }
+ if ([parts count] == 0) {
+ [parts addObject:@"0 lifetime"];
+ }
+ return [parts componentsJoinedByString:@", "];
+}
+
+// ---------------------------------------------------------------------------
+
+- (NSString *) description
+{
+ return [NSString stringWithFormat:@"%@ (%@) %@", self.principalString, self.expirationString, super.description];
}
@end
@interface Identities ()
-@property(readwrite, copy) NSArray *identities;
+@property(readwrite, retain) NSArray *favoriteIdentities;
+@property(readwrite, retain) NSArray *identities;
@end
@implementation Identities
+@synthesize favoriteIdentities;
@synthesize identities;
// ---------------------------------------------------------------------------
@@ -194,63 +711,10 @@
{
if ((self = [super init])) {
int err = 0;
- NSMutableArray *newFavoriteIdentities = NULL;
-
+
threadConnection = NULL;
- identities = NULL;
- favoriteIdentities = NULL;
-
- if (!err) {
- newFavoriteIdentities = [[[NSMutableArray alloc] init] autorelease];
- if (!newFavoriteIdentities) { err = ENOMEM; }
- }
-
- if (!err) {
- kim_preferences kimPreferences = NULL;
- kim_options kimOptions = NULL;
- kim_count i;
- kim_count count = 0;
-
- err = kim_preferences_create(&kimPreferences);
-
- if (!err) {
- err = kim_preferences_get_number_of_favorite_identities(kimPreferences,
- &count);
- }
-
- for (i = 0; !err && i < count; i++) {
- kim_identity kimIdentity = NULL;
- Identity *identity = NULL;
-
- err = kim_preferences_get_favorite_identity_at_index(kimPreferences,
- i,
- &kimIdentity,
- &kimOptions);
-
- if (!err) {
- identity = [[[Identity alloc] initWithFavoriteIdentity: kimIdentity] autorelease];
- if (!identity) { err = ENOMEM; }
- }
-
- if (!err) {
- kimIdentity = NULL; /* take ownership */
- [newFavoriteIdentities addObject: identity];
- }
-
- kim_identity_free (&kimIdentity);
- }
- kim_preferences_free(&kimPreferences);
- }
-
- if (!err) {
- favoriteIdentities = [[NSArray alloc] initWithArray: newFavoriteIdentities];
- if (!favoriteIdentities) { err = ENOMEM; }
- }
-
- if (!err) {
- err = [self update];
- }
+ [self reload];
if (!err) {
NSPort *port1 = [NSPort port];
@@ -294,14 +758,89 @@
// ---------------------------------------------------------------------------
+- (void) reload
+{
+ kim_error err = KIM_NO_ERROR;
+
+ NSMutableArray *newFavoriteIdentities = NULL;
+
+ favoriteIdentities = NULL;
+
+ if (!err) {
+ newFavoriteIdentities = [[NSMutableArray alloc] init];
+ if (!newFavoriteIdentities) { err = ENOMEM; }
+ }
+
+ if (!err) {
+ kim_preferences preferences = NULL;
+ kim_options kimOptions = NULL;
+ kim_count i;
+ kim_count count = 0;
+
+ err = kim_preferences_create(&preferences);
+
+ if (!err) {
+ err = kim_preferences_get_number_of_favorite_identities(preferences,
+ &count);
+ }
+
+ for (i = 0; !err && i < count; i++) {
+ kim_identity kimIdentity = NULL;
+ Identity *identity = NULL;
+
+ err = kim_preferences_get_favorite_identity_at_index(preferences,
+ i,
+ &kimIdentity,
+ &kimOptions);
+
+ if (!err) {
+ identity = [[Identity alloc] initWithFavoriteIdentity: kimIdentity options: kimOptions];
+ if (!identity) { err = ENOMEM; }
+ }
+
+ if (!err) {
+ kimIdentity = NULL; /* take ownership */
+ [newFavoriteIdentities addObject: identity];
+ }
+
+ if (identity) {
+ [identity release];
+ identity = nil;
+ }
+
+ kim_identity_free (&kimIdentity);
+ }
+
+ kim_preferences_free(&preferences);
+ }
+
+ if (!err) {
+ self.favoriteIdentities = newFavoriteIdentities;
+ if (!favoriteIdentities) { err = ENOMEM; }
+ }
+
+ if (newFavoriteIdentities) {
+ [newFavoriteIdentities release];
+ newFavoriteIdentities = nil;
+ }
+
+ if (!err) {
+ [identities release];
+ identities = nil;
+ err = [self update];
+ }
+}
+
+// ---------------------------------------------------------------------------
+
- (int) update
{
kim_error err = KIM_NO_ERROR;
- NSMutableArray *newIdentities = NULL;
+ NSMutableSet *newIdentities = NULL;
kim_ccache_iterator iterator = NULL;
if (!err) {
- newIdentities = [NSMutableArray arrayWithArray: favoriteIdentities];
+ newIdentities = [NSMutableSet set];
if (!newIdentities) { err = ENOMEM; }
}
@@ -309,11 +848,15 @@
err = kim_ccache_iterator_create (&iterator);
}
+ // Build list of identities with existing ccaches
+
while (!err) {
kim_ccache ccache = NULL;
kim_identity kimIdentity = NULL;
+ kim_options kimOptions = NULL;
kim_credential_state state = kim_credentials_state_valid;
kim_time expirationTime = 0;
+ kim_lifetime lifetime = 0;
err = kim_ccache_iterator_next (iterator, &ccache);
if (!err && !ccache) { break; }
@@ -330,26 +873,29 @@
err = kim_ccache_get_expiration_time (ccache, &expirationTime);
}
+ if (!err) {
+ err = kim_ccache_get_options(ccache, &kimOptions);
+ }
+
if (!err) {
- Identity *identity = NULL;
-
- for (Identity *i in newIdentities) {
- if ([i isEqualToKIMIdentity: kimIdentity]) { identity = i; }
- }
-
- if (!identity) {
- identity = [[[Identity alloc] initWithIdentity: kimIdentity] autorelease];
- if (!identity) { err = ENOMEM; }
-
- if (!err) {
- kimIdentity = NULL; /* take ownership */
- [newIdentities addObject: identity];
- }
- }
+ err = kim_options_get_lifetime(kimOptions, &lifetime);
+ }
+
+ if (!err) {
+ Identity *identity = [[Identity alloc] initWithIdentity: kimIdentity options: kimOptions];
+ if (!identity) { err = ENOMEM; }
if (!err) {
+ kimIdentity = NULL; /* take ownership */
+ identity.kimOptions = kimOptions;
identity.state = state;
- identity.expirationTime = expirationTime;
+ identity.expiration_time = expirationTime;
+ [newIdentities addObject: identity];
+ }
+
+ if (identity) {
+ [identity release];
+ identity = nil;
}
}
@@ -358,25 +904,165 @@
err = KIM_NO_ERROR;
}
+ if (err) {
+ NSLog(@"%s got error %s", _cmd, error_message(err));
+ }
+
+ kim_options_free (&kimOptions);
kim_identity_free (&kimIdentity);
kim_ccache_free (&ccache);
}
-
+
+ kim_ccache_iterator_free (&iterator);
+
+ // Copy ccache state to favorites
+ for (Identity *identity in self.favoriteIdentities) {
+ Identity *matchingIdentity = [newIdentities member:identity];
+ if (matchingIdentity) {
+ identity.state = matchingIdentity.state;
+ identity.expiration_time = matchingIdentity.expiration_time;
+ [newIdentities removeObject:matchingIdentity];
+ } else {
+ identity.state = kim_credentials_state_expired;
+ identity.expiration_time = 0;
+ }
+ }
+
+ // Add unused favorites
+ [newIdentities unionSet:[NSSet setWithArray:self.favoriteIdentities]];
+
if (!err) {
/* Use @property setter to trigger KVO notifications */
- self.identities = newIdentities;
+ self.identities = [[newIdentities allObjects] sortedArrayUsingSelector:@selector(compare:)];
if (!identities) { err = ENOMEM; }
+ } else {
+ NSLog (@"Got error %s", error_message (err));
}
+ return err;
+}
+
+// ---------------------------------------------------------------------------
+
+- (kim_error) addIdentity: (Identity *) anIdentity
+{
+ kim_error err = KIM_NO_ERROR;
+ NSMutableArray *newIdentities = nil;
+
+ if (![self.identities containsObject:anIdentity]) {
+ newIdentities = [self.identities mutableCopy];
+ [newIdentities addObject:anIdentity];
+ self.identities = newIdentities;
+ [newIdentities release];
+ } else {
+ err = KIM_IDENTITY_ALREADY_IN_LIST_ERR;
+ }
- kim_ccache_iterator_free (&iterator);
+ return err;
+}
+
+// ---------------------------------------------------------------------------
+
+- (void) synchronizePreferences
+{
+ // Saves the kim_options for all identities in the list to disk, then rebuilds the Identities array from scratch
+ kim_error err = KIM_NO_ERROR;
+ kim_preferences prefs = NULL;
+
+ err = kim_preferences_create(&prefs);
+
+ if (!err) {
+ err = kim_preferences_remove_all_favorite_identities(prefs);
+ }
+
+ for (Identity *identity in self.identities) {
+ if (!err && identity.favorite == TRUE) {
+ err = kim_preferences_add_favorite_identity(prefs, identity.kimIdentity, identity.kimOptions);
+ }
+ }
+
+ if (!err) {
+ err = kim_preferences_synchronize(prefs);
+ }
+
+ kim_preferences_free(&prefs);
+
if (err) {
- NSLog (@"Got error %s", error_message (err));
+ NSLog(@"%s received error %s", _cmd, error_message(err));
+ }
+
+ if (!err) {
+ [self reload];
}
+}
+
+// ---------------------------------------------------------------------------
+
+- (NSUInteger)minimumValidLifetime
+{
+ kim_error err = KIM_NO_ERROR;
+ kim_preferences prefs = NULL;
+ kim_lifetime value = 0;
- return err;
+ err = kim_preferences_create(&prefs);
+
+ if (!err) {
+ kim_preferences_get_minimum_lifetime(prefs, &value);
+ }
+
+ return (NSUInteger) value;
+}
+
+// ---------------------------------------------------------------------------
+
+- (NSUInteger)maximumValidLifetime
+{
+ kim_error err = KIM_NO_ERROR;
+ kim_preferences prefs = NULL;
+ kim_lifetime value = 0;
+
+ err = kim_preferences_create(&prefs);
+
+ if (!err) {
+ kim_preferences_get_maximum_lifetime(prefs, &value);
+ }
+
+ return (NSUInteger) value;
+}
+
+// ---------------------------------------------------------------------------
+
+- (NSUInteger)minimumRenewableLifetime
+{
+ kim_error err = KIM_NO_ERROR;
+ kim_preferences prefs = NULL;
+ kim_lifetime value = 0;
+
+ err = kim_preferences_create(&prefs);
+
+ if (!err) {
+ kim_preferences_get_minimum_renewal_lifetime(prefs, &value);
+ }
+
+ return (NSUInteger) value;
}
+// ---------------------------------------------------------------------------
+
+- (NSUInteger)maximumRenewableLifetime
+{
+ kim_error err = KIM_NO_ERROR;
+ kim_preferences prefs = NULL;
+ kim_lifetime value = 0;
+
+ err = kim_preferences_create(&prefs);
+
+ if (!err) {
+ kim_preferences_get_maximum_renewal_lifetime(prefs, &value);
+ }
+
+ return (NSUInteger) value;
+}
@end
diff --git a/src/kim/agent/mac/KIMUtilities.h b/src/kim/agent/mac/KIMUtilities.h
new file mode 100644
index 000000000..790d238e6
--- /dev/null
+++ b/src/kim/agent/mac/KIMUtilities.h
@@ -0,0 +1,16 @@
+//
+// KIMUtilities.h
+// Kerberos5
+//
+// Created by Justin Anderson on 9/28/08.
+// Copyright 2008 MIT. All rights reserved.
+//
+
+#import <Cocoa/Cocoa.h>
+#import <Kerberos/kim.h>
+
+@interface NSString (KIMUtilities)
+
++ (NSString *) stringForLastKIMError: (kim_error) in_err;
+
+@end
diff --git a/src/kim/agent/mac/KIMUtilities.m b/src/kim/agent/mac/KIMUtilities.m
new file mode 100644
index 000000000..f8c7b8508
--- /dev/null
+++ b/src/kim/agent/mac/KIMUtilities.m
@@ -0,0 +1,29 @@
+//
+// KIMUtilities.m
+// Kerberos5
+//
+// Created by Justin Anderson on 9/28/08.
+// Copyright 2008 MIT. All rights reserved.
+//
+
+#import "KIMUtilities.h"
+
+
+@implementation NSString (KIMUtilities)
+
++ (NSString *) stringForLastKIMError: (kim_error) in_err
+{
+ kim_error err = KIM_NO_ERROR;
+ kim_string string = NULL;
+ NSString *result = nil;
+
+ err = kim_string_create_for_last_error(&string, in_err);
+ if (!err) {
+ result = [NSString stringWithUTF8String:string];
+ }
+ kim_string_free(&string);
+
+ return result;
+}
+
+@end
diff --git a/src/kim/agent/mac/KerberosFormatters.h b/src/kim/agent/mac/KerberosFormatters.h
index 2d5336fce..104ea5f42 100644
--- a/src/kim/agent/mac/KerberosFormatters.h
+++ b/src/kim/agent/mac/KerberosFormatters.h
@@ -26,14 +26,27 @@
@interface KerberosTimeFormatter : NSFormatter {
-
+ BOOL displaySeconds;
+ BOOL displayShortFormat;
}
+@property BOOL displaySeconds;
+@property BOOL displayShortFormat;
+
- (NSString *)stringForObjectValue:(id)anObject;
-- (BOOL)getObjectValue:(id *)anObject
- forString:(NSString *)string
- errorDescription:(NSString **)error;
+- (NSAttributedString *)attributedStringForObjectValue:(id)anObject
+ withDefaultAttributes:(NSDictionary *)attributes;
+
+- (NSString *) stringForLifetime: (time_t) lifetime;
+
+@end
+
+@interface KerberosFavoriteFormatter : NSFormatter {
+
+}
+
+- (NSString *)stringForObjectValue:(id)anObject;
- (NSAttributedString *)attributedStringForObjectValue:(id)anObject
withDefaultAttributes:(NSDictionary *)attributes;
diff --git a/src/kim/agent/mac/KerberosFormatters.m b/src/kim/agent/mac/KerberosFormatters.m
index e1675bb70..b8a5b3aa4 100644
--- a/src/kim/agent/mac/KerberosFormatters.m
+++ b/src/kim/agent/mac/KerberosFormatters.m
@@ -24,10 +24,22 @@
#import "KerberosFormatters.h"
-#define EXPIRED_STRING @"Expired"
-
@implementation KerberosTimeFormatter
+@synthesize displaySeconds;
+@synthesize displayShortFormat;
+
+- (id) init
+{
+ self = [super init];
+ if (self != nil) {
+ // default to --:-- style
+ self.displaySeconds = NO;
+ self.displayShortFormat = YES;
+ }
+ return self;
+}
+
/*
* For display of Kerberos expiration times.
* Converts an NSDate into an NSString like "09:53" for 9 hours and 53 minutes
@@ -36,75 +48,125 @@
- (NSString *)stringForObjectValue:(id)anObject
{
NSString *result = nil;
- if (anObject == nil || ![anObject respondsToSelector:@selector(timeIntervalSince1970)]) {
- result = [NSString stringWithFormat:@"%s given invalid object %@",
- _cmd, NSStringFromClass([anObject class])];
+
+ if (anObject == nil || ![anObject respondsToSelector:@selector(timeIntervalSinceNow)]) {
+ result = @"";
}
else {
- time_t lifetime = [(NSDate *)anObject timeIntervalSince1970] - time(NULL);
-
- if (lifetime > 0) {
- time_t seconds = (lifetime % 60);
- time_t minutes = (lifetime / 60 % 60);
- time_t hours = (lifetime / 3600 % 24);
- time_t days = (lifetime / 86400);
-
- if (seconds > 0) { seconds = 0; minutes++; }
- if (minutes > 59) { minutes = 0; hours++; }
- if (hours > 23) { hours = 0; days++; }
-
- result = [NSString stringWithFormat:@"%02ld:%02ld", hours, minutes];
- } else {
- result = EXPIRED_STRING;
- }
+ result = [self stringForLifetime:(time_t)[(NSDate *)anObject timeIntervalSinceNow]];
}
return result;
}
-/*
- * Converts NSStrings like @"09:53" into NSDate representation of that point
- * in the future. If string is @"Expired", NSDate is set to 1970.
- */
+- (NSAttributedString *)attributedStringForObjectValue:(id)anObject
+ withDefaultAttributes:(NSDictionary *)attributes
+{
+ return [[[NSAttributedString alloc] initWithString:[self stringForObjectValue:anObject]
+ attributes:attributes] autorelease];
+}
-- (BOOL)getObjectValue:(id *)anObject
- forString:(NSString *)string
- errorDescription:(NSString **)error
+- (NSString *) stringForLifetime: (time_t) lifetime
{
- NSArray *tokens = [string componentsSeparatedByString:@":"];
- *anObject = nil;
+ NSMutableString *string = [NSMutableString string];
+ NSString *separatorKey = (self.displayShortFormat) ? @"LifetimeStringSeparatorShortFormat" :
+ @"LifetimeStringSeparatorLongFormat";
+ NSString *separator = NSLocalizedStringFromTable (separatorKey, @"KerberosFormatters", NULL);
+ NSString *key = NULL;
+
+ // Break the lifetime up into time units
+ time_t days = (lifetime / 86400);
+ time_t hours = (lifetime / 3600 % 24);
+ time_t minutes = (lifetime / 60 % 60);
+ time_t seconds = (lifetime % 60);
- if ([tokens count] == 2) {
- NSInteger hours = [[tokens objectAtIndex:0] longValue];
- NSInteger minutes = [[tokens objectAtIndex:1] longValue];
- *anObject = [NSDate dateWithTimeIntervalSince1970:(hours * 60 * 60) + (minutes * 60)];
- } else if ([string isEqualToString:EXPIRED_STRING]) {
- *anObject = [NSDate dateWithTimeIntervalSince1970:0];
+ if (lifetime > 0) {
+ // If we aren't going to display seconds, round up
+ if (!self.displaySeconds) {
+ if (seconds > 0) { seconds = 0; minutes++; }
+ if (minutes > 59) { minutes = 0; hours++; }
+ if (hours > 23) { hours = 0; days++; }
+ }
+
+ if (days > 0 && !self.displayShortFormat) {
+ if (self.displayShortFormat) {
+ key = (days > 1) ? @"LifetimeStringDaysShortFormat" : @"LifetimeStringDayShortFormat";
+ } else {
+ key = (days > 1) ? @"LifetimeStringDaysLongFormat" : @"LifetimeStringDayLongFormat";
+ }
+ [string appendFormat: NSLocalizedStringFromTable (key, @"KerberosFormatters", NULL), days];
+ }
+
+ if ((hours > 0) || self.displayShortFormat) {
+ if (self.displayShortFormat) {
+ key = (hours > 1) ? @"LifetimeStringHoursShortFormat" : @"LifetimeStringHourShortFormat";
+ hours += days * 24;
+ days = 0;
+ } else {
+ key = (hours > 1) ? @"LifetimeStringHoursLongFormat" : @"LifetimeStringHourLongFormat";
+ }
+ if ([string length] > 0) { [string appendString: separator]; }
+ [string appendFormat: NSLocalizedStringFromTable (key, @"KerberosFormatters", NULL), hours];
+ }
+
+ if ((minutes > 0) || self.displayShortFormat) {
+ if (self.displayShortFormat) {
+ key = (minutes > 1) ? @"LifetimeStringMinutesShortFormat" : @"LifetimeStringMinuteShortFormat";
+ } else {
+ key = (minutes > 1) ? @"LifetimeStringMinutesLongFormat" : @"LifetimeStringMinuteLongFormat";
+ }
+ if ([string length] > 0) { [string appendString: separator]; }
+ [string appendFormat: NSLocalizedStringFromTable (key, @"KerberosFormatters", NULL), minutes];
+ }
+
+ if (self.displaySeconds && ((seconds > 0) || self.displayShortFormat)) {
+ if (self.displayShortFormat) {
+ key = (seconds > 1) ? @"LifetimeStringSecondsShortFormat" : @"LifetimeStringSecondShortFormat";
+ } else {
+ key = (seconds > 1) ? @"LifetimeStringSecondsLongFormat" : @"LifetimeStringSecondLongFormat";
+ }
+ if ([string length] > 0) { [string appendString: separator]; }
+ [string appendFormat: NSLocalizedStringFromTable (key, @"KerberosFormatters", NULL), seconds];
+ }
+ } else {
+ key = @"LifetimeStringExpired";
+ [string appendString: NSLocalizedStringFromTable (key, @"KerberosFormatters", NULL)];
}
- if (*anObject == nil) {
- return false;
+ // Return an NSString (non-mutable) from our mutable temporary
+ return [NSString stringWithString: string];
+}
+
+@end
+
+@implementation KerberosFavoriteFormatter
+
+/*
+ * For displaying favorite status of KIM identities.
+ * Converts an NSNumber containing a boolean value into an NSString.
+ * If true, returns a heart character, /u2665.
+ * If false, returns empty string @"".
+ */
+- (NSString *)stringForObjectValue:(id)anObject
+{
+ NSString *key = nil;
+ if (anObject == nil ||
+ ![anObject respondsToSelector:@selector(boolValue)] ||
+ ([(NSNumber *)anObject boolValue] == FALSE)) {
+ key = @"FavoriteStringNotFavorite";
}
- return true;
+ else {
+ key = @"FavoriteStringIsFavorite";
+ }
+
+ return NSLocalizedStringFromTable (key, @"KerberosFormatters", NULL);
}
- (NSAttributedString *)attributedStringForObjectValue:(id)anObject
withDefaultAttributes:(NSDictionary *)attributes
{
- NSAttributedString *resultString = nil;
- NSString *plainString = [self stringForObjectValue:anObject];
- NSMutableDictionary *newAttributes = [attributes mutableCopy];
-
- if ([plainString isEqualToString:EXPIRED_STRING]) {
- [newAttributes setObject:[NSColor redColor]
- forKey:NSForegroundColorAttributeName];
- [newAttributes setObject: [NSNumber numberWithFloat: 0.3]
- forKey: NSObliquenessAttributeName];
- }
-
- resultString = [[NSAttributedString alloc] initWithString:plainString attributes:newAttributes];
- [newAttributes release];
-
- return [resultString autorelease];
+ return [[[NSAttributedString alloc] initWithString:[self stringForObjectValue:anObject]
+ attributes:attributes] autorelease];
}
+
@end
diff --git a/src/kim/agent/mac/SelectIdentityController.h b/src/kim/agent/mac/SelectIdentityController.h
index 741f897f6..01bcd9228 100644
--- a/src/kim/agent/mac/SelectIdentityController.h
+++ b/src/kim/agent/mac/SelectIdentityController.h
@@ -28,31 +28,48 @@
@interface SelectIdentityController : NSWindowController {
+ IBOutlet NSObjectController *identitiesController;
IBOutlet NSArrayController *identityArrayController;
-
+
IBOutlet BadgedImageView *kerberosIconImageView;
IBOutlet NSTextField *headerTextField;
IBOutlet NSTextField *explanationTextField;
IBOutlet NSTableView *identityTableView;
IBOutlet NSTableColumn *identityTableColumn;
- IBOutlet NSTableColumn *timeRemainingTableColumn;
IBOutlet NSButton *addIdentityButton;
- IBOutlet NSButton *removeIdentityButton;
+ IBOutlet NSPopUpButton *actionPopupButton;
IBOutlet NSButton *selectIdentityButton;
IBOutlet NSButton *cancelButton;
-
+
Identities *identities;
NSTimer *refreshTimer;
+
+ IBOutlet NSWindow *identityOptionsWindow;
+ IBOutlet NSObjectController *identityOptionsController;
+ IBOutlet NSTextField *nameField;
+ IBOutlet NSTextField *realmField;
}
-- (IBAction) add: (id) sender;
-- (IBAction) remove: (id) sender;
+- (IBAction) newIdentity: (id) sender;
+- (IBAction) addToFavorites: (id) sender;
+- (IBAction) removeFromFavorites: (id) sender;
+
+- (IBAction) editOptions: (id) sender;
+- (IBAction) resetOptions: (id) sender;
+- (IBAction) cancelOptions: (id) sender;
+- (IBAction) doneOptions: (id) sender;
- (IBAction) select: (id) sender;
- (IBAction) cancel: (id) sender;
- (int) runWindow;
+- (void) showOptions: (NSString *) contextInfo;
+- (void) didEndSheet: (NSWindow *) sheet returnCode: (int) returnCode contextInfo: (void *) contextInfo;
+- (void) saveOptions;
+
+- (void) reloadData;
+- (void) refreshTable;
- (void) timedRefresh:(NSTimer *)timer;
diff --git a/src/kim/agent/mac/SelectIdentityController.m b/src/kim/agent/mac/SelectIdentityController.m
index e7453a906..b26eaaa00 100644
--- a/src/kim/agent/mac/SelectIdentityController.m
+++ b/src/kim/agent/mac/SelectIdentityController.m
@@ -24,6 +24,7 @@
#import "SelectIdentityController.h"
+#define identities_key_path @"identities"
@implementation SelectIdentityController
@@ -32,12 +33,11 @@
- (id) initWithWindowNibName: (NSString *) windowNibName
{
if ((self = [super initWithWindowNibName: windowNibName])) {
- NSLog (@"SelectIdentityController initializing");
identities = [[Identities alloc] init];
[identities addObserver:self
- forKeyPath:@"identities"
+ forKeyPath:identities_key_path
options:NSKeyValueObservingOptionNew
- context:@"SelectIdentityController"];
+ context:@"selectIdentityController"];
refreshTimer = [NSTimer scheduledTimerWithTimeInterval:60.0 target:self selector:@selector(timedRefresh:) userInfo:nil repeats:true];
}
@@ -56,7 +56,7 @@
- (void) dealloc
{
[refreshTimer release];
- [identities removeObserver:self forKeyPath:@"identities"];
+ [identities removeObserver:self forKeyPath:identities_key_path];
[identities release];
[super dealloc];
}
@@ -65,36 +65,64 @@
- (void) awakeFromNib
{
- [headerTextField setStringValue: @"Some header text"];
+ [headerTextField setStringValue: @"Some header text"];
+ [identityTableView setDoubleAction:@selector(select:)];
}
// ---------------------------------------------------------------------------
- (void) windowDidLoad
{
-
[explanationTextField setStringValue: @"Some explanation text"];
-
+ [identitiesController setContent:identities];
}
// ---------------------------------------------------------------------------
-- (IBAction) add: (id) sender
+- (IBAction) newIdentity: (id) sender
{
- NSLog(@"Add identity");
+ Identity *newIdentity = [[Identity alloc] init];
+
+ newIdentity.favorite = TRUE;
+ identityOptionsController.content = newIdentity;
+ [newIdentity release];
+
+ NSLog(@"New identity %@", [newIdentity description]);
+ [self showOptions:@"new"];
}
// ---------------------------------------------------------------------------
-- (IBAction) remove: (id) sender
+- (IBAction) addToFavorites: (id) sender
{
- NSLog(@"Remove identity");
+ Identity *anIdentity = [identityArrayController.selectedObjects lastObject];
+ identityOptionsController.content = nil;
+ NSLog(@"Add %@ to favorites", [anIdentity description]);
+ anIdentity.favorite = TRUE;
+
+ [self saveOptions];
+}
+
+// ---------------------------------------------------------------------------
+
+- (IBAction) removeFromFavorites: (id) sender
+{
+ Identity *anIdentity = [identityArrayController.selectedObjects lastObject];
+ identityOptionsController.content = anIdentity;
+ NSLog(@"Remove %@ from favorites", [anIdentity description]);
+ anIdentity.favorite = FALSE;
+
+ [self saveOptions];
}
// ---------------------------------------------------------------------------
- (IBAction) select: (id) sender
{
+ // ignore double-click on header
+ if ([sender respondsToSelector:@selector(clickedRow)] && [sender clickedRow] < 0) {
+ return;
+ }
NSLog(@"Select identity: %@", identityArrayController.selectedObjects.description);
}
@@ -107,6 +135,49 @@
// ---------------------------------------------------------------------------
+- (IBAction) editOptions: (id) sender
+{
+ Identity *anIdentity = [identityArrayController.selectedObjects lastObject];
+ anIdentity.favorite = TRUE;
+ [identityOptionsController setContent: anIdentity];
+
+ [self showOptions:@"edit"];
+}
+
+// ---------------------------------------------------------------------------
+
+- (IBAction) resetOptions: (id) sender
+{
+ Identity *anIdentity = identityOptionsController.content;
+ // reset options to default settings
+ [anIdentity resetOptions];
+}
+
+// ---------------------------------------------------------------------------
+
+- (IBAction) cancelOptions: (id) sender
+{
+ identityOptionsController.content = nil;
+ [NSApp endSheet:identityOptionsWindow returnCode:NSUserCancelledError];
+
+ // dump changed settings
+ [identities reload];
+}
+
+// ---------------------------------------------------------------------------
+
+- (IBAction) doneOptions: (id) sender
+{
+ Identity *anIdentity = identityOptionsController.content;
+
+ [anIdentity setPrincipalComponents: [nameField stringValue]
+ realm: [realmField stringValue]];
+
+ [NSApp endSheet: identityOptionsWindow];
+}
+
+// ---------------------------------------------------------------------------
+
- (int) runWindow
{
//[[NSApp delegate] addActiveWindow: [self window]];
@@ -124,21 +195,115 @@
// ---------------------------------------------------------------------------
+- (void) showOptions: (NSString *) contextInfo
+{
+ Identity *anIdentity = identityOptionsController.content;
+
+ [nameField setStringValue:anIdentity.componentsString];
+ [realmField setStringValue:anIdentity.realmString];
+
+ [NSApp beginSheet: identityOptionsWindow
+ modalForWindow: [self window]
+ modalDelegate: self
+ didEndSelector: @selector(didEndSheet:returnCode:contextInfo:)
+ contextInfo: contextInfo];
+}
+
+// ---------------------------------------------------------------------------
+
+- (void) didEndSheet: (NSWindow *) sheet returnCode: (int) returnCode contextInfo: (void *) contextInfo
+{
+ kim_error err = KIM_NO_ERROR;
+ if (returnCode != NSUserCancelledError) {
+ if ([(NSString *)contextInfo isEqualToString:@"new"]) {
+ Identity *newIdentity = identityOptionsController.content;
+ err = [identities addIdentity:newIdentity];
+
+#warning Add validation to prevent the addition of existing principals and invalid principals
+ if (err) {
+ NSLog(@"%s received error %@ trying to add identity %@", _cmd, [NSString stringForLastKIMError:err], [newIdentity description]);
+ }
+ [self saveOptions];
+ }
+ else if ([(NSString *)contextInfo isEqualToString:@"edit"]) {
+ [self saveOptions];
+ }
+ }
+ [sheet orderOut:self];
+}
+
+// ---------------------------------------------------------------------------
+
+- (void) saveOptions
+{
+ // attempt to preserve the selection
+ Identity *anIdentity = [[identityArrayController selectedObjects] lastObject];
+ NSUInteger a, b, c;
+
+ a = [identityArrayController.content indexOfObject: anIdentity];
+ b = NSNotFound;
+
+ [identities synchronizePreferences];
+
+ /*
+ * select same object as before if it's still in the array
+ * if not, select same index as before or end of array, whichever is less
+ */
+
+ b = [identityArrayController.content indexOfObject:anIdentity];
+ c = [identityArrayController.content count] - 1;
+
+ [identityArrayController setSelectionIndex: (b == NSNotFound) ? (a > c) ? c : a : b];
+}
+
+// ---------------------------------------------------------------------------
+
- (void) observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
- if ([(NSString *)context isEqualToString:@"SelectIdentityController"]) {
- NSLog(@"========== identities array changed ==========");
- identityArrayController.content = [[identities.identities mutableCopy] autorelease];
+ if ([(NSString *) context isEqualToString:@"selectIdentityController"]) {
+ if ([keyPath isEqualToString:identities_key_path]) {
+// [self reloadData];
+ }
}
else {
[super observeValueForKeyPath:keyPath ofObject:object change:change context:context];
}
}
-- (void) timedRefresh:(NSTimer *)timer
+// ---------------------------------------------------------------------------
+
+- (void) reloadData
+{
+ // Preserve selection
+ Identity *selectedIdentity = [[identityArrayController.selectedObjects lastObject] retain];
+ NSUInteger a, b, c;
+ a = [identityArrayController selectionIndex];
+ b = [[identityArrayController content] count];
+ c = NSNotFound;
+
+ NSLog(@"== updating table == %s", _cmd);
+ identityArrayController.content = identities.identities;
+
+ c = [identityArrayController.content indexOfObject:selectedIdentity];
+ if ([[identityArrayController content] count] >= a)
+ [identityArrayController setSelectionIndex:(c == NSNotFound) ? (a > b) ? b : a : c];
+
+ [selectedIdentity release];
+}
+
+// ---------------------------------------------------------------------------
+
+- (void) refreshTable
{
[identityArrayController rearrangeObjects];
}
+// ---------------------------------------------------------------------------
+
+- (void) timedRefresh:(NSTimer *)timer
+{
+ // refetch data to update expiration times
+ [self refreshTable];
+}
@end
diff --git a/src/kim/agent/mac/resources/English.lproj/SelectIdentity.xib b/src/kim/agent/mac/resources/English.lproj/SelectIdentity.xib
index 8e912b203..bf65e894d 100644
--- a/src/kim/agent/mac/resources/English.lproj/SelectIdentity.xib
+++ b/src/kim/agent/mac/resources/English.lproj/SelectIdentity.xib
@@ -8,7 +8,8 @@
<string key="IBDocument.HIToolboxVersion">352.00</string>
<object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
<bool key="EncodedWithXMLCoder">YES</bool>
- <integer value="6"/>
+ <integer value="300428"/>
+ <integer value="300295"/>
</object>
<object class="NSArray" key="IBDocument.PluginDependencies">
<bool key="EncodedWithXMLCoder">YES</bool>
@@ -28,7 +29,7 @@
<object class="NSWindowTemplate" id="224590347">
<int key="NSWindowStyleMask">13</int>
<int key="NSWindowBacking">2</int>
- <string key="NSWindowRect">{{279, 513}, {491, 315}}</string>
+ <string key="NSWindowRect">{{279, 512}, {491, 316}}</string>
<int key="NSWTFlags">1886913536</int>
<string key="NSWindowTitle">Select a Kerberos Identity</string>
<object class="NSMutableString" key="NSWindowClass">
@@ -47,7 +48,7 @@
<object class="NSTextField" id="499468804">
<reference key="NSNextResponder" ref="928852707"/>
<int key="NSvFlags">266</int>
- <string key="NSFrame">{{101, 264}, {373, 17}}</string>
+ <string key="NSFrame">{{101, 265}, {373, 17}}</string>
<reference key="NSSuperview" ref="928852707"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="82820472">
@@ -83,7 +84,7 @@
<object class="NSTextField" id="675887072">
<reference key="NSNextResponder" ref="928852707"/>
<int key="NSvFlags">266</int>
- <string key="NSFrame">{{101, 219}, {373, 37}}</string>
+ <string key="NSFrame">{{101, 220}, {373, 37}}</string>
<reference key="NSSuperview" ref="928852707"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="542766611">
@@ -100,48 +101,121 @@
<reference key="NSTextColor" ref="883746258"/>
</object>
</object>
- <object class="NSScrollView" id="147207906">
+ <object class="NSButton" id="426244837">
+ <reference key="NSNextResponder" ref="928852707"/>
+ <int key="NSvFlags">289</int>
+ <string key="NSFrame">{{390, 13}, {87, 32}}</string>
+ <reference key="NSSuperview" ref="928852707"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSButtonCell" key="NSCell" id="686991406">
+ <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags2">134217728</int>
+ <string key="NSContents">Select</string>
+ <reference key="NSSupport" ref="604532625"/>
+ <reference key="NSControlView" ref="426244837"/>
+ <int key="NSButtonFlags">-2038284033</int>
+ <int key="NSButtonFlags2">1</int>
+ <reference key="NSAlternateImage" ref="604532625"/>
+ <string key="NSAlternateContents"/>
+ <string type="base64-UTF8" key="NSKeyEquivalent">DQ</string>
+ <int key="NSPeriodicDelay">200</int>
+ <int key="NSPeriodicInterval">25</int>
+ </object>
+ </object>
+ <object class="NSButton" id="505388869">
+ <reference key="NSNextResponder" ref="928852707"/>
+ <int key="NSvFlags">289</int>
+ <string key="NSFrame">{{308, 13}, {82, 32}}</string>
+ <reference key="NSSuperview" ref="928852707"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSButtonCell" key="NSCell" id="720384657">
+ <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags2">134217728</int>
+ <string key="NSContents">Cancel</string>
+ <reference key="NSSupport" ref="604532625"/>
+ <reference key="NSControlView" ref="505388869"/>
+ <int key="NSButtonFlags">-2038284033</int>
+ <int key="NSButtonFlags2">1</int>
+ <reference key="NSAlternateImage" ref="604532625"/>
+ <string key="NSAlternateContents"/>
+ <string type="base64-UTF8" key="NSKeyEquivalent">Gw</string>
+ <int key="NSPeriodicDelay">200</int>
+ <int key="NSPeriodicInterval">25</int>
+ </object>
+ </object>
+ <object class="NSCustomView" id="700535463">
+ <reference key="NSNextResponder" ref="928852707"/>
+ <int key="NSvFlags">268</int>
+ <string key="NSFrame">{{20, 232}, {64, 64}}</string>
+ <reference key="NSSuperview" ref="928852707"/>
+ <string key="NSClassName">BadgedImageView</string>
+ </object>
+ <object class="NSButton" id="949861041">
+ <reference key="NSNextResponder" ref="928852707"/>
+ <int key="NSvFlags">292</int>
+ <string key="NSFrame">{{20, 19}, {28, 24}}</string>
+ <reference key="NSSuperview" ref="928852707"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSButtonCell" key="NSCell" id="871232847">
+ <int key="NSCellFlags">-2080244224</int>
+ <int key="NSCellFlags2">134217728</int>
+ <string key="NSContents"/>
+ <reference key="NSSupport" ref="604532625"/>
+ <reference key="NSControlView" ref="949861041"/>
+ <int key="NSButtonFlags">-2030812929</int>
+ <int key="NSButtonFlags2">162</int>
+ <object class="NSCustomResource" key="NSNormalImage">
+ <string key="NSClassName">NSImage</string>
+ <string key="NSResourceName">NSAddTemplate</string>
+ </object>
+ <string key="NSAlternateContents"/>
+ <string key="NSKeyEquivalent"/>
+ <int key="NSPeriodicDelay">400</int>
+ <int key="NSPeriodicInterval">75</int>
+ </object>
+ </object>
+ <object class="NSScrollView" id="616284695">
<reference key="NSNextResponder" ref="928852707"/>
<int key="NSvFlags">274</int>
<object class="NSMutableArray" key="NSSubviews">
<bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSClipView" id="750193364">
- <reference key="NSNextResponder" ref="147207906"/>
+ <object class="NSClipView" id="568659409">
+ <reference key="NSNextResponder" ref="616284695"/>
<int key="NSvFlags">2304</int>
<object class="NSMutableArray" key="NSSubviews">
<bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSTableView" id="988096643">
- <reference key="NSNextResponder" ref="750193364"/>
+ <object class="NSTableView" id="631507655">
+ <reference key="NSNextResponder" ref="568659409"/>
<int key="NSvFlags">256</int>
<string key="NSFrameSize">{449, 133}</string>
- <reference key="NSSuperview" ref="750193364"/>
+ <reference key="NSSuperview" ref="568659409"/>
<bool key="NSEnabled">YES</bool>
- <object class="NSTableHeaderView" key="NSHeaderView" id="401017936">
- <reference key="NSNextResponder" ref="320641129"/>
+ <object class="NSTableHeaderView" key="NSHeaderView" id="282626403">
+ <reference key="NSNextResponder" ref="71614719"/>
<int key="NSvFlags">256</int>
<string key="NSFrameSize">{449, 17}</string>
- <reference key="NSSuperview" ref="320641129"/>
- <reference key="NSTableView" ref="988096643"/>
+ <reference key="NSSuperview" ref="71614719"/>
+ <reference key="NSTableView" ref="631507655"/>
</object>
- <object class="_NSCornerView" key="NSCornerView" id="907434254">
- <reference key="NSNextResponder" ref="147207906"/>
+ <object class="_NSCornerView" key="NSCornerView" id="865861000">
+ <reference key="NSNextResponder" ref="616284695"/>
<int key="NSvFlags">-2147483392</int>
<string key="NSFrame">{{-26, 0}, {16, 17}}</string>
- <reference key="NSSuperview" ref="147207906"/>
+ <reference key="NSSuperview" ref="616284695"/>
</object>
<object class="NSMutableArray" key="NSTableColumns">
<bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSTableColumn" id="697375404">
- <string key="NSIdentifier">principal</string>
- <double key="NSWidth">3.429741e+02</double>
- <double key="NSMinWidth">1.499741e+02</double>
+ <object class="NSTableColumn" id="1025403577">
+ <string key="NSIdentifier">identityColumn</string>
+ <double key="NSWidth">2.670000e+02</double>
+ <double key="NSMinWidth">4.000000e+01</double>
<double key="NSMaxWidth">1.000000e+03</double>
<object class="NSTableHeaderCell" key="NSHeaderCell">
<int key="NSCellFlags">75628032</int>
<int key="NSCellFlags2">0</int>
<string key="NSContents">Identity</string>
<reference key="NSSupport" ref="26"/>
- <object class="NSColor" key="NSBackgroundColor">
+ <object class="NSColor" key="NSBackgroundColor" id="975820753">
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MC4zMzMzMzI5OQA</bytes>
</object>
@@ -152,30 +226,64 @@
<reference key="NSColor" ref="18538584"/>
</object>
</object>
- <object class="NSTextFieldCell" key="NSDataCell" id="325541546">
- <int key="NSCellFlags">1411513920</int>
- <int key="NSCellFlags2">272761856</int>
+ <object class="NSTextFieldCell" key="NSDataCell" id="475156882">
+ <int key="NSCellFlags">337772096</int>
+ <int key="NSCellFlags2">2048</int>
<string key="NSContents">Text Cell</string>
- <reference key="NSSupport" ref="26"/>
- <reference key="NSControlView" ref="988096643"/>
- <reference key="NSBackgroundColor" ref="876444531"/>
+ <object class="NSFont" key="NSSupport" id="445233186">
+ <string key="NSName">LucidaGrande</string>
+ <double key="NSSize">1.100000e+01</double>
+ <int key="NSfFlags">16</int>
+ </object>
+ <reference key="NSControlView" ref="631507655"/>
+ <object class="NSColor" key="NSBackgroundColor" id="1015612366">
+ <int key="NSColorSpace">6</int>
+ <string key="NSCatalogName">System</string>
+ <string key="NSColorName">controlBackgroundColor</string>
+ <reference key="NSColor" ref="31892828"/>
+ </object>
<reference key="NSTextColor" ref="883746258"/>
</object>
<int key="NSResizingMask">3</int>
<bool key="NSIsResizeable">YES</bool>
- <bool key="NSIsEditable">YES</bool>
- <reference key="NSTableView" ref="988096643"/>
+ <reference key="NSTableView" ref="631507655"/>
</object>
- <object class="NSTableColumn" id="1004662124">
- <string key="NSIdentifier">timeRemaining</string>
- <double key="NSWidth">1.003135e+02</double>
+ <object class="NSTableColumn" id="917941739">
+ <string key="NSIdentifier">timeRemainingColumn</string>
+ <double key="NSWidth">1.500000e+02</double>
<double key="NSMinWidth">1.000000e+02</double>
- <double key="NSMaxWidth">1.500000e+02</double>
+ <double key="NSMaxWidth">2.000000e+02</double>
<object class="NSTableHeaderCell" key="NSHeaderCell">
- <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags">75628032</int>
<int key="NSCellFlags2">67108864</int>
<string key="NSContents">Time Remaining</string>
<reference key="NSSupport" ref="26"/>
+ <reference key="NSBackgroundColor" ref="975820753"/>
+ <reference key="NSTextColor" ref="223105710"/>
+ </object>
+ <object class="NSTextFieldCell" key="NSDataCell" id="519561276">
+ <int key="NSCellFlags">67239488</int>
+ <int key="NSCellFlags2">67110912</int>
+ <string key="NSContents">Text Cell</string>
+ <reference key="NSSupport" ref="445233186"/>
+ <reference key="NSControlView" ref="631507655"/>
+ <reference key="NSBackgroundColor" ref="1015612366"/>
+ <reference key="NSTextColor" ref="883746258"/>
+ </object>
+ <int key="NSResizingMask">2</int>
+ <bool key="NSIsResizeable">YES</bool>
+ <reference key="NSTableView" ref="631507655"/>
+ </object>
+ <object class="NSTableColumn" id="850969979">
+ <string key="NSIdentifier">favoriteColumn</string>
+ <double key="NSWidth">2.300000e+01</double>
+ <double key="NSMinWidth">1.000000e+01</double>
+ <double key="NSMaxWidth">2.800000e+01</double>
+ <object class="NSTableHeaderCell" key="NSHeaderCell">
+ <int key="NSCellFlags">75628032</int>
+ <int key="NSCellFlags2">134217728</int>
+ <string type="base64-UTF8" key="NSContents">4pmlA</string>
+ <reference key="NSSupport" ref="26"/>
<object class="NSColor" key="NSBackgroundColor">
<int key="NSColorSpace">6</int>
<string key="NSCatalogName">System</string>
@@ -187,19 +295,16 @@
</object>
<reference key="NSTextColor" ref="223105710"/>
</object>
- <object class="NSTextFieldCell" key="NSDataCell" id="618557697">
- <int key="NSCellFlags">1140981312</int>
- <int key="NSCellFlags2">-2076048384</int>
+ <object class="NSTextFieldCell" key="NSDataCell" id="968276158">
+ <int key="NSCellFlags">67239488</int>
+ <int key="NSCellFlags2">134219776</int>
<string key="NSContents">Text Cell</string>
- <reference key="NSSupport" ref="26"/>
- <reference key="NSControlView" ref="988096643"/>
- <reference key="NSBackgroundColor" ref="876444531"/>
+ <reference key="NSSupport" ref="445233186"/>
+ <reference key="NSControlView" ref="631507655"/>
+ <reference key="NSBackgroundColor" ref="1015612366"/>
<reference key="NSTextColor" ref="883746258"/>
</object>
- <int key="NSResizingMask">3</int>
- <bool key="NSIsResizeable">YES</bool>
- <bool key="NSIsEditable">YES</bool>
- <reference key="NSTableView" ref="988096643"/>
+ <reference key="NSTableView" ref="631507655"/>
</object>
</object>
<double key="NSIntercellSpacingWidth">3.000000e+00</double>
@@ -215,203 +320,628 @@
</object>
</object>
<double key="NSRowHeight">1.700000e+01</double>
- <int key="NSTvFlags">1119879168</int>
- <int key="NSColumnAutoresizingStyle">5</int>
+ <int key="NSTvFlags">-1010827264</int>
+ <string key="NSAutosaveName">SelectIdentityTable</string>
+ <int key="NSColumnAutoresizingStyle">2</int>
<int key="NSDraggingSourceMaskForLocal">15</int>
<int key="NSDraggingSourceMaskForNonLocal">0</int>
<bool key="NSAllowsTypeSelect">YES</bool>
</object>
</object>
<string key="NSFrame">{{1, 17}, {449, 133}}</string>
- <reference key="NSSuperview" ref="147207906"/>
- <reference key="NSNextKeyView" ref="988096643"/>
- <reference key="NSDocView" ref="988096643"/>
- <object class="NSColor" key="NSBGColor" id="1015612366">
- <int key="NSColorSpace">6</int>
- <string key="NSCatalogName">System</string>
- <string key="NSColorName">controlBackgroundColor</string>
- <reference key="NSColor" ref="31892828"/>
- </object>
+ <reference key="NSSuperview" ref="616284695"/>
+ <reference key="NSNextKeyView" ref="631507655"/>
+ <reference key="NSDocView" ref="631507655"/>
+ <reference key="NSBGColor" ref="1015612366"/>
<int key="NScvFlags">4</int>
</object>
- <object class="NSScroller" id="80966883">
- <reference key="NSNextResponder" ref="147207906"/>
+ <object class="NSScroller" id="810829004">
+ <reference key="NSNextResponder" ref="616284695"/>
<int key="NSvFlags">-2147483392</int>
- <string key="NSFrame">{{-30, 17}, {15, 285}}</string>
- <reference key="NSSuperview" ref="147207906"/>
- <reference key="NSTarget" ref="147207906"/>
+ <string key="NSFrame">{{224, 17}, {15, 117}}</string>
+ <reference key="NSSuperview" ref="616284695"/>
+ <reference key="NSTarget" ref="616284695"/>
<string key="NSAction">_doScroller:</string>
- <double key="NSPercent">9.684210e-01</double>
+ <double key="NSCurValue">3.700000e+01</double>
+ <double key="NSPercent">1.947368e-01</double>
</object>
- <object class="NSScroller" id="564144656">
- <reference key="NSNextResponder" ref="147207906"/>
- <int key="NSvFlags">-2147483392</int>
- <string key="NSFrame">{{-100, -100}, {362, 15}}</string>
- <reference key="NSSuperview" ref="147207906"/>
+ <object class="NSScroller" id="836592269">
+ <reference key="NSNextResponder" ref="616284695"/>
+ <int key="NSvFlags">256</int>
+ <string key="NSFrame">{{-100, -100}, {223, 15}}</string>
+ <reference key="NSSuperview" ref="616284695"/>
<int key="NSsFlags">1</int>
- <reference key="NSTarget" ref="147207906"/>
+ <reference key="NSTarget" ref="616284695"/>
<string key="NSAction">_doScroller:</string>
- <double key="NSPercent">9.040768e-01</double>
+ <double key="NSPercent">7.689655e-01</double>
</object>
- <object class="NSClipView" id="320641129">
- <reference key="NSNextResponder" ref="147207906"/>
+ <object class="NSClipView" id="71614719">
+ <reference key="NSNextResponder" ref="616284695"/>
<int key="NSvFlags">2304</int>
<object class="NSMutableArray" key="NSSubviews">
<bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="401017936"/>
+ <reference ref="282626403"/>
</object>
<string key="NSFrame">{{1, 0}, {449, 17}}</string>
- <reference key="NSSuperview" ref="147207906"/>
- <reference key="NSNextKeyView" ref="401017936"/>
- <reference key="NSDocView" ref="401017936"/>
+ <reference key="NSSuperview" ref="616284695"/>
+ <reference key="NSNextKeyView" ref="282626403"/>
+ <reference key="NSDocView" ref="282626403"/>
<reference key="NSBGColor" ref="1015612366"/>
<int key="NScvFlags">4</int>
</object>
- <reference ref="907434254"/>
+ <reference ref="865861000"/>
</object>
- <string key="NSFrame">{{20, 60}, {451, 151}}</string>
+ <string key="NSFrame">{{20, 61}, {451, 151}}</string>
<reference key="NSSuperview" ref="928852707"/>
- <reference key="NSNextKeyView" ref="750193364"/>
+ <reference key="NSNextKeyView" ref="568659409"/>
<int key="NSsFlags">530</int>
- <reference key="NSVScroller" ref="80966883"/>
- <reference key="NSHScroller" ref="564144656"/>
- <reference key="NSContentView" ref="750193364"/>
- <reference key="NSHeaderClipView" ref="320641129"/>
- <reference key="NSCornerView" ref="907434254"/>
+ <reference key="NSVScroller" ref="810829004"/>
+ <reference key="NSHScroller" ref="836592269"/>
+ <reference key="NSContentView" ref="568659409"/>
+ <reference key="NSHeaderClipView" ref="71614719"/>
+ <reference key="NSCornerView" ref="865861000"/>
<bytes key="NSScrollAmts">QSAAAEEgAABBmAAAQZgAAA</bytes>
</object>
- <object class="NSButton" id="426244837">
+ <object class="NSPopUpButton" id="263312988">
<reference key="NSNextResponder" ref="928852707"/>
- <int key="NSvFlags">289</int>
- <string key="NSFrame">{{390, 12}, {87, 32}}</string>
+ <int key="NSvFlags">292</int>
+ <string key="NSFrame">{{47, 19}, {54, 24}}</string>
<reference key="NSSuperview" ref="928852707"/>
<bool key="NSEnabled">YES</bool>
- <object class="NSButtonCell" key="NSCell" id="686991406">
+ <object class="NSPopUpButtonCell" key="NSCell" id="659813048">
+ <int key="NSCellFlags">-2076049856</int>
+ <int key="NSCellFlags2">134219776</int>
+ <reference key="NSSupport" ref="604532625"/>
+ <reference key="NSControlView" ref="263312988"/>
+ <int key="NSButtonFlags">-2034220801</int>
+ <int key="NSButtonFlags2">162</int>
+ <string key="NSAlternateContents"/>
+ <string key="NSKeyEquivalent"/>
+ <int key="NSPeriodicDelay">400</int>
+ <int key="NSPeriodicInterval">75</int>
+ <object class="NSMenuItem" key="NSMenuItem" id="354283131">
+ <reference key="NSMenu" ref="600123164"/>
+ <bool key="NSIsHidden">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <int key="NSState">1</int>
+ <object class="NSCustomResource" key="NSImage">
+ <string key="NSClassName">NSImage</string>
+ <string key="NSResourceName">NSActionTemplate</string>
+ </object>
+ <object class="NSCustomResource" key="NSOnImage" id="514331248">
+ <string key="NSClassName">NSImage</string>
+ <string key="NSResourceName">NSMenuCheckmark</string>
+ </object>
+ <object class="NSCustomResource" key="NSMixedImage" id="572887887">
+ <string key="NSClassName">NSImage</string>
+ <string key="NSResourceName">NSMenuMixedState</string>
+ </object>
+ <string key="NSAction">_popUpItemAction:</string>
+ <reference key="NSTarget" ref="659813048"/>
+ </object>
+ <bool key="NSMenuItemRespectAlignment">YES</bool>
+ <object class="NSMenu" key="NSMenu" id="600123164">
+ <string key="NSTitle">OtherViews</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="354283131"/>
+ <object class="NSMenuItem" id="136217401">
+ <reference key="NSMenu" ref="600123164"/>
+ <bool key="NSIsHidden">YES</bool>
+ <string key="NSTitle">Remember Identity</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="514331248"/>
+ <reference key="NSMixedImage" ref="572887887"/>
+ <string key="NSAction">_popUpItemAction:</string>
+ <reference key="NSTarget" ref="659813048"/>
+ </object>
+ <object class="NSMenuItem" id="778570067">
+ <reference key="NSMenu" ref="600123164"/>
+ <string key="NSTitle">Forget Identity</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="514331248"/>
+ <reference key="NSMixedImage" ref="572887887"/>
+ <string key="NSAction">_popUpItemAction:</string>
+ <reference key="NSTarget" ref="659813048"/>
+ </object>
+ <object class="NSMenuItem" id="553755370">
+ <reference key="NSMenu" ref="600123164"/>
+ <string type="base64-UTF8" key="NSTitle">VGlja2V0IE9wdGlvbnPigKY</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="514331248"/>
+ <reference key="NSMixedImage" ref="572887887"/>
+ <string key="NSAction">_popUpItemAction:</string>
+ <reference key="NSTarget" ref="659813048"/>
+ </object>
+ </object>
+ </object>
+ <int key="NSSelectedIndex">1</int>
+ <bool key="NSPullDown">YES</bool>
+ <int key="NSPreferredEdge">2</int>
+ <bool key="NSUsesItemFromMenu">YES</bool>
+ <bool key="NSAltersState">YES</bool>
+ <int key="NSArrowPosition">2</int>
+ </object>
+ </object>
+ </object>
+ <string key="NSFrameSize">{491, 316}</string>
+ <reference key="NSSuperview"/>
+ </object>
+ <string key="NSScreenRect">{{0, 0}, {1920, 1178}}</string>
+ <string key="NSMinSize">{419, 320}</string>
+ <string key="NSMaxSize">{600, 622}</string>
+ <string key="NSFrameAutosaveName">SelectIdentityWindow</string>
+ </object>
+ <object class="NSArrayController" id="333357907">
+ <object class="NSMutableArray" key="NSDeclaredKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>timeRemaining</string>
+ <string>isFavorite</string>
+ <string>principalString</string>
+ <string>favorite</string>
+ </object>
+ <string key="NSObjectClassName">Identity</string>
+ <bool key="NSEditable">YES</bool>
+ <object class="_NSManagedProxy" key="_NSManagedProxy"/>
+ <bool key="NSAvoidsEmptySelection">YES</bool>
+ <bool key="NSPreservesSelection">YES</bool>
+ <bool key="NSFilterRestrictsInsertion">YES</bool>
+ <bool key="NSClearsFilterPredicateOnInsertion">YES</bool>
+ </object>
+ <object class="NSCustomObject" id="307777557">
+ <string key="NSClassName">KerberosTimeFormatter</string>
+ </object>
+ <object class="NSCustomObject" id="355705187">
+ <string key="NSClassName">KerberosFavoriteFormatter</string>
+ </object>
+ <object class="NSWindowTemplate" id="370461416">
+ <int key="NSWindowStyleMask">7</int>
+ <int key="NSWindowBacking">2</int>
+ <string key="NSWindowRect">{{196, 132}, {427, 378}}</string>
+ <int key="NSWTFlags">603979776</int>
+ <string key="NSWindowTitle">Window</string>
+ <string key="NSWindowClass">NSWindow</string>
+ <nil key="NSViewClass"/>
+ <string key="NSWindowContentMaxSize">{3.40282e+38, 3.40282e+38}</string>
+ <object class="NSView" key="NSWindowView" id="1019868804">
+ <reference key="NSNextResponder"/>
+ <int key="NSvFlags">258</int>
+ <object class="NSMutableArray" key="NSSubviews">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSTextField" id="485004197">
+ <reference key="NSNextResponder" ref="1019868804"/>
+ <int key="NSvFlags">266</int>
+ <string key="NSFrame">{{69, 336}, {338, 22}}</string>
+ <reference key="NSSuperview" ref="1019868804"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSTextFieldCell" key="NSCell" id="1047482753">
+ <int key="NSCellFlags">-1804468671</int>
+ <int key="NSCellFlags2">272630784</int>
+ <string key="NSContents"/>
+ <reference key="NSSupport" ref="604532625"/>
+ <string key="NSPlaceholderString">user</string>
+ <reference key="NSControlView" ref="485004197"/>
+ <bool key="NSDrawsBackground">YES</bool>
+ <object class="NSColor" key="NSBackgroundColor" id="830301085">
+ <int key="NSColorSpace">6</int>
+ <string key="NSCatalogName">System</string>
+ <string key="NSColorName">textBackgroundColor</string>
+ <reference key="NSColor" ref="591379363"/>
+ </object>
+ <object class="NSColor" key="NSTextColor" id="894652286">
+ <int key="NSColorSpace">6</int>
+ <string key="NSCatalogName">System</string>
+ <string key="NSColorName">textColor</string>
+ <reference key="NSColor" ref="18538584"/>
+ </object>
+ </object>
+ </object>
+ <object class="NSTextField" id="404880622">
+ <reference key="NSNextResponder" ref="1019868804"/>
+ <int key="NSvFlags">268</int>
+ <string key="NSFrame">{{19, 338}, {45, 17}}</string>
+ <reference key="NSSuperview" ref="1019868804"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSTextFieldCell" key="NSCell" id="775341038">
+ <int key="NSCellFlags">68288064</int>
+ <int key="NSCellFlags2">71304192</int>
+ <string key="NSContents">Name:</string>
+ <reference key="NSSupport" ref="604532625"/>
+ <reference key="NSControlView" ref="404880622"/>
+ <reference key="NSBackgroundColor" ref="876444531"/>
+ <reference key="NSTextColor" ref="883746258"/>
+ </object>
+ </object>
+ <object class="NSTextField" id="623163777">
+ <reference key="NSNextResponder" ref="1019868804"/>
+ <int key="NSvFlags">266</int>
+ <string key="NSFrame">{{69, 306}, {338, 22}}</string>
+ <reference key="NSSuperview" ref="1019868804"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSTextFieldCell" key="NSCell" id="327568348">
+ <int key="NSCellFlags">-1804468671</int>
+ <int key="NSCellFlags2">272630784</int>
+ <string key="NSContents"/>
+ <reference key="NSSupport" ref="604532625"/>
+ <string key="NSPlaceholderString">REALM.ORG</string>
+ <reference key="NSControlView" ref="623163777"/>
+ <bool key="NSDrawsBackground">YES</bool>
+ <reference key="NSBackgroundColor" ref="830301085"/>
+ <reference key="NSTextColor" ref="894652286"/>
+ </object>
+ </object>
+ <object class="NSTextField" id="609534695">
+ <reference key="NSNextResponder" ref="1019868804"/>
+ <int key="NSvFlags">268</int>
+ <string key="NSFrame">{{17, 308}, {47, 17}}</string>
+ <reference key="NSSuperview" ref="1019868804"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSTextFieldCell" key="NSCell" id="424319976">
+ <int key="NSCellFlags">68288064</int>
+ <int key="NSCellFlags2">71304192</int>
+ <string key="NSContents">Realm:</string>
+ <reference key="NSSupport" ref="604532625"/>
+ <reference key="NSControlView" ref="609534695"/>
+ <reference key="NSBackgroundColor" ref="876444531"/>
+ <reference key="NSTextColor" ref="883746258"/>
+ </object>
+ </object>
+ <object class="NSBox" id="282101470">
+ <reference key="NSNextResponder" ref="1019868804"/>
+ <int key="NSvFlags">266</int>
+ <object class="NSMutableArray" key="NSSubviews">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSView" id="929379">
+ <reference key="NSNextResponder" ref="282101470"/>
+ <int key="NSvFlags">256</int>
+ <object class="NSMutableArray" key="NSSubviews">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSSlider" id="552234083">
+ <reference key="NSNextResponder" ref="929379"/>
+ <int key="NSvFlags">266</int>
+ <string key="NSFrame">{{24, 179}, {337, 25}}</string>
+ <reference key="NSSuperview" ref="929379"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSSliderCell" key="NSCell" id="629844970">
+ <int key="NSCellFlags">67501824</int>
+ <int key="NSCellFlags2">0</int>
+ <object class="NSMutableString" key="NSContents">
+ <characters key="NS.bytes"/>
+ </object>
+ <reference key="NSSupport" ref="604532625"/>
+ <reference key="NSControlView" ref="552234083"/>
+ <double key="NSMaxValue">1.000000e+02</double>
+ <double key="NSMinValue">0.000000e+00</double>
+ <double key="NSValue">0.000000e+00</double>
+ <double key="NSAltIncValue">0.000000e+00</double>
+ <int key="NSNumberOfTickMarks">11</int>
+ <int key="NSTickMarkPosition">0</int>
+ <bool key="NSAllowsTickMarkValuesOnly">NO</bool>
+ <bool key="NSVertical">NO</bool>
+ </object>
+ </object>
+ <object class="NSTextField" id="576071402">
+ <reference key="NSNextResponder" ref="929379"/>
+ <int key="NSvFlags">268</int>
+ <string key="NSFrame">{{13, 211}, {185, 17}}</string>
+ <reference key="NSSuperview" ref="929379"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSTextFieldCell" key="NSCell" id="380679549">
+ <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags2">4194304</int>
+ <string key="NSContents">Get tickets that are valid for:</string>
+ <reference key="NSSupport" ref="604532625"/>
+ <reference key="NSControlView" ref="576071402"/>
+ <reference key="NSBackgroundColor" ref="876444531"/>
+ <reference key="NSTextColor" ref="883746258"/>
+ </object>
+ </object>
+ <object class="NSTextField" id="54325332">
+ <reference key="NSNextResponder" ref="929379"/>
+ <int key="NSvFlags">266</int>
+ <string key="NSFrame">{{23, 157}, {339, 14}}</string>
+ <reference key="NSSuperview" ref="929379"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSTextFieldCell" key="NSCell" id="584202005">
+ <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags2">4325376</int>
+ <string key="NSContents">10 hours</string>
+ <reference key="NSSupport" ref="26"/>
+ <reference key="NSControlView" ref="54325332"/>
+ <reference key="NSBackgroundColor" ref="876444531"/>
+ <reference key="NSTextColor" ref="883746258"/>
+ </object>
+ </object>
+ <object class="NSTextField" id="240805237">
+ <reference key="NSNextResponder" ref="929379"/>
+ <int key="NSvFlags">268</int>
+ <string key="NSFrame">{{13, 132}, {133, 17}}</string>
+ <reference key="NSSuperview" ref="929379"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSTextFieldCell" key="NSCell" id="638526338">
+ <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags2">71303168</int>
+ <string key="NSContents">Kerberos 5 Options:</string>
+ <reference key="NSSupport" ref="604532625"/>
+ <reference key="NSControlView" ref="240805237"/>
+ <reference key="NSBackgroundColor" ref="876444531"/>
+ <reference key="NSTextColor" ref="883746258"/>
+ </object>
+ </object>
+ <object class="NSSlider" id="373804676">
+ <reference key="NSNextResponder" ref="929379"/>
+ <int key="NSvFlags">266</int>
+ <string key="NSFrame">{{42, 34}, {301, 25}}</string>
+ <reference key="NSSuperview" ref="929379"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSSliderCell" key="NSCell" id="84127609">
+ <int key="NSCellFlags">67501824</int>
+ <int key="NSCellFlags2">0</int>
+ <object class="NSMutableString" key="NSContents">
+ <characters key="NS.bytes"/>
+ </object>
+ <object class="NSFont" key="NSSupport">
+ <string key="NSName">Helvetica</string>
+ <double key="NSSize">1.200000e+01</double>
+ <int key="NSfFlags">16</int>
+ </object>
+ <reference key="NSControlView" ref="373804676"/>
+ <double key="NSMaxValue">1.000000e+05</double>
+ <double key="NSMinValue">0.000000e+00</double>
+ <double key="NSValue">2.484663e+04</double>
+ <double key="NSAltIncValue">0.000000e+00</double>
+ <int key="NSNumberOfTickMarks">8</int>
+ <int key="NSTickMarkPosition">0</int>
+ <bool key="NSAllowsTickMarkValuesOnly">NO</bool>
+ <bool key="NSVertical">NO</bool>
+ </object>
+ </object>
+ <object class="NSButton" id="910622795">
+ <reference key="NSNextResponder" ref="929379"/>
+ <int key="NSvFlags">268</int>
+ <string key="NSFrame">{{24, 86}, {303, 18}}</string>
+ <reference key="NSSuperview" ref="929379"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSButtonCell" key="NSCell" id="878349972">
+ <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags2">0</int>
+ <string key="NSContents">Get tickets without IP addresses (NAT mode)</string>
+ <reference key="NSSupport" ref="604532625"/>
+ <reference key="NSControlView" ref="910622795"/>
+ <int key="NSButtonFlags">1211912703</int>
+ <int key="NSButtonFlags2">2</int>
+ <object class="NSButtonImageSource" key="NSAlternateImage" id="565361234">
+ <string key="NSImageName">NSSwitch</string>
+ </object>
+ <string key="NSAlternateContents"/>
+ <string key="NSKeyEquivalent"/>
+ <int key="NSPeriodicDelay">200</int>
+ <int key="NSPeriodicInterval">25</int>
+ </object>
+ </object>
+ <object class="NSButton" id="415869872">
+ <reference key="NSNextResponder" ref="929379"/>
+ <int key="NSvFlags">268</int>
+ <string key="NSFrame">{{24, 108}, {351, 18}}</string>
+ <reference key="NSSuperview" ref="929379"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSButtonCell" key="NSCell" id="77611886">
+ <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags2">0</int>
+ <string key="NSContents">Get tickets that can be forwarded to other machines</string>
+ <reference key="NSSupport" ref="604532625"/>
+ <reference key="NSControlView" ref="415869872"/>
+ <int key="NSButtonFlags">1211912703</int>
+ <int key="NSButtonFlags2">2</int>
+ <reference key="NSAlternateImage" ref="565361234"/>
+ <string key="NSAlternateContents"/>
+ <string key="NSKeyEquivalent"/>
+ <int key="NSPeriodicDelay">200</int>
+ <int key="NSPeriodicInterval">25</int>
+ </object>
+ </object>
+ <object class="NSButton" id="606962746">
+ <reference key="NSNextResponder" ref="929379"/>
+ <int key="NSvFlags">268</int>
+ <string key="NSFrame">{{24, 64}, {248, 18}}</string>
+ <reference key="NSSuperview" ref="929379"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSButtonCell" key="NSCell" id="583273626">
+ <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags2">0</int>
+ <string key="NSContents">Get tickets that can be renewed for:</string>
+ <reference key="NSSupport" ref="604532625"/>
+ <reference key="NSControlView" ref="606962746"/>
+ <int key="NSButtonFlags">1211912703</int>
+ <int key="NSButtonFlags2">2</int>
+ <reference key="NSAlternateImage" ref="565361234"/>
+ <string key="NSAlternateContents"/>
+ <string key="NSKeyEquivalent"/>
+ <int key="NSPeriodicDelay">200</int>
+ <int key="NSPeriodicInterval">25</int>
+ </object>
+ </object>
+ <object class="NSTextField" id="956800130">
+ <reference key="NSNextResponder" ref="929379"/>
+ <int key="NSvFlags">266</int>
+ <string key="NSFrame">{{41, 12}, {303, 14}}</string>
+ <reference key="NSSuperview" ref="929379"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSTextFieldCell" key="NSCell" id="596249502">
+ <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags2">4325376</int>
+ <string key="NSContents">6 days, 17 hours, 45 minutes</string>
+ <reference key="NSSupport" ref="26"/>
+ <reference key="NSControlView" ref="956800130"/>
+ <reference key="NSBackgroundColor" ref="876444531"/>
+ <reference key="NSTextColor" ref="883746258"/>
+ </object>
+ </object>
+ </object>
+ <string key="NSFrame">{{3, 3}, {387, 238}}</string>
+ <reference key="NSSuperview" ref="282101470"/>
+ </object>
+ </object>
+ <string key="NSFrame">{{17, 56}, {393, 244}}</string>
+ <reference key="NSSuperview" ref="1019868804"/>
+ <string key="NSOffsets">{0, 0}</string>
+ <object class="NSTextFieldCell" key="NSTitleCell">
+ <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags2">0</int>
+ <string key="NSContents">Ticket Options</string>
+ <reference key="NSSupport" ref="445233186"/>
+ <reference key="NSBackgroundColor" ref="830301085"/>
+ <object class="NSColor" key="NSTextColor">
+ <int key="NSColorSpace">3</int>
+ <bytes key="NSWhite">MCAwLjgwMDAwMDAxAA</bytes>
+ </object>
+ </object>
+ <reference key="NSContentView" ref="929379"/>
+ <int key="NSBorderType">2</int>
+ <int key="NSBoxType">1</int>
+ <int key="NSTitlePosition">0</int>
+ <bool key="NSTransparent">NO</bool>
+ </object>
+ <object class="NSButton" id="932240937">
+ <reference key="NSNextResponder" ref="1019868804"/>
+ <int key="NSvFlags">289</int>
+ <string key="NSFrame">{{331, 12}, {82, 32}}</string>
+ <reference key="NSSuperview" ref="1019868804"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSButtonCell" key="NSCell" id="870649207">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">134217728</int>
- <string key="NSContents">Select</string>
+ <string key="NSContents">OK</string>
<reference key="NSSupport" ref="604532625"/>
- <reference key="NSControlView" ref="426244837"/>
+ <reference key="NSControlView" ref="932240937"/>
<int key="NSButtonFlags">-2038284033</int>
- <int key="NSButtonFlags2">1</int>
- <reference key="NSAlternateImage" ref="604532625"/>
+ <int key="NSButtonFlags2">129</int>
<string key="NSAlternateContents"/>
<string type="base64-UTF8" key="NSKeyEquivalent">DQ</string>
<int key="NSPeriodicDelay">200</int>
<int key="NSPeriodicInterval">25</int>
</object>
</object>
- <object class="NSButton" id="505388869">
- <reference key="NSNextResponder" ref="928852707"/>
+ <object class="NSButton" id="871834199">
+ <reference key="NSNextResponder" ref="1019868804"/>
<int key="NSvFlags">289</int>
- <string key="NSFrame">{{308, 12}, {82, 32}}</string>
- <reference key="NSSuperview" ref="928852707"/>
+ <string key="NSFrame">{{249, 12}, {82, 32}}</string>
+ <reference key="NSSuperview" ref="1019868804"/>
<bool key="NSEnabled">YES</bool>
- <object class="NSButtonCell" key="NSCell" id="720384657">
+ <object class="NSButtonCell" key="NSCell" id="754483226">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">134217728</int>
<string key="NSContents">Cancel</string>
<reference key="NSSupport" ref="604532625"/>
- <reference key="NSControlView" ref="505388869"/>
+ <reference key="NSControlView" ref="871834199"/>
<int key="NSButtonFlags">-2038284033</int>
- <int key="NSButtonFlags2">1</int>
- <reference key="NSAlternateImage" ref="604532625"/>
+ <int key="NSButtonFlags2">129</int>
<string key="NSAlternateContents"/>
<string type="base64-UTF8" key="NSKeyEquivalent">Gw</string>
<int key="NSPeriodicDelay">200</int>
<int key="NSPeriodicInterval">25</int>
</object>
</object>
- <object class="NSButton" id="818868322">
- <reference key="NSNextResponder" ref="928852707"/>
- <int key="NSvFlags">292</int>
- <string key="NSFrame">{{43, 30}, {22, 22}}</string>
- <reference key="NSSuperview" ref="928852707"/>
+ <object class="NSButton" id="669516699">
+ <reference key="NSNextResponder" ref="1019868804"/>
+ <int key="NSvFlags">289</int>
+ <string key="NSFrame">{{129, 12}, {120, 32}}</string>
+ <reference key="NSSuperview" ref="1019868804"/>
<bool key="NSEnabled">YES</bool>
- <object class="NSButtonCell" key="NSCell" id="872529405">
+ <object class="NSButtonCell" key="NSCell" id="362266618">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">134217728</int>
- <string key="NSContents"/>
+ <string key="NSContents">Use Defaults</string>
<reference key="NSSupport" ref="604532625"/>
- <reference key="NSControlView" ref="818868322"/>
- <int key="NSButtonFlags">-2042347265</int>
- <int key="NSButtonFlags2">134</int>
- <object class="NSCustomResource" key="NSNormalImage">
- <string key="NSClassName">NSImage</string>
- <string key="NSResourceName">Remove</string>
- </object>
- <object class="NSCustomResource" key="NSAlternateImage">
- <string key="NSClassName">NSImage</string>
- <string key="NSResourceName">Remove_Pressed</string>
- </object>
+ <reference key="NSControlView" ref="669516699"/>
+ <int key="NSButtonFlags">-2038284033</int>
+ <int key="NSButtonFlags2">129</int>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
- <int key="NSPeriodicDelay">400</int>
- <int key="NSPeriodicInterval">75</int>
+ <int key="NSPeriodicDelay">200</int>
+ <int key="NSPeriodicInterval">25</int>
</object>
</object>
- <object class="NSButton" id="774532696">
- <reference key="NSNextResponder" ref="928852707"/>
- <int key="NSvFlags">292</int>
- <string key="NSFrame">{{20, 30}, {23, 22}}</string>
- <reference key="NSSuperview" ref="928852707"/>
+ <object class="NSTextField" id="958176038">
+ <reference key="NSNextResponder" ref="1019868804"/>
+ <int key="NSvFlags">-2147483380</int>
+ <string key="NSFrame">{{66, 338}, {344, 17}}</string>
+ <reference key="NSSuperview" ref="1019868804"/>
<bool key="NSEnabled">YES</bool>
- <object class="NSButtonCell" key="NSCell" id="958553500">
- <int key="NSCellFlags">67239424</int>
- <int key="NSCellFlags2">134217728</int>
- <string key="NSContents"/>
+ <object class="NSTextFieldCell" key="NSCell" id="196100637">
+ <int key="NSCellFlags">68288064</int>
+ <int key="NSCellFlags2">272630784</int>
+ <string key="NSContents">Label</string>
<reference key="NSSupport" ref="604532625"/>
- <reference key="NSControlView" ref="774532696"/>
- <int key="NSButtonFlags">-2042347265</int>
- <int key="NSButtonFlags2">134</int>
- <object class="NSCustomResource" key="NSNormalImage">
- <string key="NSClassName">NSImage</string>
- <string key="NSResourceName">Add</string>
- </object>
- <object class="NSCustomResource" key="NSAlternateImage">
- <string key="NSClassName">NSImage</string>
- <string key="NSResourceName">Add_Pressed</string>
- </object>
- <string key="NSAlternateContents"/>
- <string key="NSKeyEquivalent"/>
- <int key="NSPeriodicDelay">400</int>
- <int key="NSPeriodicInterval">75</int>
+ <reference key="NSControlView" ref="958176038"/>
+ <reference key="NSBackgroundColor" ref="876444531"/>
+ <reference key="NSTextColor" ref="883746258"/>
</object>
</object>
- <object class="NSCustomView" id="700535463">
- <reference key="NSNextResponder" ref="928852707"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{20, 231}, {64, 64}}</string>
- <reference key="NSSuperview" ref="928852707"/>
- <string key="NSClassName">BadgedImageView</string>
+ <object class="NSTextField" id="546844125">
+ <reference key="NSNextResponder" ref="1019868804"/>
+ <int key="NSvFlags">-2147483380</int>
+ <string key="NSFrame">{{66, 308}, {344, 17}}</string>
+ <reference key="NSSuperview" ref="1019868804"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSTextFieldCell" key="NSCell" id="725579124">
+ <int key="NSCellFlags">68288064</int>
+ <int key="NSCellFlags2">272630784</int>
+ <string key="NSContents">Label</string>
+ <reference key="NSSupport" ref="604532625"/>
+ <reference key="NSControlView" ref="546844125"/>
+ <reference key="NSBackgroundColor" ref="876444531"/>
+ <reference key="NSTextColor" ref="883746258"/>
+ </object>
</object>
</object>
- <string key="NSFrameSize">{491, 315}</string>
+ <string key="NSFrameSize">{427, 378}</string>
<reference key="NSSuperview"/>
</object>
- <string key="NSScreenRect">{{0, 0}, {1920, 1178}}</string>
- <string key="NSMinSize">{419, 320}</string>
- <string key="NSMaxSize">{600, 622}</string>
+ <string key="NSScreenRect">{{0, 0}, {1280, 778}}</string>
+ <string key="NSMaxSize">{3.40282e+38, 3.40282e+38}</string>
</object>
- <object class="NSArrayController" id="333357907">
+ <object class="NSObjectController" id="196152721">
<object class="NSMutableArray" key="NSDeclaredKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
- <string>timeRemaining</string>
- <string>principal</string>
- <string>isFavorite</string>
- <string>description</string>
- <string>expirationDate</string>
+ <string>realmString</string>
+ <string>isForwardable</string>
+ <string>isProxiable</string>
+ <string>isRenewable</string>
+ <string>renewableLifetime</string>
+ <string>componentsString</string>
+ <string>favorite</string>
+ <string>isAddressless</string>
+ <string>validLifetime</string>
+ <string>renewableLifetimeString</string>
+ <string>validLifetimeString</string>
+ <string>hasCCache</string>
</object>
+ <string key="NSObjectClassName">Identity</string>
<bool key="NSEditable">YES</bool>
<object class="_NSManagedProxy" key="_NSManagedProxy"/>
- <bool key="NSAvoidsEmptySelection">YES</bool>
- <bool key="NSPreservesSelection">YES</bool>
- <bool key="NSSelectsInsertedObjects">YES</bool>
- <bool key="NSFilterRestrictsInsertion">YES</bool>
- <bool key="NSClearsFilterPredicateOnInsertion">YES</bool>
</object>
- <object class="NSCustomObject" id="307777557">
- <string key="NSClassName">KerberosTimeFormatter</string>
+ <object class="NSObjectController" id="1031761104">
+ <object class="NSMutableArray" key="NSDeclaredKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>minimumValidLifetime</string>
+ <string>maximumValidLifetime</string>
+ <string>minimumRenewableLifetime</string>
+ <string>maximumRenewableLifetime</string>
+ <string>favorite</string>
+ <string>identities</string>
+ </object>
+ <string key="NSObjectClassName">Identities</string>
+ <object class="_NSManagedProxy" key="_NSManagedProxy"/>
</object>
</object>
<object class="IBObjectContainer" key="IBDocument.Objects">
@@ -419,14 +949,6 @@
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
- <string key="label">identityTableColumn</string>
- <reference key="source" ref="262677138"/>
- <reference key="destination" ref="697375404"/>
- </object>
- <int key="connectionID">300157</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBOutletConnection" key="connection">
<string key="label">kerberosIconImageView</string>
<reference key="source" ref="262677138"/>
<reference key="destination" ref="700535463"/>
@@ -435,22 +957,6 @@
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
- <string key="label">timeRemainingTableColumn</string>
- <reference key="source" ref="262677138"/>
- <reference key="destination" ref="1004662124"/>
- </object>
- <int key="connectionID">300159</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBOutletConnection" key="connection">
- <string key="label">removeIdentityButton</string>
- <reference key="source" ref="262677138"/>
- <reference key="destination" ref="818868322"/>
- </object>
- <int key="connectionID">300161</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBOutletConnection" key="connection">
<string key="label">headerTextField</string>
<reference key="source" ref="262677138"/>
<reference key="destination" ref="499468804"/>
@@ -475,14 +981,6 @@
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
- <string key="label">addIdentityButton</string>
- <reference key="source" ref="262677138"/>
- <reference key="destination" ref="774532696"/>
- </object>
- <int key="connectionID">300166</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBOutletConnection" key="connection">
<string key="label">selectIdentityButton</string>
<reference key="source" ref="262677138"/>
<reference key="destination" ref="426244837"/>
@@ -491,14 +989,6 @@
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
- <string key="label">select:</string>
- <reference key="source" ref="262677138"/>
- <reference key="destination" ref="426244837"/>
- </object>
- <int key="connectionID">300168</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
<string key="label">cancel:</string>
<reference key="source" ref="262677138"/>
<reference key="destination" ref="505388869"/>
@@ -507,43 +997,51 @@
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
- <string key="label">identityTableView</string>
+ <string key="label">window</string>
<reference key="source" ref="262677138"/>
- <reference key="destination" ref="988096643"/>
+ <reference key="destination" ref="224590347"/>
</object>
- <int key="connectionID">300172</int>
+ <int key="connectionID">300181</int>
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
- <string key="label">delegate</string>
- <reference key="source" ref="224590347"/>
- <reference key="destination" ref="262677138"/>
+ <string key="label">identityArrayController</string>
+ <reference key="source" ref="262677138"/>
+ <reference key="destination" ref="333357907"/>
</object>
- <int key="connectionID">300174</int>
+ <int key="connectionID">300184</int>
</object>
<object class="IBConnectionRecord">
- <object class="IBOutletConnection" key="connection">
- <string key="label">window</string>
- <reference key="source" ref="262677138"/>
- <reference key="destination" ref="224590347"/>
+ <object class="IBBindingConnection" key="connection">
+ <string key="label">enabled: canAdd</string>
+ <reference key="source" ref="949861041"/>
+ <reference key="destination" ref="333357907"/>
+ <object class="NSNibBindingConnector" key="connector">
+ <reference key="NSSource" ref="949861041"/>
+ <reference key="NSDestination" ref="333357907"/>
+ <string key="NSLabel">enabled: canAdd</string>
+ <string key="NSBinding">enabled</string>
+ <string key="NSKeyPath">canAdd</string>
+ <int key="NSNibBindingConnectorVersion">2</int>
+ </object>
</object>
- <int key="connectionID">300181</int>
+ <int key="connectionID">300210</int>
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
- <string key="label">identityArrayController</string>
+ <string key="label">addIdentityButton</string>
<reference key="source" ref="262677138"/>
- <reference key="destination" ref="333357907"/>
+ <reference key="destination" ref="949861041"/>
</object>
- <int key="connectionID">300184</int>
+ <int key="connectionID">300214</int>
</object>
<object class="IBConnectionRecord">
<object class="IBBindingConnection" key="connection">
<string key="label">content: arrangedObjects</string>
- <reference key="source" ref="988096643"/>
+ <reference key="source" ref="631507655"/>
<reference key="destination" ref="333357907"/>
<object class="NSNibBindingConnector" key="connector" id="355877009">
- <reference key="NSSource" ref="988096643"/>
+ <reference key="NSSource" ref="631507655"/>
<reference key="NSDestination" ref="333357907"/>
<string key="NSLabel">content: arrangedObjects</string>
<string key="NSBinding">content</string>
@@ -551,116 +1049,609 @@
<int key="NSNibBindingConnectorVersion">2</int>
</object>
</object>
- <int key="connectionID">300185</int>
+ <int key="connectionID">300229</int>
</object>
<object class="IBConnectionRecord">
<object class="IBBindingConnection" key="connection">
- <string key="label">value: arrangedObjects.principal</string>
- <reference key="source" ref="697375404"/>
+ <string key="label">selectionIndexes: selectionIndexes</string>
+ <reference key="source" ref="631507655"/>
+ <reference key="destination" ref="333357907"/>
+ <object class="NSNibBindingConnector" key="connector" id="824847554">
+ <reference key="NSSource" ref="631507655"/>
+ <reference key="NSDestination" ref="333357907"/>
+ <string key="NSLabel">selectionIndexes: selectionIndexes</string>
+ <string key="NSBinding">selectionIndexes</string>
+ <string key="NSKeyPath">selectionIndexes</string>
+ <reference key="NSPreviousConnector" ref="355877009"/>
+ <int key="NSNibBindingConnectorVersion">2</int>
+ </object>
+ </object>
+ <int key="connectionID">300230</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">formatter</string>
+ <reference key="source" ref="519561276"/>
+ <reference key="destination" ref="307777557"/>
+ </object>
+ <int key="connectionID">300242</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">formatter</string>
+ <reference key="source" ref="968276158"/>
+ <reference key="destination" ref="355705187"/>
+ </object>
+ <int key="connectionID">300245</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBBindingConnection" key="connection">
+ <string key="label">value: arrangedObjects.principalString</string>
+ <reference key="source" ref="1025403577"/>
<reference key="destination" ref="333357907"/>
<object class="NSNibBindingConnector" key="connector">
- <reference key="NSSource" ref="697375404"/>
+ <reference key="NSSource" ref="1025403577"/>
<reference key="NSDestination" ref="333357907"/>
- <string key="NSLabel">value: arrangedObjects.principal</string>
+ <string key="NSLabel">value: arrangedObjects.principalString</string>
<string key="NSBinding">value</string>
- <string key="NSKeyPath">arrangedObjects.principal</string>
+ <string key="NSKeyPath">arrangedObjects.principalString</string>
+ <object class="NSDictionary" key="NSOptions">
+ <string key="NS.key.0">NSConditionallySetsEditable</string>
+ <integer value="1" key="NS.object.0" id="9"/>
+ </object>
<int key="NSNibBindingConnectorVersion">2</int>
</object>
</object>
- <int key="connectionID">300187</int>
+ <int key="connectionID">300246</int>
</object>
<object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">remove:</string>
- <reference key="source" ref="333357907"/>
- <reference key="destination" ref="818868322"/>
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">delegate</string>
+ <reference key="source" ref="224590347"/>
+ <reference key="destination" ref="262677138"/>
</object>
- <int key="connectionID">300189</int>
+ <int key="connectionID">300251</int>
</object>
<object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">insert:</string>
- <reference key="source" ref="333357907"/>
- <reference key="destination" ref="774532696"/>
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">identityTableView</string>
+ <reference key="source" ref="262677138"/>
+ <reference key="destination" ref="631507655"/>
</object>
- <int key="connectionID">300191</int>
+ <int key="connectionID">300252</int>
</object>
<object class="IBConnectionRecord">
- <object class="IBOutletConnection" key="connection">
- <string key="label">formatter</string>
- <reference key="source" ref="618557697"/>
- <reference key="destination" ref="307777557"/>
+ <object class="IBActionConnection" key="connection">
+ <string key="label">cancel:</string>
+ <reference key="source" ref="262677138"/>
+ <reference key="destination" ref="968276158"/>
</object>
- <int key="connectionID">300197</int>
+ <int key="connectionID">300253</int>
</object>
<object class="IBConnectionRecord">
<object class="IBBindingConnection" key="connection">
<string key="label">value: arrangedObjects.expirationDate</string>
- <reference key="source" ref="1004662124"/>
+ <reference key="source" ref="917941739"/>
<reference key="destination" ref="333357907"/>
<object class="NSNibBindingConnector" key="connector">
- <reference key="NSSource" ref="1004662124"/>
+ <reference key="NSSource" ref="917941739"/>
<reference key="NSDestination" ref="333357907"/>
<string key="NSLabel">value: arrangedObjects.expirationDate</string>
<string key="NSBinding">value</string>
<string key="NSKeyPath">arrangedObjects.expirationDate</string>
<object class="NSDictionary" key="NSOptions">
<string key="NS.key.0">NSConditionallySetsEditable</string>
- <integer value="0" key="NS.object.0"/>
+ <reference key="NS.object.0" ref="9"/>
</object>
<int key="NSNibBindingConnectorVersion">2</int>
</object>
</object>
- <int key="connectionID">300198</int>
+ <int key="connectionID">300255</int>
</object>
<object class="IBConnectionRecord">
<object class="IBBindingConnection" key="connection">
- <string key="label">selectionIndexes: selectionIndexes</string>
- <reference key="source" ref="988096643"/>
+ <string key="label">sortDescriptors: sortDescriptors</string>
+ <reference key="source" ref="631507655"/>
<reference key="destination" ref="333357907"/>
<object class="NSNibBindingConnector" key="connector">
- <reference key="NSSource" ref="988096643"/>
+ <reference key="NSSource" ref="631507655"/>
<reference key="NSDestination" ref="333357907"/>
- <string key="NSLabel">selectionIndexes: selectionIndexes</string>
- <string key="NSBinding">selectionIndexes</string>
- <string key="NSKeyPath">selectionIndexes</string>
- <reference key="NSPreviousConnector" ref="355877009"/>
+ <string key="NSLabel">sortDescriptors: sortDescriptors</string>
+ <string key="NSBinding">sortDescriptors</string>
+ <string key="NSKeyPath">sortDescriptors</string>
+ <reference key="NSPreviousConnector" ref="824847554"/>
+ <int key="NSNibBindingConnectorVersion">2</int>
+ </object>
+ </object>
+ <int key="connectionID">300259</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">select:</string>
+ <reference key="source" ref="262677138"/>
+ <reference key="destination" ref="426244837"/>
+ </object>
+ <int key="connectionID">300293</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">delegate</string>
+ <reference key="source" ref="54325332"/>
+ <reference key="destination" ref="552234083"/>
+ </object>
+ <int key="connectionID">300325</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">delegate</string>
+ <reference key="source" ref="956800130"/>
+ <reference key="destination" ref="373804676"/>
+ </object>
+ <int key="connectionID">300328</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBBindingConnection" key="connection">
+ <string key="label">enabled: selection.isRenewable</string>
+ <reference key="source" ref="373804676"/>
+ <reference key="destination" ref="196152721"/>
+ <object class="NSNibBindingConnector" key="connector">
+ <reference key="NSSource" ref="373804676"/>
+ <reference key="NSDestination" ref="196152721"/>
+ <string key="NSLabel">enabled: selection.isRenewable</string>
+ <string key="NSBinding">enabled</string>
+ <string key="NSKeyPath">selection.isRenewable</string>
<int key="NSNibBindingConnectorVersion">2</int>
</object>
</object>
- <int key="connectionID">300199</int>
+ <int key="connectionID">300356</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">identityOptionsController</string>
+ <reference key="source" ref="262677138"/>
+ <reference key="destination" ref="196152721"/>
+ </object>
+ <int key="connectionID">300357</int>
</object>
<object class="IBConnectionRecord">
<object class="IBBindingConnection" key="connection">
- <string key="label">enabled: canRemove</string>
- <reference key="source" ref="818868322"/>
+ <string key="label">value: selection.isRenewable</string>
+ <reference key="source" ref="606962746"/>
+ <reference key="destination" ref="196152721"/>
+ <object class="NSNibBindingConnector" key="connector">
+ <reference key="NSSource" ref="606962746"/>
+ <reference key="NSDestination" ref="196152721"/>
+ <string key="NSLabel">value: selection.isRenewable</string>
+ <string key="NSBinding">value</string>
+ <string key="NSKeyPath">selection.isRenewable</string>
+ <int key="NSNibBindingConnectorVersion">2</int>
+ </object>
+ </object>
+ <int key="connectionID">300366</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBBindingConnection" key="connection">
+ <string key="label">value: arrangedObjects.favorite</string>
+ <reference key="source" ref="850969979"/>
<reference key="destination" ref="333357907"/>
<object class="NSNibBindingConnector" key="connector">
- <reference key="NSSource" ref="818868322"/>
+ <reference key="NSSource" ref="850969979"/>
<reference key="NSDestination" ref="333357907"/>
- <string key="NSLabel">enabled: canRemove</string>
- <string key="NSBinding">enabled</string>
- <string key="NSKeyPath">canRemove</string>
+ <string key="NSLabel">value: arrangedObjects.favorite</string>
+ <string key="NSBinding">value</string>
+ <string key="NSKeyPath">arrangedObjects.favorite</string>
+ <int key="NSNibBindingConnectorVersion">2</int>
+ </object>
+ </object>
+ <int key="connectionID">300367</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBBindingConnection" key="connection">
+ <string key="label">value: selection.isForwardable</string>
+ <reference key="source" ref="415869872"/>
+ <reference key="destination" ref="196152721"/>
+ <object class="NSNibBindingConnector" key="connector">
+ <reference key="NSSource" ref="415869872"/>
+ <reference key="NSDestination" ref="196152721"/>
+ <string key="NSLabel">value: selection.isForwardable</string>
+ <string key="NSBinding">value</string>
+ <string key="NSKeyPath">selection.isForwardable</string>
+ <int key="NSNibBindingConnectorVersion">2</int>
+ </object>
+ </object>
+ <int key="connectionID">300368</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBBindingConnection" key="connection">
+ <string key="label">value: selection.isAddressless</string>
+ <reference key="source" ref="910622795"/>
+ <reference key="destination" ref="196152721"/>
+ <object class="NSNibBindingConnector" key="connector">
+ <reference key="NSSource" ref="910622795"/>
+ <reference key="NSDestination" ref="196152721"/>
+ <string key="NSLabel">value: selection.isAddressless</string>
+ <string key="NSBinding">value</string>
+ <string key="NSKeyPath">selection.isAddressless</string>
+ <int key="NSNibBindingConnectorVersion">2</int>
+ </object>
+ </object>
+ <int key="connectionID">300369</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBBindingConnection" key="connection">
+ <string key="label">maxValue: selection.maximumValidLifetime</string>
+ <reference key="source" ref="552234083"/>
+ <reference key="destination" ref="1031761104"/>
+ <object class="NSNibBindingConnector" key="connector" id="716397596">
+ <reference key="NSSource" ref="552234083"/>
+ <reference key="NSDestination" ref="1031761104"/>
+ <string key="NSLabel">maxValue: selection.maximumValidLifetime</string>
+ <string key="NSBinding">maxValue</string>
+ <string key="NSKeyPath">selection.maximumValidLifetime</string>
+ <int key="NSNibBindingConnectorVersion">2</int>
+ </object>
+ </object>
+ <int key="connectionID">300372</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBBindingConnection" key="connection">
+ <string key="label">minValue: selection.minimumValidLifetime</string>
+ <reference key="source" ref="552234083"/>
+ <reference key="destination" ref="1031761104"/>
+ <object class="NSNibBindingConnector" key="connector" id="445222138">
+ <reference key="NSSource" ref="552234083"/>
+ <reference key="NSDestination" ref="1031761104"/>
+ <string key="NSLabel">minValue: selection.minimumValidLifetime</string>
+ <string key="NSBinding">minValue</string>
+ <string key="NSKeyPath">selection.minimumValidLifetime</string>
+ <reference key="NSPreviousConnector" ref="716397596"/>
+ <int key="NSNibBindingConnectorVersion">2</int>
+ </object>
+ </object>
+ <int key="connectionID">300373</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBBindingConnection" key="connection">
+ <string key="label">value: selection.validLifetime</string>
+ <reference key="source" ref="552234083"/>
+ <reference key="destination" ref="196152721"/>
+ <object class="NSNibBindingConnector" key="connector">
+ <reference key="NSSource" ref="552234083"/>
+ <reference key="NSDestination" ref="196152721"/>
+ <string key="NSLabel">value: selection.validLifetime</string>
+ <string key="NSBinding">value</string>
+ <string key="NSKeyPath">selection.validLifetime</string>
+ <reference key="NSPreviousConnector" ref="445222138"/>
+ <int key="NSNibBindingConnectorVersion">2</int>
+ </object>
+ </object>
+ <int key="connectionID">300378</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">identitiesController</string>
+ <reference key="source" ref="262677138"/>
+ <reference key="destination" ref="1031761104"/>
+ </object>
+ <int key="connectionID">300380</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBBindingConnection" key="connection">
+ <string key="label">maxValue: selection.maximumRenewableLifetime</string>
+ <reference key="source" ref="373804676"/>
+ <reference key="destination" ref="1031761104"/>
+ <object class="NSNibBindingConnector" key="connector" id="436583425">
+ <reference key="NSSource" ref="373804676"/>
+ <reference key="NSDestination" ref="1031761104"/>
+ <string key="NSLabel">maxValue: selection.maximumRenewableLifetime</string>
+ <string key="NSBinding">maxValue</string>
+ <string key="NSKeyPath">selection.maximumRenewableLifetime</string>
+ <int key="NSNibBindingConnectorVersion">2</int>
+ </object>
+ </object>
+ <int key="connectionID">300381</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBBindingConnection" key="connection">
+ <string key="label">minValue: selection.minimumRenewableLifetime</string>
+ <reference key="source" ref="373804676"/>
+ <reference key="destination" ref="1031761104"/>
+ <object class="NSNibBindingConnector" key="connector" id="601981852">
+ <reference key="NSSource" ref="373804676"/>
+ <reference key="NSDestination" ref="1031761104"/>
+ <string key="NSLabel">minValue: selection.minimumRenewableLifetime</string>
+ <string key="NSBinding">minValue</string>
+ <string key="NSKeyPath">selection.minimumRenewableLifetime</string>
+ <reference key="NSPreviousConnector" ref="436583425"/>
+ <int key="NSNibBindingConnectorVersion">2</int>
+ </object>
+ </object>
+ <int key="connectionID">300384</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBBindingConnection" key="connection">
+ <string key="label">value: selection.renewableLifetime</string>
+ <reference key="source" ref="373804676"/>
+ <reference key="destination" ref="196152721"/>
+ <object class="NSNibBindingConnector" key="connector">
+ <reference key="NSSource" ref="373804676"/>
+ <reference key="NSDestination" ref="196152721"/>
+ <string key="NSLabel">value: selection.renewableLifetime</string>
+ <string key="NSBinding">value</string>
+ <string key="NSKeyPath">selection.renewableLifetime</string>
+ <reference key="NSPreviousConnector" ref="601981852"/>
+ <int key="NSNibBindingConnectorVersion">2</int>
+ </object>
+ </object>
+ <int key="connectionID">300385</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBBindingConnection" key="connection">
+ <string key="label">value: selection.renewableLifetimeString</string>
+ <reference key="source" ref="956800130"/>
+ <reference key="destination" ref="196152721"/>
+ <object class="NSNibBindingConnector" key="connector">
+ <reference key="NSSource" ref="956800130"/>
+ <reference key="NSDestination" ref="196152721"/>
+ <string key="NSLabel">value: selection.renewableLifetimeString</string>
+ <string key="NSBinding">value</string>
+ <string key="NSKeyPath">selection.renewableLifetimeString</string>
<int key="NSNibBindingConnectorVersion">2</int>
</object>
</object>
- <int key="connectionID">300200</int>
+ <int key="connectionID">300386</int>
</object>
<object class="IBConnectionRecord">
<object class="IBBindingConnection" key="connection">
- <string key="label">enabled: canInsert</string>
- <reference key="source" ref="774532696"/>
+ <string key="label">value: selection.validLifetimeString</string>
+ <reference key="source" ref="54325332"/>
+ <reference key="destination" ref="196152721"/>
+ <object class="NSNibBindingConnector" key="connector">
+ <reference key="NSSource" ref="54325332"/>
+ <reference key="NSDestination" ref="196152721"/>
+ <string key="NSLabel">value: selection.validLifetimeString</string>
+ <string key="NSBinding">value</string>
+ <string key="NSKeyPath">selection.validLifetimeString</string>
+ <int key="NSNibBindingConnectorVersion">2</int>
+ </object>
+ </object>
+ <int key="connectionID">300388</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">nameField</string>
+ <reference key="source" ref="262677138"/>
+ <reference key="destination" ref="485004197"/>
+ </object>
+ <int key="connectionID">300396</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">realmField</string>
+ <reference key="source" ref="262677138"/>
+ <reference key="destination" ref="623163777"/>
+ </object>
+ <int key="connectionID">300397</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBBindingConnection" key="connection">
+ <string key="label">value: selection.componentsString</string>
+ <reference key="source" ref="958176038"/>
+ <reference key="destination" ref="196152721"/>
+ <object class="NSNibBindingConnector" key="connector">
+ <reference key="NSSource" ref="958176038"/>
+ <reference key="NSDestination" ref="196152721"/>
+ <string key="NSLabel">value: selection.componentsString</string>
+ <string key="NSBinding">value</string>
+ <string key="NSKeyPath">selection.componentsString</string>
+ <int key="NSNibBindingConnectorVersion">2</int>
+ </object>
+ </object>
+ <int key="connectionID">300404</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBBindingConnection" key="connection">
+ <string key="label">value: selection.realmString</string>
+ <reference key="source" ref="546844125"/>
+ <reference key="destination" ref="196152721"/>
+ <object class="NSNibBindingConnector" key="connector">
+ <reference key="NSSource" ref="546844125"/>
+ <reference key="NSDestination" ref="196152721"/>
+ <string key="NSLabel">value: selection.realmString</string>
+ <string key="NSBinding">value</string>
+ <string key="NSKeyPath">selection.realmString</string>
+ <int key="NSNibBindingConnectorVersion">2</int>
+ </object>
+ </object>
+ <int key="connectionID">300411</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBBindingConnection" key="connection">
+ <string key="label">hidden: selection.hasCCache</string>
+ <reference key="source" ref="623163777"/>
+ <reference key="destination" ref="196152721"/>
+ <object class="NSNibBindingConnector" key="connector">
+ <reference key="NSSource" ref="623163777"/>
+ <reference key="NSDestination" ref="196152721"/>
+ <string key="NSLabel">hidden: selection.hasCCache</string>
+ <string key="NSBinding">hidden</string>
+ <string key="NSKeyPath">selection.hasCCache</string>
+ <int key="NSNibBindingConnectorVersion">2</int>
+ </object>
+ </object>
+ <int key="connectionID">300419</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBBindingConnection" key="connection">
+ <string key="label">hidden: selection.hasCCache</string>
+ <reference key="source" ref="546844125"/>
+ <reference key="destination" ref="196152721"/>
+ <object class="NSNibBindingConnector" key="connector">
+ <reference key="NSSource" ref="546844125"/>
+ <reference key="NSDestination" ref="196152721"/>
+ <string key="NSLabel">hidden: selection.hasCCache</string>
+ <string key="NSBinding">hidden</string>
+ <string key="NSKeyPath">selection.hasCCache</string>
+ <object class="NSDictionary" key="NSOptions">
+ <string key="NS.key.0">NSValueTransformerName</string>
+ <string key="NS.object.0">NSNegateBoolean</string>
+ </object>
+ <int key="NSNibBindingConnectorVersion">2</int>
+ </object>
+ </object>
+ <int key="connectionID">300420</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBBindingConnection" key="connection">
+ <string key="label">hidden: selection.hasCCache</string>
+ <reference key="source" ref="958176038"/>
+ <reference key="destination" ref="196152721"/>
+ <object class="NSNibBindingConnector" key="connector">
+ <reference key="NSSource" ref="958176038"/>
+ <reference key="NSDestination" ref="196152721"/>
+ <string key="NSLabel">hidden: selection.hasCCache</string>
+ <string key="NSBinding">hidden</string>
+ <string key="NSKeyPath">selection.hasCCache</string>
+ <object class="NSDictionary" key="NSOptions">
+ <string key="NS.key.0">NSValueTransformerName</string>
+ <string key="NS.object.0">NSNegateBoolean</string>
+ </object>
+ <int key="NSNibBindingConnectorVersion">2</int>
+ </object>
+ </object>
+ <int key="connectionID">300421</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBBindingConnection" key="connection">
+ <string key="label">hidden: selection.hasCCache</string>
+ <reference key="source" ref="485004197"/>
+ <reference key="destination" ref="196152721"/>
+ <object class="NSNibBindingConnector" key="connector">
+ <reference key="NSSource" ref="485004197"/>
+ <reference key="NSDestination" ref="196152721"/>
+ <string key="NSLabel">hidden: selection.hasCCache</string>
+ <string key="NSBinding">hidden</string>
+ <string key="NSKeyPath">selection.hasCCache</string>
+ <int key="NSNibBindingConnectorVersion">2</int>
+ </object>
+ </object>
+ <int key="connectionID">300422</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBBindingConnection" key="connection">
+ <string key="label">hidden: selection.favorite</string>
+ <reference key="source" ref="136217401"/>
<reference key="destination" ref="333357907"/>
<object class="NSNibBindingConnector" key="connector">
- <reference key="NSSource" ref="774532696"/>
+ <reference key="NSSource" ref="136217401"/>
<reference key="NSDestination" ref="333357907"/>
- <string key="NSLabel">enabled: canInsert</string>
- <string key="NSBinding">enabled</string>
- <string key="NSKeyPath">canInsert</string>
+ <string key="NSLabel">hidden: selection.favorite</string>
+ <string key="NSBinding">hidden</string>
+ <string key="NSKeyPath">selection.favorite</string>
+ <int key="NSNibBindingConnectorVersion">2</int>
+ </object>
+ </object>
+ <int key="connectionID">300438</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBBindingConnection" key="connection">
+ <string key="label">hidden: selection.favorite</string>
+ <reference key="source" ref="778570067"/>
+ <reference key="destination" ref="333357907"/>
+ <object class="NSNibBindingConnector" key="connector">
+ <reference key="NSSource" ref="778570067"/>
+ <reference key="NSDestination" ref="333357907"/>
+ <string key="NSLabel">hidden: selection.favorite</string>
+ <string key="NSBinding">hidden</string>
+ <string key="NSKeyPath">selection.favorite</string>
+ <object class="NSDictionary" key="NSOptions">
+ <string key="NS.key.0">NSValueTransformerName</string>
+ <string key="NS.object.0">NSNegateBoolean</string>
+ </object>
+ <int key="NSNibBindingConnectorVersion">2</int>
+ </object>
+ </object>
+ <int key="connectionID">300440</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">addToFavorites:</string>
+ <reference key="source" ref="262677138"/>
+ <reference key="destination" ref="136217401"/>
+ </object>
+ <int key="connectionID">300441</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">removeFromFavorites:</string>
+ <reference key="source" ref="262677138"/>
+ <reference key="destination" ref="778570067"/>
+ </object>
+ <int key="connectionID">300442</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBBindingConnection" key="connection">
+ <string key="label">contentArray: selection.identities</string>
+ <reference key="source" ref="333357907"/>
+ <reference key="destination" ref="1031761104"/>
+ <object class="NSNibBindingConnector" key="connector">
+ <reference key="NSSource" ref="333357907"/>
+ <reference key="NSDestination" ref="1031761104"/>
+ <string key="NSLabel">contentArray: selection.identities</string>
+ <string key="NSBinding">contentArray</string>
+ <string key="NSKeyPath">selection.identities</string>
<int key="NSNibBindingConnectorVersion">2</int>
</object>
</object>
- <int key="connectionID">300201</int>
+ <int key="connectionID">300444</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">newIdentity:</string>
+ <reference key="source" ref="262677138"/>
+ <reference key="destination" ref="949861041"/>
+ </object>
+ <int key="connectionID">300450</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">identityOptionsWindow</string>
+ <reference key="source" ref="262677138"/>
+ <reference key="destination" ref="370461416"/>
+ </object>
+ <int key="connectionID">300451</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">editOptions:</string>
+ <reference key="source" ref="262677138"/>
+ <reference key="destination" ref="553755370"/>
+ </object>
+ <int key="connectionID">300452</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">cancelOptions:</string>
+ <reference key="source" ref="262677138"/>
+ <reference key="destination" ref="871834199"/>
+ </object>
+ <int key="connectionID">300453</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">resetOptions:</string>
+ <reference key="source" ref="262677138"/>
+ <reference key="destination" ref="669516699"/>
+ </object>
+ <int key="connectionID">300454</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">doneOptions:</string>
+ <reference key="source" ref="262677138"/>
+ <reference key="destination" ref="932240937"/>
+ </object>
+ <int key="connectionID">300455</int>
</object>
</object>
<object class="IBMutableOrderedSet" key="objectRecords">
@@ -702,13 +1693,13 @@
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="499468804"/>
- <reference ref="818868322"/>
- <reference ref="774532696"/>
<reference ref="675887072"/>
<reference ref="505388869"/>
<reference ref="700535463"/>
<reference ref="426244837"/>
- <reference ref="147207906"/>
+ <reference ref="949861041"/>
+ <reference ref="616284695"/>
+ <reference ref="263312988"/>
</object>
<reference key="parent" ref="224590347"/>
</object>
@@ -722,169 +1713,533 @@
<reference key="parent" ref="928852707"/>
</object>
<object class="IBObjectRecord">
- <int key="objectID">9</int>
- <reference key="object" ref="147207906"/>
+ <int key="objectID">15</int>
+ <reference key="object" ref="426244837"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="988096643"/>
- <reference ref="80966883"/>
- <reference ref="564144656"/>
- <reference ref="401017936"/>
+ <reference ref="686991406"/>
</object>
<reference key="parent" ref="928852707"/>
</object>
<object class="IBObjectRecord">
- <int key="objectID">10</int>
- <reference key="object" ref="988096643"/>
+ <int key="objectID">16</int>
+ <reference key="object" ref="505388869"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="697375404"/>
- <reference ref="1004662124"/>
+ <reference ref="720384657"/>
</object>
- <reference key="parent" ref="147207906"/>
+ <reference key="parent" ref="928852707"/>
</object>
<object class="IBObjectRecord">
- <int key="objectID">11</int>
- <reference key="object" ref="697375404"/>
+ <int key="objectID">100008</int>
+ <reference key="object" ref="82820472"/>
+ <reference key="parent" ref="499468804"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">100015</int>
+ <reference key="object" ref="686991406"/>
+ <reference key="parent" ref="426244837"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">100016</int>
+ <reference key="object" ref="720384657"/>
+ <reference key="parent" ref="505388869"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">-3</int>
+ <reference key="object" ref="714830734"/>
+ <reference key="parent" ref="0"/>
+ <string key="objectName">Application</string>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">300118</int>
+ <reference key="object" ref="675887072"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="325541546"/>
+ <reference ref="542766611"/>
</object>
- <reference key="parent" ref="988096643"/>
+ <reference key="parent" ref="928852707"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">300119</int>
+ <reference key="object" ref="542766611"/>
+ <reference key="parent" ref="675887072"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">300156</int>
+ <reference key="object" ref="700535463"/>
+ <reference key="parent" ref="928852707"/>
</object>
<object class="IBObjectRecord">
- <int key="objectID">18</int>
- <reference key="object" ref="1004662124"/>
+ <int key="objectID">300183</int>
+ <reference key="object" ref="333357907"/>
+ <reference key="parent" ref="0"/>
+ <string key="objectName">Identities Array Controller</string>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">300196</int>
+ <reference key="object" ref="307777557"/>
+ <reference key="parent" ref="0"/>
+ <string key="objectName">Time Formatter</string>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">300206</int>
+ <reference key="object" ref="949861041"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="618557697"/>
+ <reference ref="871232847"/>
</object>
- <reference key="parent" ref="988096643"/>
+ <reference key="parent" ref="928852707"/>
</object>
<object class="IBObjectRecord">
- <int key="objectID">15</int>
- <reference key="object" ref="426244837"/>
+ <int key="objectID">300207</int>
+ <reference key="object" ref="871232847"/>
+ <reference key="parent" ref="949861041"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">300216</int>
+ <reference key="object" ref="616284695"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="686991406"/>
+ <reference ref="810829004"/>
+ <reference ref="836592269"/>
+ <reference ref="631507655"/>
+ <reference ref="282626403"/>
</object>
<reference key="parent" ref="928852707"/>
</object>
<object class="IBObjectRecord">
- <int key="objectID">16</int>
- <reference key="object" ref="505388869"/>
+ <int key="objectID">300217</int>
+ <reference key="object" ref="810829004"/>
+ <reference key="parent" ref="616284695"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">300218</int>
+ <reference key="object" ref="836592269"/>
+ <reference key="parent" ref="616284695"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">300219</int>
+ <reference key="object" ref="631507655"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="720384657"/>
+ <reference ref="1025403577"/>
+ <reference ref="917941739"/>
+ <reference ref="850969979"/>
</object>
- <reference key="parent" ref="928852707"/>
+ <reference key="parent" ref="616284695"/>
</object>
<object class="IBObjectRecord">
- <int key="objectID">100008</int>
- <reference key="object" ref="82820472"/>
- <reference key="parent" ref="499468804"/>
+ <int key="objectID">300220</int>
+ <reference key="object" ref="282626403"/>
+ <reference key="parent" ref="616284695"/>
</object>
<object class="IBObjectRecord">
- <int key="objectID">100015</int>
- <reference key="object" ref="686991406"/>
- <reference key="parent" ref="426244837"/>
+ <int key="objectID">300221</int>
+ <reference key="object" ref="1025403577"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="475156882"/>
+ </object>
+ <reference key="parent" ref="631507655"/>
</object>
<object class="IBObjectRecord">
- <int key="objectID">100016</int>
- <reference key="object" ref="720384657"/>
- <reference key="parent" ref="505388869"/>
+ <int key="objectID">300222</int>
+ <reference key="object" ref="917941739"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="519561276"/>
+ </object>
+ <reference key="parent" ref="631507655"/>
</object>
<object class="IBObjectRecord">
- <int key="objectID">100009</int>
- <reference key="object" ref="80966883"/>
- <reference key="parent" ref="147207906"/>
+ <int key="objectID">300223</int>
+ <reference key="object" ref="519561276"/>
+ <reference key="parent" ref="917941739"/>
</object>
<object class="IBObjectRecord">
- <int key="objectID">200009</int>
- <reference key="object" ref="564144656"/>
- <reference key="parent" ref="147207906"/>
+ <int key="objectID">300224</int>
+ <reference key="object" ref="475156882"/>
+ <reference key="parent" ref="1025403577"/>
</object>
<object class="IBObjectRecord">
- <int key="objectID">300009</int>
- <reference key="object" ref="401017936"/>
- <reference key="parent" ref="147207906"/>
+ <int key="objectID">300225</int>
+ <reference key="object" ref="850969979"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="968276158"/>
+ </object>
+ <reference key="parent" ref="631507655"/>
</object>
<object class="IBObjectRecord">
- <int key="objectID">-3</int>
- <reference key="object" ref="714830734"/>
+ <int key="objectID">300226</int>
+ <reference key="object" ref="968276158"/>
+ <reference key="parent" ref="850969979"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">300244</int>
+ <reference key="object" ref="355705187"/>
<reference key="parent" ref="0"/>
- <string key="objectName">Application</string>
+ <string key="objectName">Favorite Formatter</string>
</object>
<object class="IBObjectRecord">
- <int key="objectID">300018</int>
- <reference key="object" ref="325541546"/>
- <reference key="parent" ref="697375404"/>
+ <int key="objectID">300294</int>
+ <reference key="object" ref="370461416"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="1019868804"/>
+ </object>
+ <reference key="parent" ref="0"/>
+ <string key="objectName">Ticket Options Sheet</string>
</object>
<object class="IBObjectRecord">
- <int key="objectID">300019</int>
- <reference key="object" ref="618557697"/>
+ <int key="objectID">300295</int>
+ <reference key="object" ref="1019868804"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="609534695"/>
+ <reference ref="623163777"/>
+ <reference ref="404880622"/>
+ <reference ref="485004197"/>
+ <reference ref="932240937"/>
+ <reference ref="871834199"/>
+ <reference ref="282101470"/>
+ <reference ref="669516699"/>
+ <reference ref="958176038"/>
+ <reference ref="546844125"/>
</object>
- <reference key="parent" ref="1004662124"/>
+ <reference key="parent" ref="370461416"/>
</object>
<object class="IBObjectRecord">
- <int key="objectID">300118</int>
- <reference key="object" ref="675887072"/>
+ <int key="objectID">300296</int>
+ <reference key="object" ref="282101470"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="542766611"/>
+ <reference ref="373804676"/>
+ <reference ref="606962746"/>
+ <reference ref="415869872"/>
+ <reference ref="910622795"/>
+ <reference ref="552234083"/>
+ <reference ref="576071402"/>
+ <reference ref="240805237"/>
+ <reference ref="956800130"/>
+ <reference ref="54325332"/>
</object>
- <reference key="parent" ref="928852707"/>
+ <reference key="parent" ref="1019868804"/>
</object>
<object class="IBObjectRecord">
- <int key="objectID">300119</int>
- <reference key="object" ref="542766611"/>
- <reference key="parent" ref="675887072"/>
+ <int key="objectID">300298</int>
+ <reference key="object" ref="609534695"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="424319976"/>
+ </object>
+ <reference key="parent" ref="1019868804"/>
</object>
<object class="IBObjectRecord">
- <int key="objectID">300152</int>
- <reference key="object" ref="774532696"/>
+ <int key="objectID">300299</int>
+ <reference key="object" ref="623163777"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="958553500"/>
+ <reference ref="327568348"/>
</object>
- <reference key="parent" ref="928852707"/>
+ <reference key="parent" ref="1019868804"/>
</object>
<object class="IBObjectRecord">
- <int key="objectID">300153</int>
- <reference key="object" ref="958553500"/>
- <reference key="parent" ref="774532696"/>
+ <int key="objectID">300300</int>
+ <reference key="object" ref="404880622"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="775341038"/>
+ </object>
+ <reference key="parent" ref="1019868804"/>
</object>
<object class="IBObjectRecord">
- <int key="objectID">300154</int>
- <reference key="object" ref="818868322"/>
+ <int key="objectID">300301</int>
+ <reference key="object" ref="485004197"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="872529405"/>
+ <reference ref="1047482753"/>
</object>
- <reference key="parent" ref="928852707"/>
+ <reference key="parent" ref="1019868804"/>
</object>
<object class="IBObjectRecord">
- <int key="objectID">300155</int>
- <reference key="object" ref="872529405"/>
- <reference key="parent" ref="818868322"/>
+ <int key="objectID">300302</int>
+ <reference key="object" ref="1047482753"/>
+ <reference key="parent" ref="485004197"/>
</object>
<object class="IBObjectRecord">
- <int key="objectID">300156</int>
- <reference key="object" ref="700535463"/>
- <reference key="parent" ref="928852707"/>
+ <int key="objectID">300303</int>
+ <reference key="object" ref="775341038"/>
+ <reference key="parent" ref="404880622"/>
</object>
<object class="IBObjectRecord">
- <int key="objectID">300183</int>
- <reference key="object" ref="333357907"/>
+ <int key="objectID">300304</int>
+ <reference key="object" ref="327568348"/>
+ <reference key="parent" ref="623163777"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">300305</int>
+ <reference key="object" ref="424319976"/>
+ <reference key="parent" ref="609534695"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">300307</int>
+ <reference key="object" ref="373804676"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="84127609"/>
+ </object>
+ <reference key="parent" ref="282101470"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">300308</int>
+ <reference key="object" ref="956800130"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="596249502"/>
+ </object>
+ <reference key="parent" ref="282101470"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">300309</int>
+ <reference key="object" ref="606962746"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="583273626"/>
+ </object>
+ <reference key="parent" ref="282101470"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">300310</int>
+ <reference key="object" ref="415869872"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="77611886"/>
+ </object>
+ <reference key="parent" ref="282101470"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">300311</int>
+ <reference key="object" ref="910622795"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="878349972"/>
+ </object>
+ <reference key="parent" ref="282101470"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">300312</int>
+ <reference key="object" ref="54325332"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="584202005"/>
+ </object>
+ <reference key="parent" ref="282101470"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">300313</int>
+ <reference key="object" ref="552234083"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="629844970"/>
+ </object>
+ <reference key="parent" ref="282101470"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">300314</int>
+ <reference key="object" ref="576071402"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="380679549"/>
+ </object>
+ <reference key="parent" ref="282101470"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">300315</int>
+ <reference key="object" ref="240805237"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="638526338"/>
+ </object>
+ <reference key="parent" ref="282101470"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">300316</int>
+ <reference key="object" ref="638526338"/>
+ <reference key="parent" ref="240805237"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">300317</int>
+ <reference key="object" ref="380679549"/>
+ <reference key="parent" ref="576071402"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">300318</int>
+ <reference key="object" ref="629844970"/>
+ <reference key="parent" ref="552234083"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">300319</int>
+ <reference key="object" ref="584202005"/>
+ <reference key="parent" ref="54325332"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">300320</int>
+ <reference key="object" ref="878349972"/>
+ <reference key="parent" ref="910622795"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">300321</int>
+ <reference key="object" ref="77611886"/>
+ <reference key="parent" ref="415869872"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">300322</int>
+ <reference key="object" ref="583273626"/>
+ <reference key="parent" ref="606962746"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">300323</int>
+ <reference key="object" ref="596249502"/>
+ <reference key="parent" ref="956800130"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">300324</int>
+ <reference key="object" ref="84127609"/>
+ <reference key="parent" ref="373804676"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">300329</int>
+ <reference key="object" ref="932240937"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="870649207"/>
+ </object>
+ <reference key="parent" ref="1019868804"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">300330</int>
+ <reference key="object" ref="870649207"/>
+ <reference key="parent" ref="932240937"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">300331</int>
+ <reference key="object" ref="196152721"/>
<reference key="parent" ref="0"/>
- <string key="objectName">Identity Array Controller</string>
+ <string key="objectName">Identity Options Controller</string>
</object>
<object class="IBObjectRecord">
- <int key="objectID">300196</int>
- <reference key="object" ref="307777557"/>
+ <int key="objectID">300334</int>
+ <reference key="object" ref="871834199"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="754483226"/>
+ </object>
+ <reference key="parent" ref="1019868804"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">300335</int>
+ <reference key="object" ref="754483226"/>
+ <reference key="parent" ref="871834199"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">300358</int>
+ <reference key="object" ref="669516699"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="362266618"/>
+ </object>
+ <reference key="parent" ref="1019868804"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">300359</int>
+ <reference key="object" ref="362266618"/>
+ <reference key="parent" ref="669516699"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">300370</int>
+ <reference key="object" ref="1031761104"/>
<reference key="parent" ref="0"/>
+ <string key="objectName">Identities Controller</string>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">300402</int>
+ <reference key="object" ref="958176038"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="196100637"/>
+ </object>
+ <reference key="parent" ref="1019868804"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">300403</int>
+ <reference key="object" ref="196100637"/>
+ <reference key="parent" ref="958176038"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">300407</int>
+ <reference key="object" ref="546844125"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="725579124"/>
+ </object>
+ <reference key="parent" ref="1019868804"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">300408</int>
+ <reference key="object" ref="725579124"/>
+ <reference key="parent" ref="546844125"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">300426</int>
+ <reference key="object" ref="263312988"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="659813048"/>
+ </object>
+ <reference key="parent" ref="928852707"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">300427</int>
+ <reference key="object" ref="659813048"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="600123164"/>
+ </object>
+ <reference key="parent" ref="263312988"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">300428</int>
+ <reference key="object" ref="600123164"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="354283131"/>
+ <reference ref="136217401"/>
+ <reference ref="553755370"/>
+ <reference ref="778570067"/>
+ </object>
+ <reference key="parent" ref="659813048"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">300429</int>
+ <reference key="object" ref="354283131"/>
+ <reference key="parent" ref="600123164"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">300430</int>
+ <reference key="object" ref="136217401"/>
+ <reference key="parent" ref="600123164"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">300431</int>
+ <reference key="object" ref="553755370"/>
+ <reference key="parent" ref="600123164"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">300432</int>
+ <reference key="object" ref="778570067"/>
+ <reference key="parent" ref="600123164"/>
</object>
</object>
</object>
@@ -894,30 +2249,86 @@
<bool key="EncodedWithXMLCoder">YES</bool>
<string>-1.IBPluginDependency</string>
<string>-2.IBPluginDependency</string>
- <string>10.IBPluginDependency</string>
- <string>10.ImportedFromIB2</string>
- <string>100009.IBShouldRemoveOnLegacySave</string>
- <string>11.IBPluginDependency</string>
- <string>11.ImportedFromIB2</string>
<string>15.IBPluginDependency</string>
<string>15.ImportedFromIB2</string>
<string>16.IBPluginDependency</string>
<string>16.ImportedFromIB2</string>
- <string>18.IBPluginDependency</string>
- <string>18.ImportedFromIB2</string>
- <string>200009.IBShouldRemoveOnLegacySave</string>
- <string>300009.IBShouldRemoveOnLegacySave</string>
- <string>300018.IBPluginDependency</string>
- <string>300019.IBPluginDependency</string>
<string>300118.IBPluginDependency</string>
<string>300118.ImportedFromIB2</string>
- <string>300152.IBPluginDependency</string>
- <string>300153.IBPluginDependency</string>
- <string>300154.IBPluginDependency</string>
- <string>300155.IBPluginDependency</string>
<string>300156.IBPluginDependency</string>
<string>300183.IBPluginDependency</string>
<string>300196.IBPluginDependency</string>
+ <string>300206.IBPluginDependency</string>
+ <string>300207.IBPluginDependency</string>
+ <string>300216.IBPluginDependency</string>
+ <string>300217.IBPluginDependency</string>
+ <string>300218.IBPluginDependency</string>
+ <string>300219.IBPluginDependency</string>
+ <string>300220.IBPluginDependency</string>
+ <string>300220.IBViewIntegration.shadowBlurRadius</string>
+ <string>300220.IBViewIntegration.shadowColor</string>
+ <string>300220.IBViewIntegration.shadowOffsetHeight</string>
+ <string>300220.IBViewIntegration.shadowOffsetWidth</string>
+ <string>300221.IBPluginDependency</string>
+ <string>300222.IBPluginDependency</string>
+ <string>300223.IBPluginDependency</string>
+ <string>300224.IBPluginDependency</string>
+ <string>300244.IBPluginDependency</string>
+ <string>300294.IBEditorWindowLastContentRect</string>
+ <string>300294.IBPluginDependency</string>
+ <string>300294.IBWindowTemplateEditedContentRect</string>
+ <string>300294.NSWindowTemplate.visibleAtLaunch</string>
+ <string>300294.windowTemplate.hasMaxSize</string>
+ <string>300294.windowTemplate.maxSize</string>
+ <string>300295.IBPluginDependency</string>
+ <string>300296.IBPluginDependency</string>
+ <string>300296.ImportedFromIB2</string>
+ <string>300298.IBPluginDependency</string>
+ <string>300299.IBPluginDependency</string>
+ <string>300300.IBPluginDependency</string>
+ <string>300301.IBPluginDependency</string>
+ <string>300302.IBPluginDependency</string>
+ <string>300303.IBPluginDependency</string>
+ <string>300304.IBPluginDependency</string>
+ <string>300305.IBPluginDependency</string>
+ <string>300307.IBPluginDependency</string>
+ <string>300307.ImportedFromIB2</string>
+ <string>300308.IBPluginDependency</string>
+ <string>300308.ImportedFromIB2</string>
+ <string>300309.IBPluginDependency</string>
+ <string>300309.ImportedFromIB2</string>
+ <string>300310.IBPluginDependency</string>
+ <string>300310.ImportedFromIB2</string>
+ <string>300311.IBPluginDependency</string>
+ <string>300311.ImportedFromIB2</string>
+ <string>300312.IBPluginDependency</string>
+ <string>300312.ImportedFromIB2</string>
+ <string>300313.IBPluginDependency</string>
+ <string>300313.ImportedFromIB2</string>
+ <string>300314.IBPluginDependency</string>
+ <string>300314.ImportedFromIB2</string>
+ <string>300315.IBPluginDependency</string>
+ <string>300315.ImportedFromIB2</string>
+ <string>300329.IBPluginDependency</string>
+ <string>300330.IBPluginDependency</string>
+ <string>300331.IBPluginDependency</string>
+ <string>300334.IBPluginDependency</string>
+ <string>300335.IBPluginDependency</string>
+ <string>300358.IBPluginDependency</string>
+ <string>300359.IBPluginDependency</string>
+ <string>300370.IBPluginDependency</string>
+ <string>300402.IBPluginDependency</string>
+ <string>300403.IBPluginDependency</string>
+ <string>300407.IBPluginDependency</string>
+ <string>300408.IBPluginDependency</string>
+ <string>300426.IBPluginDependency</string>
+ <string>300427.IBPluginDependency</string>
+ <string>300428.IBEditorWindowLastContentRect</string>
+ <string>300428.IBPluginDependency</string>
+ <string>300429.IBPluginDependency</string>
+ <string>300430.IBPluginDependency</string>
+ <string>300431.IBPluginDependency</string>
+ <string>300432.IBPluginDependency</string>
<string>5.IBEditorWindowLastContentRect</string>
<string>5.IBPluginDependency</string>
<string>5.IBWindowTemplateEditedContentRect</string>
@@ -932,53 +2343,105 @@
<string>6.ImportedFromIB2</string>
<string>8.IBPluginDependency</string>
<string>8.ImportedFromIB2</string>
- <string>9.IBPluginDependency</string>
- <string>9.ImportedFromIB2</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1" id="5"/>
- <reference ref="5"/>
+ <reference ref="9"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="9"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="5"/>
+ <reference ref="9"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="5"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="5"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="5"/>
- <reference ref="5"/>
- <reference ref="5"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="5"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <real value="0.000000e+00" id="75542549"/>
+ <reference ref="18538584"/>
+ <reference ref="75542549"/>
+ <reference ref="75542549"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>{{606, 541}, {491, 315}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>{{606, 541}, {491, 315}}</string>
- <reference ref="5"/>
- <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>{{360, 291}, {427, 378}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>{{360, 291}, {427, 378}}</string>
+ <integer value="0"/>
+ <reference ref="75542549"/>
+ <string>{10000, 354}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="9"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="9"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="9"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="9"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="9"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="9"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="9"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="9"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="9"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="9"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>{{535, 102}, {198, 83}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>{{499, 142}, {491, 316}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>{{499, 142}, {491, 316}}</string>
+ <reference ref="9"/>
+ <reference ref="9"/>
<string>{{503, 256}, {419, 465}}</string>
- <reference ref="5"/>
- <reference ref="5"/>
+ <reference ref="9"/>
+ <reference ref="9"/>
<string>{600, 600}</string>
<string>{419, 298}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="5"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="5"/>
+ <reference ref="9"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="5"/>
+ <reference ref="9"/>
</object>
</object>
<object class="NSMutableDictionary" key="unlocalizedProperties">
@@ -1001,7 +2464,7 @@
</object>
</object>
<nil key="sourceID"/>
- <int key="maxID">300201</int>
+ <int key="maxID">300455</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes">
<object class="NSMutableArray" key="referencedPartialClassDescriptions">
@@ -1023,23 +2486,33 @@
</object>
</object>
<object class="IBPartialClassDescription">
- <string key="className">KerberosTimeFormatter</string>
+ <string key="className">KerberosFavoriteFormatter</string>
<string key="superclassName">NSFormatter</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <object class="IBClassDescriptionSource" key="sourceIdentifier" id="136421570">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">../Sources/kim/agent/mac/KerberosFormatters.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
+ <string key="className">KerberosTimeFormatter</string>
+ <string key="superclassName">NSFormatter</string>
+ <reference key="sourceIdentifier" ref="136421570"/>
+ </object>
+ <object class="IBPartialClassDescription">
<string key="className">SelectIdentityController</string>
<string key="superclassName">NSWindowController</string>
<object class="NSMutableDictionary" key="actions">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSMutableArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
- <string>add:</string>
+ <string>addToFavorites:</string>
<string>cancel:</string>
- <string>remove:</string>
+ <string>cancelOptions:</string>
+ <string>doneOptions:</string>
+ <string>editOptions:</string>
+ <string>newIdentity:</string>
+ <string>removeFromFavorites:</string>
+ <string>resetOptions:</string>
<string>select:</string>
</object>
<object class="NSMutableArray" key="dict.values">
@@ -1048,37 +2521,50 @@
<string>id</string>
<string>id</string>
<string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
</object>
</object>
<object class="NSMutableDictionary" key="outlets">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSMutableArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
+ <string>actionPopupButton</string>
<string>addIdentityButton</string>
<string>cancelButton</string>
<string>explanationTextField</string>
<string>headerTextField</string>
+ <string>identitiesController</string>
<string>identityArrayController</string>
+ <string>identityOptionsController</string>
+ <string>identityOptionsWindow</string>
<string>identityTableColumn</string>
<string>identityTableView</string>
<string>kerberosIconImageView</string>
- <string>removeIdentityButton</string>
+ <string>nameField</string>
+ <string>realmField</string>
<string>selectIdentityButton</string>
- <string>timeRemainingTableColumn</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
+ <string>NSPopUpButton</string>
<string>NSButton</string>
<string>NSButton</string>
<string>NSTextField</string>
<string>NSTextField</string>
+ <string>NSObjectController</string>
<string>NSArrayController</string>
+ <string>NSObjectController</string>
+ <string>NSWindow</string>
<string>NSTableColumn</string>
<string>NSTableView</string>
<string>BadgedImageView</string>
+ <string>NSTextField</string>
+ <string>NSTextField</string>
<string>NSButton</string>
- <string>NSButton</string>
- <string>NSTableColumn</string>
</object>
</object>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
diff --git a/src/kim/agent/mac/resources/KerberosFormatters.strings b/src/kim/agent/mac/resources/KerberosFormatters.strings
new file mode 100644
index 000000000..707ba5340
--- /dev/null
+++ b/src/kim/agent/mac/resources/KerberosFormatters.strings
Binary files differ