]> err.no Git - sope/commitdiff
improved editing context support
authorhelge <helge@e4a50df8-12e2-0310-a44c-efbce7f8a7e3>
Wed, 3 Aug 2005 19:54:23 +0000 (19:54 +0000)
committerhelge <helge@e4a50df8-12e2-0310-a44c-efbce7f8a7e3>
Wed, 3 Aug 2005 19:54:23 +0000 (19:54 +0000)
some cleanups

git-svn-id: http://svn.opengroupware.org/SOPE/trunk@962 e4a50df8-12e2-0310-a44c-efbce7f8a7e3

sope-appserver/NGObjWeb/ChangeLog
sope-appserver/NGObjWeb/Version
sope-appserver/NGObjWeb/WODisplayGroup.m

index ed60d7ea869fb7fab8f177ee49c9fd9a5e445733..86d48a4a292481a2a1b6e53e75fa5d6f4a69573a 100644 (file)
@@ -1,3 +1,9 @@
+2005-08-03  Helge Hess  <helge.hess@opengroupware.org>
+
+       * WODisplayGroup.m: detect whether an EOEditingContext is available at
+         runtime (previously compile time), consolidated categories in the
+         main class to allow for runtime overloading (v4.5.181)
+
 2005-08-02  Helge Hess  <helge.hess@skyrix.com>
 
        * v4.5.180
index 5546ff2e4722eae75fce80fe9286d774d3fe72de..818fe82bfb412048223cda339fd41b3caf996d56 100644 (file)
@@ -1,6 +1,6 @@
 # version file
 
-SUBMINOR_VERSION:=180
+SUBMINOR_VERSION:=181
 
 # v4.5.122 requires libNGExtensions v4.5.153
 # v4.5.91  requires libNGExtensions v4.5.134
index 68efaf0a395dd00c19bbd8c27daa227155707eaf..04124f873c1f6e45c7c9f6233924c354d943e07c 100644 (file)
 @end
 #endif
 
+
+@interface NSObject(EditingContext)
+- (id)editingContext;
+- (void)addEditor:(id)_editor;
+- (void)removeEditor:(id)_editor;
+- (void)setMessageHandler:(id)_handler;
+- (id)messageHandler;
+@end
+
+
 @implementation WODisplayGroup
 
 static NSNumber *uint0 = nil;
@@ -64,19 +74,19 @@ static NSArray  *uint0Array = nil;
   [[NSNotificationCenter defaultCenter] removeObserver:self];
   [self setDataSource:nil];
 
-  RELEASE(self->_queryMatch);
-  RELEASE(self->_queryMin);
-  RELEASE(self->_queryMax);
-  RELEASE(self->_queryOperator);
-  RELEASE(self->_queryBindings);
-  RELEASE(self->defaultStringMatchFormat);
-  RELEASE(self->defaultStringMatchOperator);
-  RELEASE(self->qualifier);
-  RELEASE(self->objects);
-  RELEASE(self->displayObjects);
-  RELEASE(self->selectionIndexes);
-  RELEASE(self->sortOrderings);
-  RELEASE(self->insertedObjectDefaults);
+  [self->_queryMatch                release];
+  [self->_queryMin                  release];
+  [self->_queryMax                  release];
+  [self->_queryOperator             release];
+  [self->_queryBindings             release];
+  [self->defaultStringMatchFormat   release];
+  [self->defaultStringMatchOperator release];
+  [self->qualifier                  release];
+  [self->objects                    release];
+  [self->displayObjects             release];
+  [self->selectionIndexes           release];
+  [self->sortOrderings              release];
+  [self->insertedObjectDefaults     release];
   [super dealloc];
 }
 
@@ -87,9 +97,9 @@ static NSArray  *uint0Array = nil;
   BOOL doRedisplay;
 
   doRedisplay = YES;
