1 /*
2    Copyright (C) 1996 Scott W. Sadler
3    All rights reserved.
4 */
5 
6 /*
7    XsMDICanvas.h
8 
9    History
10       03-Mar-96 1.0; Scott W. Sadler (ssadler@cisco.com)
11                      Created
12 */
13 
14 #ifndef XSMDICANVAS_H
15 #define XSMDICANVAS_H
16 
17 // Includes
18 
19 #include "XsComponent.h"
20 
21 // Forward declarations
22 
23 class XsMDIWindow;
24 
25 // XsMDICanvas class
26 
27 class XsMDICanvas : public XsComponent {
28 
29    public:
30 
31 // Constructor/Destructor
32 
33       XsMDICanvas (const char *name, Widget parent);
34       virtual ~XsMDICanvas ( );
35 
36 // MDI Window manipulation
37 
38       virtual void add (XsMDIWindow *win);      // Add an MDI window
39       virtual void remove (XsMDIWindow *win);   // Remove an MDI window
40       void removeAll ( );                       // Remove all MDI windows
41 
42 // Utilities
43 
44       int   numWindows ( ) const;            // Number of MDI windows
GetDrawingArea()45       Widget GetDrawingArea() const { return _drawArea; }
46 
47 // Component methods
48 
49       virtual void show ( );
50 
51 // Class name
52 
53       virtual const char *className ( ) const;
54 
55    protected:
56 
57 // Component life-cycle
58 
59       virtual void _componentDestroyed ( );
60 
61 // Geometry management
62 
63       virtual  void _placeWindow (XsMDIWindow *win);
64 
65 // Canvas resize handler
66 
67       virtual void   _resize (XtPointer);
68 
69 // Implementation
70 
71       Widget         _clipWin;
72       Widget         _drawArea;
73 
74       XsMDIWindow  **_list;
75       int            _num;
76       int            _max;
77       int            _place;
78 
79    private:
80 
81 // Callbacks
82 
83       static void _clipResizeCallback (Widget, XtPointer, XtPointer);
84       static void _canvasResizeCallback (Widget, XtPointer, XtPointer);
85 
86 // Resources
87 
88       static String  _resources[];
89 };
90 
91 // Inline member functions
92 
numWindows()93 inline XsMDICanvas::numWindows ( ) const
94 {
95    return (_num);
96 }
97 
98 #endif
99