xref: /trunk/main/forms/source/component/Hidden.cxx (revision cdf0e10c4e3984b49a9502b011690b615761d4a3)
1 /*************************************************************************
2  *
3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4  *
5  * Copyright 2000, 2010 Oracle and/or its affiliates.
6  *
7  * OpenOffice.org - a multi-platform office productivity suite
8  *
9  * This file is part of OpenOffice.org.
10  *
11  * OpenOffice.org is free software: you can redistribute it and/or modify
12  * it under the terms of the GNU Lesser General Public License version 3
13  * only, as published by the Free Software Foundation.
14  *
15  * OpenOffice.org is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18  * GNU Lesser General Public License version 3 for more details
19  * (a copy is included in the LICENSE file that accompanied this code).
20  *
21  * You should have received a copy of the GNU Lesser General Public License
22  * version 3 along with OpenOffice.org.  If not, see
23  * <http://www.openoffice.org/license.html>
24  * for a copy of the LGPLv3 License.
25  *
26  ************************************************************************/
27 
28 // MARKER(update_precomp.py): autogen include statement, do not remove
29 #include "precompiled_forms.hxx"
30 #include "Hidden.hxx"
31 #include "property.hxx"
32 #ifndef _FRM_PROPERTY_HRC_
33 #include "property.hrc"
34 #endif
35 #include "services.hxx"
36 #include <tools/debug.hxx>
37 #include <comphelper/basicio.hxx>
38 
39 //.........................................................................
40 namespace frm
41 {
42 using namespace ::com::sun::star::uno;
43 using namespace ::com::sun::star::sdb;
44 using namespace ::com::sun::star::sdbc;
45 using namespace ::com::sun::star::sdbcx;
46 using namespace ::com::sun::star::beans;
47 using namespace ::com::sun::star::container;
48 using namespace ::com::sun::star::form;
49 using namespace ::com::sun::star::awt;
50 using namespace ::com::sun::star::io;
51 using namespace ::com::sun::star::lang;
52 using namespace ::com::sun::star::util;
53 
54 //------------------------------------------------------------------
55 InterfaceRef SAL_CALL OHiddenModel_CreateInstance(const Reference<XMultiServiceFactory>& _rxFactory) throw (RuntimeException)
56 {
57     return *(new OHiddenModel(_rxFactory));
58 }
59 
60 //------------------------------------------------------------------
61 DBG_NAME( OHiddenModel )
62 //------------------------------------------------------------------
63 OHiddenModel::OHiddenModel(const Reference<XMultiServiceFactory>& _rxFactory)
64     :OControlModel(_rxFactory, ::rtl::OUString())
65 {
66     DBG_CTOR( OHiddenModel, NULL );
67     m_nClassId = FormComponentType::HIDDENCONTROL;
68 }
69 
70 //------------------------------------------------------------------
71 OHiddenModel::OHiddenModel( const OHiddenModel* _pOriginal, const Reference<XMultiServiceFactory>& _rxFactory )
72     :OControlModel( _pOriginal, _rxFactory )
73 {
74     DBG_CTOR( OHiddenModel, NULL );
75     m_sHiddenValue = _pOriginal->m_sHiddenValue;
76 }
77 
78 //------------------------------------------------------------------------------
79 OHiddenModel::~OHiddenModel( )
80 {
81     DBG_CTOR( OHiddenModel, NULL );
82 }
83 
84 //------------------------------------------------------------------------------
85 IMPLEMENT_DEFAULT_CLONING( OHiddenModel )
86 
87 //------------------------------------------------------------------------------
88 void OHiddenModel::getFastPropertyValue(Any& _rValue, sal_Int32 _nHandle) const
89 {
90     switch (_nHandle)
91     {
92         case PROPERTY_ID_HIDDEN_VALUE : _rValue <<= m_sHiddenValue; break;
93         default:
94             OControlModel::getFastPropertyValue(_rValue, _nHandle);
95     }
96 }
97 
98 //------------------------------------------------------------------------------
99 void OHiddenModel::setFastPropertyValue_NoBroadcast(sal_Int32 _nHandle, const Any& _rValue) throw (com::sun::star::uno::Exception)
100 {
101     switch (_nHandle)
102     {
103         case PROPERTY_ID_HIDDEN_VALUE :
104             DBG_ASSERT(_rValue.getValueType().getTypeClass() == TypeClass_STRING, "OHiddenModel::setFastPropertyValue_NoBroadcast : invalid type !" );
105             _rValue >>= m_sHiddenValue;
106             break;
107         default:
108             OControlModel::setFastPropertyValue_NoBroadcast(_nHandle, _rValue);
109     }
110 }
111 
112 //------------------------------------------------------------------------------
113 sal_Bool OHiddenModel::convertFastPropertyValue(
114             Any& _rConvertedValue, Any& _rOldValue, sal_Int32 _nHandle, const Any& _rValue)
115             throw (IllegalArgumentException)
116 {
117     sal_Bool bModified(sal_False);
118     switch (_nHandle)
119     {
120         case PROPERTY_ID_HIDDEN_VALUE :
121             bModified = tryPropertyValue(_rConvertedValue, _rOldValue, _rValue, m_sHiddenValue);
122             break;
123         default:
124             bModified = OControlModel::convertFastPropertyValue(_rConvertedValue, _rOldValue, _nHandle, _rValue);
125             break;
126     }
127     return bModified;
128 }
129 
130 //------------------------------------------------------------------------------
131 void OHiddenModel::describeFixedProperties( Sequence< Property >& _rProps ) const
132 {
133     BEGIN_DESCRIBE_BASE_PROPERTIES(4)
134         DECL_PROP2(CLASSID,         sal_Int16,          READONLY, TRANSIENT);
135         DECL_PROP1(HIDDEN_VALUE,    ::rtl::OUString,    BOUND);
136         DECL_PROP1(NAME,            ::rtl::OUString,    BOUND);
137         DECL_PROP1(TAG,             ::rtl::OUString,    BOUND);
138     END_DESCRIBE_PROPERTIES();
139 }
140 
141 // XServiceInfo
142 //------------------------------------------------------------------------------
143 StringSequence SAL_CALL OHiddenModel::getSupportedServiceNames() throw(::com::sun::star::uno::RuntimeException)
144 {
145     StringSequence aSupported( 2 );
146     aSupported[ 0 ] = FRM_SUN_COMPONENT_HIDDENCONTROL;
147     aSupported[ 1 ] = FRM_SUN_FORMCOMPONENT;
148     return aSupported;
149 }
150 
151 //------------------------------------------------------------------------------
152 ::rtl::OUString SAL_CALL OHiddenModel::getServiceName() throw(RuntimeException)
153 {
154     return FRM_COMPONENT_HIDDEN;    // old (non-sun) name for compatibility !
155 }
156 
157 //------------------------------------------------------------------------------
158 void SAL_CALL OHiddenModel::write(const Reference<XObjectOutputStream>& _rxOutStream)
159     throw(IOException, RuntimeException)
160 {
161     // Version
162     _rxOutStream->writeShort(0x0002);
163 
164     // Wert
165     _rxOutStream << m_sHiddenValue;
166 
167     OControlModel::write(_rxOutStream);
168 }
169 
170 //------------------------------------------------------------------------------
171 void SAL_CALL OHiddenModel::read(const Reference<XObjectInputStream>& _rxInStream) throw(IOException, RuntimeException)
172 {
173     // Version
174     sal_uInt16 nVersion = _rxInStream->readShort();
175 
176     // Name
177     DBG_ASSERT(nVersion != 1, "OHiddenModel::read : this version is obsolete !");
178     switch (nVersion)
179     {
180         case 1 : { ::rtl::OUString sDummy; _rxInStream >> sDummy; _rxInStream >> m_sHiddenValue; } break;
181         case 2 : _rxInStream >> m_sHiddenValue; break;
182         default : DBG_ERROR("OHiddenModel::read : unknown version !"); m_sHiddenValue = ::rtl::OUString();
183     }
184     OControlModel::read(_rxInStream);
185 }
186 
187 //.........................................................................
188 }
189 //.........................................................................
190 
191