1*2d785d7eSAndrew Rist /************************************************************** 2cdf0e10cSrcweir * 3*2d785d7eSAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one 4*2d785d7eSAndrew Rist * or more contributor license agreements. See the NOTICE file 5*2d785d7eSAndrew Rist * distributed with this work for additional information 6*2d785d7eSAndrew Rist * regarding copyright ownership. The ASF licenses this file 7*2d785d7eSAndrew Rist * to you under the Apache License, Version 2.0 (the 8*2d785d7eSAndrew Rist * "License"); you may not use this file except in compliance 9*2d785d7eSAndrew Rist * with the License. You may obtain a copy of the License at 10*2d785d7eSAndrew Rist * 11*2d785d7eSAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0 12*2d785d7eSAndrew Rist * 13*2d785d7eSAndrew Rist * Unless required by applicable law or agreed to in writing, 14*2d785d7eSAndrew Rist * software distributed under the License is distributed on an 15*2d785d7eSAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*2d785d7eSAndrew Rist * KIND, either express or implied. See the License for the 17*2d785d7eSAndrew Rist * specific language governing permissions and limitations 18*2d785d7eSAndrew Rist * under the License. 19*2d785d7eSAndrew Rist * 20*2d785d7eSAndrew Rist *************************************************************/ 21*2d785d7eSAndrew Rist 22*2d785d7eSAndrew 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. 52cdf0e10cSrcweir Now when the parent VCL window of the control's VCL window is enabled, then the 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