Intermediary checkin, just to mark my place and back up, in case Panther decides...
[ITKit.git] / ITWindowEffect.m
index 752742b..1e2e750 100755 (executable)
@@ -4,14 +4,27 @@
 
 @implementation ITWindowEffect
 
++ (NSArray *)effectClasses
+{
+    NSArray *classes = [NSArray arrayWithObjects:
+        NSClassFromString(@"ITCutWindowEffect"),
+        NSClassFromString(@"ITDissolveWindowEffect"),
+        NSClassFromString(@"ITSlideHorizontallyWindowEffect"),
+        NSClassFromString(@"ITSlideVerticallyWindowEffect"),
+        NSClassFromString(@"ITPivotWindowEffect"),
+        nil];
+        
+    return classes;
+}
 
 - (id)initWithWindow:(NSWindow *)window
 {
     if ( (self = [super init]) ) {
-    
-        _window         = [window retain];
-        _effectTime     = DEFAULT_EFFECT_TIME;
-        _effectTimer    = nil;
+        _window                 = [window retain];
+        _effectTime             = DEFAULT_EFFECT_TIME;
+        _effectTimer            = nil;
+        __shouldReleaseWhenIdle = NO;
+        __idle                  = YES;
 
         if ( [window conformsToProtocol:@protocol(ITWindowPositioning)] ) {
                                                            // Casts so the compiler won't gripe
     _effectTime = newTime;
 }
 
++ (NSString *)effectName
+{
+    NSLog(@"ITWindowEffect does not implement +effectName.");
+    return nil;
+}
+
++ (NSDictionary *)supportedPositions
+{
+    NSLog(@"ITWindowEffect does not implement +supportedPositions.");
+    
+//  Below is an example dictionary.  Modify it appropriately when subclassing.
+    return [NSDictionary dictionaryWithObjectsAndKeys:
+        [NSDictionary dictionaryWithObjectsAndKeys:
+            [NSNumber numberWithBool:NO], @"Left",
+            [NSNumber numberWithBool:NO], @"Center",
+            [NSNumber numberWithBool:NO], @"Right", nil] , @"Top" ,
+        [NSDictionary dictionaryWithObjectsAndKeys:
+            [NSNumber numberWithBool:NO], @"Left",
+            [NSNumber numberWithBool:NO], @"Center",
+            [NSNumber numberWithBool:NO], @"Right", nil] , @"Middle" ,
+        [NSDictionary dictionaryWithObjectsAndKeys:
+            [NSNumber numberWithBool:NO], @"Left",
+            [NSNumber numberWithBool:NO], @"Center",
+            [NSNumber numberWithBool:NO], @"Right", nil] , @"Bottom" , nil];
+}
+
 - (void)performAppear
 {
     NSLog(@"ITWindowEffect does not implement performAppear.");
     NSLog(@"ITWindowEffect does not implement cancelVanish.");
 }
 
+- (void)releaseWhenIdle;
+{
+    if ( __idle ) {
+        [self release];
+    } else {
+        __shouldReleaseWhenIdle = YES;
+    }
+}
+
 - (void)dealloc
 {
        [_window release];