Changes for MT
[ITKit.git] / ITTransientStatusWindow.h
1 /*
2  *      ITKit
3  *  ITTransientStatusWindow
4  *    NSWindow subclass for quick display of status information.
5  *    Similar to volume/brightness/eject bezel key windows.
6  *
7  *  Original Author : Kent Sutherland <joseph.spiros@ithinksw.com>
8  *  Original Author : Matt Judy <mjudy@ithinksw.com>
9  *   Responsibility : Matt Judy <mjudy@ithinksw.com>
10  *   Responsibility : Joseph Spiros <joseph.spiros@ithinksw.com>
11  *
12  *  Copyright (c) 2002 - 2003 iThink Software.
13  *  All Rights Reserved
14  *
15  */
16
17
18 #import <Cocoa/Cocoa.h>
19
20
21 #define DEFAULT_EXIT_DELAY  3.0
22 #define DEFAULT_EFFECT_TIME 0.75
23
24
25 @class ITTextField;
26 @class ITGrayRoundedView;
27
28
29 typedef enum {
30     ITTransientStatusWindowHiddenState,
31     ITTransientStatusWindowEnteringState,
32     ITTransientStatusWindowVisibleState,
33     ITTransientStatusWindowExitingState
34 } ITTransientStatusWindowVisibilityState;
35
36 typedef enum {
37     ITTransientStatusWindowExitOnOrderOut,
38     ITTransientStatusWindowExitAfterDelay,
39 } ITTransientStatusWindowExitMode;
40
41 typedef enum {
42     ITTransientStatusWindowNoBackground,
43     ITTransientStatusWindowRounded,
44     ITTransientStatusWindowSquare,
45     ITTransientStatusWindowMetal,
46     ITTransientStatusWindowMetalUtility,
47     ITTransientStatusWindowAquaUtility
48 } ITTransientStatusWindowBackgroundType;
49
50 typedef enum {
51     ITTransientStatusWindowPositionTop,
52     ITTransientStatusWindowPositionMiddle,
53     ITTransientStatusWindowPositionBottom,
54     ITTransientStatusWindowPositionLeft,
55     ITTransientStatusWindowPositionCenter,
56     ITTransientStatusWindowPositionRight,
57     ITTransientStatusWindowOther
58 } ITTransientStatusWindowPosition;
59
60 typedef enum {                                      // Note: Entry effects described here.  Exit does the reverse.
61     ITTransientStatusWindowEffectNone,              // No effect, window just appears.
62     ITTransientStatusWindowEffectDissolve,          // Fades in.
63     ITTransientStatusWindowEffectSlideVertically,   // Slides vertically onto the screen from the nearest edge
64     ITTransientStatusWindowEffectSlideHorizontally, // Slides horizontally onto the screen from the nearest edge
65     ITTransientStatusWindowEffectPivot              // Rotate into place from perpendicular edge
66 } ITTransientStatusWindowEffect;
67
68
69 @interface ITTransientStatusWindow : NSWindow {
70
71     ITTransientStatusWindowVisibilityState _visibilityState;
72     ITTransientStatusWindowExitMode        _exitMode;
73     float                                  _exitDelay;
74     ITTransientStatusWindowBackgroundType  _backgroundType;
75     ITTransientStatusWindowEffect          _entryEffect;
76     ITTransientStatusWindowEffect          _exitEffect;
77     float                                  _effectTime;
78     double                                 _effectProgress;
79     ITTransientStatusWindowPosition        _verticalPosition;
80     ITTransientStatusWindowPosition        _horizontalPosition;
81
82     BOOL _reallyIgnoresEvents;
83     
84     NSTimer *_delayTimer;
85     NSTimer *_effectTimer;
86
87 //  NSView *_contentSubView;            
88 }
89
90 + (id)sharedWindow;
91
92 - (id)initWithContentView:(NSView *)contentView
93                  exitMode:(ITTransientStatusWindowExitMode)exitMode
94            backgroundType:(ITTransientStatusWindowBackgroundType)backgroundType;
95
96 - (ITTransientStatusWindowVisibilityState)visibilityState;
97
98 - (ITTransientStatusWindowExitMode)exitMode;
99 - (void)setExitMode:(ITTransientStatusWindowExitMode)newMode;
100
101 - (float)exitDelay;
102 - (void)setExitDelay:(float)seconds;
103
104 - (ITTransientStatusWindowBackgroundType)backgroundType;
105 - (void)setBackgroundType:(ITTransientStatusWindowBackgroundType)newType;
106
107 - (ITTransientStatusWindowPosition)verticalPosition;
108 - (void)setVerticalPosition:(ITTransientStatusWindowPosition)newPosition;
109
110 - (ITTransientStatusWindowPosition)horizontalPosition;
111 - (void)setHorizontalPosition:(ITTransientStatusWindowPosition)newPosition;
112
113 - (ITTransientStatusWindowEffect)entryEffect;
114 - (void)setEntryEffect:(ITTransientStatusWindowEffect)newEffect;
115
116 - (ITTransientStatusWindowEffect)exitEffect;
117 - (void)setExitEffect:(ITTransientStatusWindowEffect)newEffect;
118
119
120 @end