1 /*************************************************************************
2  *
3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4  *
5  * Copyright 2008 by Sun Microsystems, Inc.
6  *
7  * OpenOffice.org - a multi-platform office productivity suite
8  *
9  * $RCSfile: mediawindow_impl.hxx,v $
10  * $Revision: 1.3 $
11  *
12  * This file is part of OpenOffice.org.
13  *
14  * OpenOffice.org is free software: you can redistribute it and/or modify
15  * it under the terms of the GNU Lesser General Public License version 3
16  * only, as published by the Free Software Foundation.
17  *
18  * OpenOffice.org is distributed in the hope that it will be useful,
19  * but WITHOUT ANY WARRANTY; without even the implied warranty of
20  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
21  * GNU Lesser General Public License version 3 for more details
22  * (a copy is included in the LICENSE file that accompanied this code).
23  *
24  * You should have received a copy of the GNU Lesser General Public License
25  * version 3 along with OpenOffice.org.  If not, see
26  * <http://www.openoffice.org/license.html>
27  * for a copy of the LGPLv3 License.
28  *
29  ************************************************************************/
30 
31 #ifndef _AVMEDIA_MEDIAWINDOW_IMPL_HXX
32 #define _AVMEDIA_MEDIAWINDOW_IMPL_HXX
33 
34 #include <svtools/transfer.hxx>
35 #include <vcl/syschild.hxx>
36 
37 #include "mediawindowbase_impl.hxx"
38 #include "mediacontrol.hxx"
39 
40 class BitmapEx;
41 
42 namespace avmedia
43 {
44     namespace priv
45     {
46 		// ----------------------
47 		// - MediaWindowControl -
48 		// ----------------------
49 
50 		class MediaWindowControl : public MediaControl
51 		{
52 		public:
53 
54 					MediaWindowControl( Window* pParent );
55 					~MediaWindowControl();
56 
57 		protected:
58 
59 			void 	update();
60 			void 	execute( const MediaItem& rItem );
61 		};
62 
63 		// --------------------
64 		// - MediaChildWindow -
65 		// --------------------
66 
67 		class MediaChildWindow : public SystemChildWindow
68 		{
69 		public:
70 
71 							MediaChildWindow( Window* pParent );
72 							~MediaChildWindow();
73 
74 		protected:
75 
76             virtual void    MouseMove( const MouseEvent& rMEvt );
77             virtual void    MouseButtonDown( const MouseEvent& rMEvt );
78             virtual void    MouseButtonUp( const MouseEvent& rMEvt );
79             virtual void    KeyInput( const KeyEvent& rKEvt );
80             virtual void    KeyUp( const KeyEvent& rKEvt );
81             virtual void    Command( const CommandEvent& rCEvt );
82 		};
83 
84         // ------------------.
85         // - MediaWindowImpl -
86         // -------------------
87 
88         class MediaEventListenersImpl;
89 
90         class MediaWindowImpl : public Control,
91                                 public MediaWindowBaseImpl,
92                                 public DropTargetHelper,
93                                 public DragSourceHelper
94 
95         {
96         public:
97 
98                             MediaWindowImpl( Window* parent, MediaWindow* pMediaWindow, bool bInternalMediaControl );
99             virtual         ~MediaWindowImpl();
100 
101             virtual void    cleanUp();
102 			virtual void	onURLChanged();
103 
104 		public:
105 
106 			void			update();
107 
108             void    		setPosSize( const Rectangle& rRect );
109 
110 			void			setPointer( const Pointer& rPointer );
111 			const Pointer&	getPointer() const;
112 
113 			bool			hasInternalMediaControl() const;
114 
115         protected:
116 
117             // Window
118             virtual void    MouseMove( const MouseEvent& rMEvt );
119             virtual void    MouseButtonDown( const MouseEvent& rMEvt );
120             virtual void    MouseButtonUp( const MouseEvent& rMEvt );
121             virtual void    KeyInput( const KeyEvent& rKEvt );
122             virtual void    KeyUp( const KeyEvent& rKEvt );
123             virtual void    Command( const CommandEvent& rCEvt );
124             virtual void    Resize();
125             virtual void    StateChanged( StateChangedType );
126             virtual void    Paint( const Rectangle& ); // const
127             virtual void    GetFocus();
128 
129             // DropTargetHelper
130 	        virtual sal_Int8 AcceptDrop( const AcceptDropEvent& rEvt );
131         	virtual sal_Int8 ExecuteDrop( const ExecuteDropEvent& rEvt );
132 
133             // DragSourceHelper
134         	virtual void    StartDrag( sal_Int8 nAction, const Point& rPosPixel );
135 
136         private:
137 
138 			::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >	mxEventsIf;
139             MediaEventListenersImpl*                                                mpEvents;
140 			MediaChildWindow														maChildWindow;
141 			MediaWindowControl*														mpMediaWindowControl;
142 			BitmapEx*																mpEmptyBmpEx;
143 			BitmapEx*																mpAudioBmpEx;
144         };
145     }
146 }
147 
148 #endif
149