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