12d785d7eSAndrew Rist /**************************************************************
2cdf0e10cSrcweir  *
32d785d7eSAndrew Rist  * Licensed to the Apache Software Foundation (ASF) under one
42d785d7eSAndrew Rist  * or more contributor license agreements.  See the NOTICE file
52d785d7eSAndrew Rist  * distributed with this work for additional information
62d785d7eSAndrew Rist  * regarding copyright ownership.  The ASF licenses this file
72d785d7eSAndrew Rist  * to you under the Apache License, Version 2.0 (the
82d785d7eSAndrew Rist  * "License"); you may not use this file except in compliance
92d785d7eSAndrew Rist  * with the License.  You may obtain a copy of the License at
102d785d7eSAndrew Rist  *
112d785d7eSAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
122d785d7eSAndrew Rist  *
132d785d7eSAndrew Rist  * Unless required by applicable law or agreed to in writing,
142d785d7eSAndrew Rist  * software distributed under the License is distributed on an
152d785d7eSAndrew Rist  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
162d785d7eSAndrew Rist  * KIND, either express or implied.  See the License for the
172d785d7eSAndrew Rist  * specific language governing permissions and limitations
182d785d7eSAndrew Rist  * under the License.
192d785d7eSAndrew Rist  *
202d785d7eSAndrew Rist  *************************************************************/
212d785d7eSAndrew Rist 
222d785d7eSAndrew Rist 
23cdf0e10cSrcweir 
24cdf0e10cSrcweir #ifndef FORMS_WINDOWSTATEGUARD_HXX
25cdf0e10cSrcweir #define FORMS_WINDOWSTATEGUARD_HXX
26cdf0e10cSrcweir 
27cdf0e10cSrcweir /** === begin UNO includes === **/
28cdf0e10cSrcweir #include <com/sun/star/awt/XWindow2.hpp>
29cdf0e10cSrcweir #include <com/sun/star/awt/XControlModel.hpp>
30cdf0e10cSrcweir /** === end UNO includes === **/
31cdf0e10cSrcweir #include <rtl/ref.hxx>
32cdf0e10cSrcweir 
33cdf0e10cSrcweir //........................................................................
34cdf0e10cSrcweir namespace frm
35cdf0e10cSrcweir {
36cdf0e10cSrcweir //........................................................................
37cdf0e10cSrcweir 
38cdf0e10cSrcweir 	//====================================================================
39cdf0e10cSrcweir 	//= WindowStateGuard
40cdf0e10cSrcweir 	//====================================================================
41cdf0e10cSrcweir     class WindowStateGuard_Impl;
42cdf0e10cSrcweir 
43cdf0e10cSrcweir     /** a helper class which monitors certain states of an XWindow2, and ensures
44cdf0e10cSrcweir         that they're consistent with respective properties at an XModel.
45cdf0e10cSrcweir 
46cdf0e10cSrcweir         For form controls, window states - such as "Enabled" - can be set by various
47cdf0e10cSrcweir         means. You can set the respective control model property, you can directly manipulate
48cdf0e10cSrcweir         the XWindow2, or the state can change implicitly due to VCL actions. In any case,
49cdf0e10cSrcweir         we need to ensure that the state does not contradict the model property "too much".
50cdf0e10cSrcweir 
51cdf0e10cSrcweir         As an example, consider a form control which, according to its model's property, is disabled.
52*7950f2afSmseidel         Now when the parent VCL window of the control's VCL window is enabled, then the control's
53cdf0e10cSrcweir         window is enabled, too - which contradicts the model property.
54cdf0e10cSrcweir 
55cdf0e10cSrcweir         A WindowStateGuard helps you preventing such inconsistent states.
56cdf0e10cSrcweir 
57cdf0e10cSrcweir         The class is not threadsafe.
58cdf0e10cSrcweir     */
59cdf0e10cSrcweir 	class WindowStateGuard
60cdf0e10cSrcweir 	{
61cdf0e10cSrcweir     private:
62cdf0e10cSrcweir         ::rtl::Reference< WindowStateGuard_Impl >   m_pImpl;
63cdf0e10cSrcweir 
64cdf0e10cSrcweir     public:
65cdf0e10cSrcweir         WindowStateGuard();
66cdf0e10cSrcweir         ~WindowStateGuard();
67cdf0e10cSrcweir 
68cdf0e10cSrcweir         void    attach(
69cdf0e10cSrcweir             const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XWindow2 >& _rxWindow,
70cdf0e10cSrcweir             const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XControlModel >& _rxModel
71cdf0e10cSrcweir         );
72cdf0e10cSrcweir 	};
73cdf0e10cSrcweir 
74cdf0e10cSrcweir //........................................................................
75cdf0e10cSrcweir } // namespace frm
76cdf0e10cSrcweir //........................................................................
77cdf0e10cSrcweir 
78cdf0e10cSrcweir #endif // FORMS_WINDOWSTATEGUARD_HXX
79cdf0e10cSrcweir 
80