--- /dev/null
+#import <AppKit/AppKit.h>
+
+
+@interface NSView (ITCategory)
+
+- (void)removeAllSubviews;
+
+@end
--- /dev/null
+#import "ITCategory-NSView.h"
+
+
+@implementation NSView (ITCategory)
+
+- (void)removeAllSubviews {
+ [[self subviews] makeObjectsPerformSelector:@selector(removeFromSuperview)];
+}
+
+@end
--- /dev/null
+
+/*************************************************************************/
+#pragma mark -
+#pragma mark CoreGraphics HACKS
+/*************************************************************************/
+
+typedef void * CGSGenericObj;
+typedef CGSGenericObj CGSValueObj;
+typedef void * CGSConnectionID;
+typedef void * CGSWindowID;
+typedef struct CGStyle *CGStyleRef;
+typedef struct CGShadowStyle {
+ unsigned int version;
+ float elevation;
+ float azimuth;
+ float ambient;
+ float height;
+ float radius;
+ float saturation;
+} CGShadowStyle;
+typedef unsigned char CGSBoolean;
+enum {
+ kCGSFalse = 0,
+ kCGSTrue = 1
+};
+
+extern void CGStyleRelease(CGStyleRef style);
+extern void CGSReleaseObj(void *obj);
+extern void CGContextSetStyle(CGContextRef c, CGStyleRef style);
+extern void CGStyleRelease(CGStyleRef style);
+extern CGStyleRef CGStyleCreateShadow(const CGShadowStyle *shadow);
+extern CGSValueObj CGSCreateCString(const char *string);
+extern CGSValueObj CGSCreateBoolean(CGSBoolean boolean);
+extern CGError CGSSetWindowProperty(const CGSConnectionID cid,
+ CGSWindowID wid, const CGSValueObj key, const CGSValueObj value);
--- /dev/null
+//
+// ITGrayRoundedView.h
+// ITKit
+//
+// Created by Matt L. Judy on Wed Jan 22 2003.
+// Copyright (c) 2003 NibFile.com. All rights reserved.
+//
+
+#import <Cocoa/Cocoa.h>
+
+
+@interface ITGrayRoundedView : NSView {
+
+}
+
+@end
--- /dev/null
+//
+// ITGrayRoundedView.m
+// ITKit
+//
+// Created by Matt L. Judy on Wed Jan 22 2003.
+// Copyright (c) 2003 NibFile.com. All rights reserved.
+//
+
+#import "ITGrayRoundedView.h"
+
+
+@implementation ITGrayRoundedView
+
+- (void)drawRect:(NSRect)theRect
+{
+ NSBezierPath *path = [NSBezierPath bezierPath];
+ float vh = NSHeight(theRect);
+ float vw = NSWidth(theRect);
+ [path moveToPoint:NSMakePoint( 0.0, (vh - 24.0) )]; // first point
+ [path curveToPoint:NSMakePoint( 24.0, vh )
+ controlPoint1:NSMakePoint( 0.0, (vh - 11.0) )
+ controlPoint2:NSMakePoint( 11.0, vh )]; // top-left curve
+ [path lineToPoint:NSMakePoint( (vw - 24.0), vh )]; // top line
+ [path curveToPoint:NSMakePoint( vw, (vh - 24.0) )
+ controlPoint1:NSMakePoint( (vw - 11.0), vh )
+ controlPoint2:NSMakePoint( vw, (vh - 11.0) )]; // top-right curve
+ [path lineToPoint:NSMakePoint( vw, 24.0 )]; // right line
+ [path curveToPoint:NSMakePoint( (vw - 24.0), 0.0 )
+ controlPoint1:NSMakePoint( vw, 11.0 )
+ controlPoint2:NSMakePoint( (vw - 11.0), 0.0 )]; // bottom-right curve
+ [path lineToPoint:NSMakePoint( 24.0, 0.0 )]; // bottom line
+ [path curveToPoint:NSMakePoint( 0.0, 24.0 )
+ controlPoint1:NSMakePoint( 11.0, 0.0 )
+ controlPoint2:NSMakePoint( 0.0, 11.0 )]; // bottom-left curve
+ [path closePath]; // left line
+
+ [[NSColor colorWithCalibratedWhite:0.0 alpha:0.15] set];
+ [path fill];
+}
+
+- (BOOL)isOpaque
+{
+ return NO;
+}
+
+@end
--- /dev/null
+/*
+ * ITKit
+ * ITTableCornerView
+ * NSPopUpButton subclass for corner views in a table view.
+ *
+ * Original Author : Joseph Spiros <joseph.spiros@ithinksw.com>
+ * Responsibility : Matt Judy <mjudy@ithinksw.com>
+ * Responsibility : Joseph Spiros <joseph.spiros@ithinksw.com>
+ *
+ * Copyright (c) 2002 - 2003 iThink Software.
+ * All Rights Reserved
+ *
+ */
+
+/*
+ * This subclass does 4 things to approximate NSMenuExtra's functionality:
+ *
+ * 1. Makes the status item smarter about highlighting.
+ * 2. Allows you to set an alternate (inverted) image.
+ * 3. Eliminates the pre-Jaguar shadow behind a normal status item.
+ * 4. If you use an image AND title, the text will be made slightly smaller
+ * to resemble the visual interface of an NSMenuExtra.
+ *
+ * Note: In order to have the shadow not overlap the bottom of the
+ * menubar, Apple moves the image up one pixel. Since that shadow is
+ * no longer drawn, please adjust your images DOWN one pixel to compensate.
+ *
+ */
+
+#import <AppKit/AppKit.h>
+
+@interface ITTableCornerView : NSPopUpButton {
+ NSTableHeaderCell *headerCell;
+}
+@end
+
--- /dev/null
+//
+// ITTableCornerView.m
+//
+//
+// Created by Joseph Spiros on Wed Jan 22 2003.
+// Copyright (c) 2003 __MyCompanyName__. All rights reserved.
+//
+
+#import "ITTableCornerView.h"
+
+@implementation ITTableCornerView
+
+- (id)initWithFrame:(NSRect)frame {
+ self = [super initWithFrame:frame];
+ if (self) {
+ headerCell = [[NSTableHeaderCell alloc] init];
+ }
+ return self;
+}
+
+- (void)drawRect:(NSRect)rect {
+ rect.origin.y = 0;
+ rect.size.height = 17;
+ rect.size.width += 1;
+
+ [headerCell setState: ([[self cell] isHighlighted]) ? NSOnState : NSOffState];
+ [headerCell drawWithFrame:rect inView:nil];
+
+ if ([self image]) {
+ [[self image] drawAtPoint:rect.origin fromRect:NSZeroRect operation:NSCompositeSourceOver fraction:1.0];
+ }
+}
+
+- (void)dealloc {
+ [headerCell release];
+ [super dealloc];
+}
+
+@end
\ No newline at end of file
--- /dev/null
+/*
+ * ITKit
+ * ITTableView
+ *
+ * An NSTableView subclass with easy to use accessors for adding a menu (with optional image)
+ * to the corner view of the TableView.
+ *
+ * Original Author : Joseph Spiros <joseph.spiros@ithinksw.com>
+ * Responsibility : Joseph Spiros <joseph.spiros@ithinksw.com>
+ *
+ * Copyright (c) 2002 iThink Software.
+ * All Rights Reserved
+ *
+ */
+
+#import <AppKit/AppKit.h>
+#import "ITTableCornerView.h"
+
+@interface ITTableView : NSTableView {
+ ITTableCornerView *corner;
+}
+
+- (void)setCornerImage:(NSImage*)image;
+- (NSImage*)cornerImage;
+- (void)setCornerMenu:(NSMenu*)menu;
+- (NSMenu*)cornerMenu;
+
+@end
--- /dev/null
+// ITTableView.m
+
+#import "ITTableView.h"
+
+
+@implementation ITTableView
+
+- (id)initWithFrame:(NSRect)frame {
+ self = [super initWithFrame:frame];
+ if (self) {
+ corner = [[ITTableCornerView alloc] initWithFrame:[[self cornerView] frame]];
+ [corner setPullsDown:YES];
+ [self setCornerView:corner];
+ }
+ return self;
+}
+
+- (id)initWithCoder:(NSCoder*)coder {
+ self = [super initWithCoder:coder];
+ if (self) {
+ corner = [[ITTableCornerView alloc] initWithFrame:[[self cornerView] frame]];
+ [corner setPullsDown:YES];
+ [self setCornerView:corner];
+ }
+ return self;
+}
+
+- (void)encodeWithCoder:(NSCoder*)coder {
+ [super encodeWithCoder:coder];
+}
+
+- (void)setCornerImage:(NSImage*)image {
+ [corner setImage:image];
+}
+
+- (NSImage*)cornerImage {
+ return [corner image];
+}
+
+- (void)setCornerMenu:(NSMenu*)menu {
+ [corner setMenu:menu];
+}
+
+- (NSMenu*)cornerMenu {
+ return [corner menu];
+}
+
+@end
--- /dev/null
+/*
+ * ITKit
+ * ITTextField
+ * Allows shadows to be drawn under text.
+ *
+ * Original Author : Matt Judy <mjudy@ithinksw.com>
+ * Responsibility : Matt Judy <mjudy@ithinksw.com>
+ * Responsibility : Joseph Spiros <joseph.spiros@ithinksw.com>
+ *
+ * Copyright (c) 2002 - 2003 iThink Software.
+ * All Rights Reserved
+ *
+ */
+
+
+#import <Cocoa/Cocoa.h>
+
+
+@interface ITTextField : NSTextField {
+
+ BOOL castsShadow;
+
+ float shadowElevation;
+ float shadowAzimuth;
+ float shadowAmbient;
+ float shadowHeight;
+ float shadowRadius;
+ float shadowSaturation;
+
+}
+
+- (BOOL)castsShadow;
+- (void)setCastsShadow:(BOOL)newSetting;
+
+- (float)shadowElevation; /* Light source elevation in degrees. Defaults to 45.0 */
+- (void)setShadowElevation:(float)newElevation;
+
+- (float)shadowAzimuth; /* Light source azimuth in degrees. Defaults to 90.0 */
+- (void)setShadowAzimuth:(float)newAzimuth;
+
+- (float)shadowAmbient; /* Amount of ambient light. Defaults to 0.15 */
+- (void)setShadowAmbient:(float)newAmbient;
+
+- (float)shadowHeight; /* Height above the canvas. Defaults to 1.0 */
+- (void)setShadowHeight:(float)newHeight;
+
+- (float)shadowRadius; /* Blur radius. Defaults to 4.0 */
+- (void)setShadowRadius:(float)newRadius;
+
+- (float)shadowSaturation; /* Maximum saturation. Defaults to 1.0 */
+- (void)setShadowSaturation:(float)newSaturation;
+
+
+@end
--- /dev/null
+#import "ITTextField.h"
+#import <CoreGraphics/CoreGraphics.h>
+#import "ITCoreGraphicsHacks.h"
+
+
+/*************************************************************************/
+#pragma mark -
+#pragma mark IMPLEMENTATION
+/*************************************************************************/
+
+@implementation ITTextField
+
+/*************************************************************************/
+#pragma mark -
+#pragma mark INITIALIZATION METHODS
+/*************************************************************************/
+
+- (id)initWithFrame:(NSRect)frameRect
+{
+ if ( ( self = [super initWithFrame:frameRect] ) ) {
+ castsShadow = NO;
+ shadowElevation = 45.0;
+ shadowAzimuth = 90.0;
+ shadowAmbient = 0.15;
+ shadowHeight = 1.00;
+ shadowRadius = 4.00;
+ shadowSaturation = 1.0;
+ }
+
+ return self;
+}
+
+- (id)initWithCoder:(NSCoder *)coder
+{
+ if ( ( self = [super initWithCoder:coder] ) ) {
+ castsShadow = NO;
+ shadowElevation = 45.0;
+ shadowAzimuth = 90.0;
+ shadowAmbient = 0.15;
+ shadowHeight = 1.00;
+ shadowRadius = 4.00;
+ shadowSaturation = 1.0;
+ }
+
+ return self;
+}
+
+
+/*************************************************************************/
+#pragma mark -
+#pragma mark DRAWING METHODS
+/*************************************************************************/
+
+- (void)drawRect:(NSRect)rect
+{
+ CGSGenericObj style = nil;
+ CGShadowStyle shadow;
+
+ if ( castsShadow ) {
+ // Create the shadow style to use for drawing the string
+ shadow.version = 0;
+ shadow.elevation = shadowElevation;
+ shadow.azimuth = shadowAzimuth;
+ shadow.ambient = shadowAmbient;
+ shadow.height = shadowHeight;
+ shadow.radius = shadowRadius;
+ shadow.saturation = shadowSaturation;
+ style = CGStyleCreateShadow(&shadow);
+
+ // Set the context for drawing the string
+ [NSGraphicsContext saveGraphicsState];
+ CGContextSetStyle([[NSGraphicsContext currentContext] graphicsPort], style);
+ }
+
+ // Draw the string
+ [super drawRect:rect];
+
+
+ if ( castsShadow ) {
+ // Restore the old context
+ [NSGraphicsContext restoreGraphicsState];
+ CGStyleRelease(style);
+ }
+}
+
+
+
+/*************************************************************************/
+#pragma mark -
+#pragma mark ACCESSOR METHODS
+/*************************************************************************/
+
+- (BOOL)castsShadow;
+{
+ return castsShadow;
+}
+
+- (void)setCastsShadow:(BOOL)newSetting;
+{
+ castsShadow = newSetting;
+ [self setNeedsDisplay:YES];
+}
+
+- (float)shadowElevation;
+{
+ return shadowElevation;
+}
+
+- (void)setShadowElevation:(float)newElevation;
+{
+ shadowElevation = newElevation;
+ [self setNeedsDisplay:YES];
+}
+
+- (float)shadowAzimuth;
+{
+ return shadowAzimuth;
+}
+
+- (void)setShadowAzimuth:(float)newAzimuth;
+{
+ shadowAzimuth = newAzimuth;
+ [self setNeedsDisplay:YES];
+}
+
+- (float)shadowAmbient;
+{
+ return shadowAmbient;
+}
+
+- (void)setShadowAmbient:(float)newAmbient;
+{
+ shadowAmbient = newAmbient;
+ [self setNeedsDisplay:YES];
+}
+
+- (float)shadowHeight;
+{
+ return shadowHeight;
+}
+
+- (void)setShadowHeight:(float)newHeight;
+{
+ shadowHeight = newHeight;
+ [self setNeedsDisplay:YES];
+}
+
+- (float)shadowRadius;
+{
+ return shadowRadius;
+}
+
+- (void)setShadowRadius:(float)newRadius;
+{
+ shadowRadius = newRadius;
+ [self setNeedsDisplay:YES];
+}
+
+- (float)shadowSaturation;
+{
+ return shadowSaturation;
+}
+
+- (void)setShadowSaturation:(float)newSaturation;
+{
+ shadowSaturation = newSaturation;
+ [self setNeedsDisplay:YES];
+}
+
+
+@end
--- /dev/null
+/*
+ * ITKit
+ * ITTransientStatusWindow
+ * NSWindow subclass for quick display of status information.
+ * Similar to volume/brightness/eject bezel key windows.
+ *
+ * Original Author : Kent Sutherland <joseph.spiros@ithinksw.com>
+ * Original Author : Matt Judy <mjudy@ithinksw.com>
+ * Responsibility : Matt Judy <mjudy@ithinksw.com>
+ * Responsibility : Joseph Spiros <joseph.spiros@ithinksw.com>
+ *
+ * Copyright (c) 2002 - 2003 iThink Software.
+ * All Rights Reserved
+ *
+ */
+
+
+#import <Cocoa/Cocoa.h>
+
+
+#define DEFAULT_EXIT_DELAY 3.0
+
+
+typedef enum {
+ ITTransientStatusWindowHiddenState,
+ ITTransientStatusWindowEnteringState,
+ ITTransientStatusWindowVisibleState,
+ ITTransientStatusWindowExitingState
+} ITTransientStatusWindowVisibilityState;
+
+typedef enum {
+ ITTransientStatusWindowExitOnOrderOut,
+ ITTransientStatusWindowExitAfterDelay,
+} ITTransientStatusWindowExitMode;
+
+typedef enum {
+ ITTransientStatusWindowNoBackground,
+ ITTransientStatusWindowRounded,
+ ITTransientStatusWindowSquare,
+ ITTransientStatusWindowMetal,
+ ITTransientStatusWindowMetalUtility,
+ ITTransientStatusWindowAquaUtility
+} ITTransientStatusWindowBackgroundType;
+
+typedef enum {
+ ITTransientStatusWindowPositionTop,
+ ITTransientStatusWindowPositionMiddle,
+ ITTransientStatusWindowPositionBottom,
+ ITTransientStatusWindowPositionLeft,
+ ITTransientStatusWindowPositionCenter,
+ ITTransientStatusWindowPositionRight,
+ ITTransientStatusWindowOther
+} ITTransientStatusWindowPosition;
+
+typedef enum { // Note: Entry effects described here. Exit does the reverse.
+ ITTransientStatusWindowEffectNone, // No effect, window just appears.
+ ITTransientStatusWindowEffectDissolve, // Fades in.
+ ITTransientStatusWindowEffectSlideVertically, // Slides vertically onto the screen from the nearest edge
+ ITTransientStatusWindowEffectSlideHorizontally // Slides horizontally onto the screen from the nearest edge
+} ITTransientStatusWindowEffect;
+
+
+@interface ITTransientStatusWindow : NSWindow {
+
+ ITTransientStatusWindowVisibilityState _visibilityState;
+ ITTransientStatusWindowExitMode _exitMode;
+ float _exitDelay;
+ ITTransientStatusWindowBackgroundType _backgroundType;
+ ITTransientStatusWindowEffect _entryEffect;
+ ITTransientStatusWindowEffect _exitEffect;
+ ITTransientStatusWindowPosition _verticalPosition;
+ ITTransientStatusWindowPosition _horizontalPosition;
+
+ NSTimer *_delayTimer;
+ NSTimer *_fadeTimer;
+
+// NSView *_contentSubView;
+}
+
++ (ITTransientStatusWindow *)sharedWindow;
+
+- (ITTransientStatusWindowVisibilityState)visibilityState;
+
+- (ITTransientStatusWindowExitMode)exitMode;
+- (void)setExitMode:(ITTransientStatusWindowExitMode)newMode;
+
+- (float)exitDelay;
+- (void)setExitDelay:(float)seconds;
+
+- (ITTransientStatusWindowBackgroundType)backgroundType;
+- (void)setBackgroundType:(ITTransientStatusWindowBackgroundType)newType;
+
+- (ITTransientStatusWindowPosition)verticalPosition;
+- (void)setVerticalPosition:(ITTransientStatusWindowPosition)newPosition;
+
+- (ITTransientStatusWindowPosition)horizontalPosition;
+- (void)setHorizontalPosition:(ITTransientStatusWindowPosition)newPosition;
+
+- (ITTransientStatusWindowEffect)entryEffect;
+- (void)setEntryEffect:(ITTransientStatusWindowEffect)newEffect;
+
+- (ITTransientStatusWindowEffect)exitEffect;
+- (void)setExitEffect:(ITTransientStatusWindowEffect)newEffect;
+
+@end
--- /dev/null
+#import "ITTransientStatusWindow.h"
+#import <CoreGraphics/CoreGraphics.h>
+#import "ITCoreGraphicsHacks.h"
+#import "ITTextField.h"
+#import "ITGrayRoundedView.h"
+
+
+/*************************************************************************/
+#pragma mark -
+#pragma mark EVIL HACKERY
+/*************************************************************************/
+
+@interface NSApplication (HACKHACKHACKHACK)
+- (CGSConnectionID)contextID;
+@end
+
+
+/*************************************************************************/
+#pragma mark -
+#pragma mark PRIVATE METHOD DECLARATIONS
+/*************************************************************************/
+
+@interface ITTransientStatusWindow (Private)
+- (id)initWithContentView:(NSView *)contentView
+ exitMode:(ITTransientStatusWindowExitMode)exitMode
+ backgroundType:(ITTransientStatusWindowBackgroundType)backgroundType;
+- (void)rebuildWindow;
+- (void)performEffect;
+- (void)dissolveEffect:(BOOL)entering;
+- (void)slideVerticalEffect:(BOOL)entering;
+- (void)slideHorizontalEffect:(BOOL)entering;
+@end
+
+
+/*************************************************************************/
+#pragma mark -
+#pragma mark IMPLEMENTATION
+/*************************************************************************/
+
+@implementation ITTransientStatusWindow
+
+
+/*************************************************************************/
+#pragma mark -
+#pragma mark SHARED STATIC OBJECTS
+/*************************************************************************/
+
+static ITTransientStatusWindow *staticWindow = nil;
+
+
+/*************************************************************************/
+#pragma mark -
+#pragma mark INITIALIZATION METHODS
+/*************************************************************************/
+
++ (ITTransientStatusWindow *)sharedWindow
+{
+ if ( ! (staticWindow) ) {
+ staticWindow = [[self alloc] initWithContentView:nil
+ exitMode:ITTransientStatusWindowExitAfterDelay
+ backgroundType:ITTransientStatusWindowRounded];
+ }
+ return staticWindow;
+}
+
+- (id)initWithContentView:(NSView *)contentView
+ exitMode:(ITTransientStatusWindowExitMode)exitMode
+ backgroundType:(ITTransientStatusWindowBackgroundType)backgroundType
+{
+ NSRect contentRect;
+
+ CGSValueObj key;
+ CGSValueObj ignore;
+
+ // If no Content View was provided, use a generic NSImageView with the app icon.
+ if ( ! (contentView) ) {
+ contentView = [[[NSView alloc] initWithFrame:
+ NSMakeRect(100.0, 100.0, 200.0, 200.0)] autorelease];
+ }
+
+ // Set the content rect to the frame of the content view, now guaranteed to exist.
+ contentRect = [contentView frame];
+
+ if ( ( self = [super initWithContentRect:contentRect
+ styleMask:NSBorderlessWindowMask
+ backing:NSBackingStoreBuffered
+ defer:NO] ) ) {
+
+ _visibilityState = ITTransientStatusWindowHiddenState;
+ _exitMode = exitMode;
+ _exitDelay = DEFAULT_EXIT_DELAY;
+ _backgroundType = backgroundType;
+ _verticalPosition = ITTransientStatusWindowPositionBottom;
+ _horizontalPosition = ITTransientStatusWindowPositionLeft;
+ _entryEffect = ITTransientStatusWindowEffectNone;
+ _exitEffect = ITTransientStatusWindowEffectDissolve;
+
+ _delayTimer = nil;
+ _fadeTimer = nil;
+
+// if ( _backgroundType == ITTransientStatusWindowRounded ) {
+// _contentSubView = contentView;
+// } else {
+// [self setContentView:contentView];
+// }
+
+// [self setIgnoresMouseEvents:YES];
+
+ key = CGSCreateCString("IgnoreForEvents");
+ ignore = CGSCreateBoolean(kCGSTrue);
+
+ CGSSetWindowProperty([NSApp contextID], (CGSWindowID)[self windowNumber], key, ignore);
+
+ CGSReleaseObj(key);
+ CGSReleaseObj(ignore);
+
+ [self setLevel:NSScreenSaverWindowLevel];
+ [self setContentView:contentView];
+ [self rebuildWindow];
+ }
+ return self;
+}
+
+
+/*************************************************************************/
+#pragma mark -
+#pragma mark INSTANCE METHODS
+/*************************************************************************/
+
+- (void)orderFront:(id)sender
+{
+ if ( _exitMode = ITTransientStatusWindowExitAfterDelay ) {
+ // set the timer, and orderOut: when it lapses.
+ }
+
+ if ( _entryEffect == ITTransientStatusWindowEffectNone ) {
+ [super orderFront:sender];
+ } else {
+ [self performEffect];
+ }
+}
+
+- (void)makeKeyAndOrderFront:(id)sender
+{
+ if ( _exitMode = ITTransientStatusWindowExitAfterDelay ) {
+ // set the timer, and orderOut: when it lapses.
+ }
+
+ if ( _entryEffect == ITTransientStatusWindowEffectNone ) {
+ [super makeKeyAndOrderFront:sender];
+ } else {
+ [self performEffect];
+ [self makeKeyWindow];
+ }
+}
+
+- (void)orderOut:(id)sender
+{
+ if ( _entryEffect == ITTransientStatusWindowEffectNone ) {
+ [super orderOut:sender];
+ } else {
+ [self performEffect];
+ }
+}
+
+/*
+
+- (id)contentView
+{
+ if ( _backgroundType == ITTransientStatusWindowRounded ) {
+ return _contentSubView;
+ } else {
+ return [super contentView];
+ }
+}
+
+- (void)setContentView:(NSView *)aView
+{
+ if ( _backgroundType == ITTransientStatusWindowRounded ) {
+ [_contentSubView removeFromSuperview];
+ _contentSubView = aView;
+ [_contentSubView setFrame:[[super contentView] frame]];
+ [[super contentView] addSubview:_contentSubView];
+ [_contentSubView setNextResponder:self];
+ } else {
+ [super setContentView:aView];
+ }
+}
+
+*/
+
+- (ITTransientStatusWindowVisibilityState)visibilityState
+{
+ return _visibilityState;
+}
+
+- (ITTransientStatusWindowExitMode)ExitMode
+{
+ return _exitMode;
+}
+
+- (void)setExitMode:(ITTransientStatusWindowExitMode)newMode
+{
+ _exitMode = newMode;
+}
+
+- (float)exitDelay
+{
+ return _exitDelay;
+}
+
+- (void)setExitDelay:(float)seconds
+{
+ _exitDelay = seconds;
+}
+
+- (ITTransientStatusWindowBackgroundType)backgroundType
+{
+// return _backgroundType;
+ return ITTransientStatusWindowRounded;
+}
+
+- (void)setBackgroundType:(ITTransientStatusWindowBackgroundType)newType
+{
+// setBackgroundType: is currently ignored. Defaults to ITTransientStatusWindowRounded.
+// _backgroundType = newType;
+ _backgroundType = ITTransientStatusWindowRounded;
+}
+
+- (ITTransientStatusWindowPosition)verticalPosition;
+{
+ return _verticalPosition;
+}
+
+- (void)setVerticalPosition:(ITTransientStatusWindowPosition)newPosition;
+{
+ _verticalPosition = newPosition;
+}
+
+- (ITTransientStatusWindowPosition)horizontalPosition;
+{
+ return _horizontalPosition;
+}
+
+- (void)setHorizontalPosition:(ITTransientStatusWindowPosition)newPosition;
+{
+ _horizontalPosition = newPosition;
+}
+
+- (ITTransientStatusWindowEffect)entryEffect
+{
+ return _entryEffect;
+}
+
+- (void)setEntryEffect:(ITTransientStatusWindowEffect)newEffect;
+{
+ _entryEffect = newEffect;
+}
+
+- (ITTransientStatusWindowEffect)exitEffect;
+{
+ return _exitEffect;
+}
+
+- (void)setExitEffect:(ITTransientStatusWindowEffect)newEffect;
+{
+ _exitEffect = newEffect;
+}
+
+
+/*************************************************************************/
+#pragma mark -
+#pragma mark PRIVATE METHODS
+/*************************************************************************/
+
+- (void)rebuildWindow;
+{
+ if ( _backgroundType == ITTransientStatusWindowRounded ) {
+ ITGrayRoundedView *roundedView = [[[ITGrayRoundedView alloc] initWithFrame:[self frame]] autorelease];
+
+ [self setBackgroundColor:[NSColor clearColor]];
+ [self setHasShadow:NO];
+ [self setOpaque:NO];
+
+ [self setContentView:roundedView];
+// [super setContentView:roundedView];
+// [_contentSubView setAutoresizingMask:(NSViewWidthSizable | NSViewHeightSizable)];
+// [self setContentView:_contentSubView];
+ } else {
+ // YUO == CLWONBAOT
+ }
+}
+
+- (void)performEffect
+{
+ if ( _visibilityState == ITTransientStatusWindowHiddenState ) {
+ if ( _entryEffect == ITTransientStatusWindowEffectDissolve ) {
+ [self dissolveEffect:YES];
+ } else if ( _entryEffect == ITTransientStatusWindowEffectSlideVertically ) {
+ [self slideEffect:YES];
+ } else if ( _entryEffect == ITTransientStatusWindowEffectSlideHorizontally ) {
+ [self slideEffect:YES];
+ }
+ } else if ( _visibilityState == ITTransientStatusWindowVisibleState ) {
+ if ( _exitEffect == ITTransientStatusWindowEffectDissolve ) {
+ [self dissolveEffect:NO];
+ } else if ( _exitEffect == ITTransientStatusWindowEffectSlideVertically ) {
+ [self slideEffect:NO];
+ } else if ( _exitEffect == ITTransientStatusWindowEffectSlideHorizontally ) {
+ [self slideEffect:NO];
+ }
+ }
+}
+
+- (void)dissolveEffect:(BOOL)entering
+{
+
+ [super orderFront:self];
+}
+
+- (void)slideVerticalEffect:(BOOL)entering
+{
+ [super orderFront:self];
+}
+
+- (void)slideHorizontalEffect:(BOOL)entering
+{
+ [super orderFront:self];
+}
+
+
+@end