-  if ((d = [self delegate])) {
+  if ((d = [self delegate]) != nil) {
     if ([d respondsToSelector:
-           @selector(displayGroup:shouldRedisplayForChangesInEditingContext:)]) {
+       @selector(displayGroup:shouldRedisplayForChangesInEditingContext:)]) {
       doRedisplay = [d displayGroup:self
                        shouldRedisplayForEditingContextChangeNotification:
                          _notification];
@@ -116,27 +126,31 @@ static NSArray  *uint0Array = nil;
 }
 
 - (void)setDataSource:(EODataSource *)_ds {
-  if (_ds != self->dataSource) {
-#if WITH_EC
-    NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
-
-    id ec;
-
-    if ((ec = [self->dataSource editingContext])) {
+  NSNotificationCenter *nc = nil;
+  id ec;
+  
+  if (_ds == self->dataSource)
+    return;
+  
+  /* unregister with old editing context */
+  if ([self->dataSource respondsToSelector:@selector(editingContext)]) {
+    if ((ec = [self->dataSource editingContext]) != nil) {
       [ec removeEditor:self];
       if ([ec messageHandler] == self)
         [ec setMessageHandler:nil];
     
-      [nc removeObserver:self
-          name:@"EOObjectsChangedInEditingContext"
-          object:ec];
+      [[NSNotificationCenter defaultCenter]
+       removeObserver:self
+       name:@"EOObjectsChangedInEditingContext"
+       object:ec];
     }
-#endif
-    
-    ASSIGN(self->dataSource, _ds);
-
-#if WITH_EC
-    if ((ec = [_ds editingContext])) {
+  }
+  
+  ASSIGN(self->dataSource, _ds);
+  
+  /* register with new editing context */
+  if ([self->dataSource respondsToSelector:@selector(editingContext)]) {
+    if ((ec = [self->dataSource editingContext]) != nil) {
       [ec addEditor:self];
       if ([ec messageHandler] == nil)
         [ec setMessageHandler:self];
@@ -146,21 +160,18 @@ static NSArray  *uint0Array = nil;
           name:@"EOObjectsChangedInEditingContext"
           object:ec];
     }
-#endif
-    
-    if ([self->delegate respondsToSelector:
-               @selector(displayGroupDidChangeDataSource:)])
-      [self->delegate displayGroupDidChangeDataSource:self];
   }
+  
+  if ([self->delegate respondsToSelector:
+               @selector(displayGroupDidChangeDataSource:)])
+    [self->delegate displayGroupDidChangeDataSource:self];
 }
 - (EODataSource *)dataSource {
   return self->dataSource;
 }
 
 - (void)setSortOrderings:(NSArray *)_orderings {
-  id tmp = self->sortOrderings;
-  self->sortOrderings = [_orderings copy];
-  RELEASE(tmp);
+  ASSIGNCOPY(self->sortOrderings, _orderings);
 }
 - (NSArray *)sortOrderings {
   return self->sortOrderings;
@@ -174,9 +185,7 @@ static NSArray  *uint0Array = nil;
 }
 
 - (void)setInsertedObjectDefaultValues:(NSDictionary *)_values {
-  id tmp = self->insertedObjectDefaults;
-  self->insertedObjectDefaults = [_values copy];
-  RELEASE(tmp);
+  ASSIGNCOPY(self->insertedObjectDefaults, [_values copy]);
 }
 - (NSDictionary *)insertedObjectDefaultValues {
   return self->insertedObjectDefaults;
@@ -869,12 +878,10 @@ static NSArray  *uint0Array = nil;
                      [self dataSource]];
 }
 
-@end /* WODisplayGroup */
-
-@implementation WODisplayGroup(KVCArchiving)
+/* KVCArchiving */
 
 - (id)initWithKeyValueUnarchiver:(EOKeyValueUnarchiver *)_unarchiver {
-  if ((self = [self init])) {
+  if ((self = [self init]) != nil) {
     id tmp;
     
     if ((tmp = [_unarchiver decodeObjectForKey:@"formatForLikeQualifier"]))
@@ -907,11 +914,7 @@ static NSArray  *uint0Array = nil;
              forKey:@"selectFirstAfterFetch"];
 }
 
-@end /* KVCArchiving */
-
-@implementation WODisplayGroup(EOEditorsImpl)
-
-#if 0
+/* EOEditorsImpl */
 
 - (void)editingContextWillSaveChanges:(id)_ec {
 }
@@ -919,13 +922,7 @@ static NSArray  *uint0Array = nil;
   return NO;
 }
 
-#endif
-
-@end /* WODisplayGroup(EOEditorsImpl) */
-
-@implementation WODisplayGroup(EOMessageHandlersImpl)
-
-#if 0
+/* EOMessageHandlersImpl */
 
 - (void)editingContext:(id)_ec
   presentErrorMessage:(NSString *)_msg
@@ -935,11 +932,9 @@ static NSArray  *uint0Array = nil;
 - (BOOL)editingContext:(id)_ec
   shouldContinueFetchingWithCurrentObjectCount:(unsigned)_oc
   originalLimit:(unsigned)_olimit
-  objectStore:(EOObjectStore *)_store
+  objectStore:(id)_store
 {
   return NO;
 }
 
-#endif
-
-@end /* WODisplayGroup(EOMessageHandlersImpl) */
+@end /* WODisplayGroup */