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 #ifndef _SVX_FMOBJ_HXX 28 #define _SVX_FMOBJ_HXX 29 30 #include <svx/svdouno.hxx> 31 #include <com/sun/star/script/ScriptEventDescriptor.hpp> 32 #include <com/sun/star/container/XIndexContainer.hpp> 33 34 class FmFormView; 35 36 //================================================================== 37 // FmFormObj 38 //================================================================== 39 class FmXForms; 40 class FmFormObj: public SdrUnoObj 41 { 42 ::com::sun::star::uno::Sequence< ::com::sun::star::script::ScriptEventDescriptor > aEvts; // events des Objects 43 ::com::sun::star::uno::Sequence< ::com::sun::star::script::ScriptEventDescriptor> m_aEventsHistory; 44 // valid if and only if m_pEnvironmentHistory != NULL, this are the events which we're set when 45 // m_pEnvironmentHistory was created 46 47 FmFormView* m_pControlCreationView; 48 sal_uLong m_nControlCreationEvent; 49 50 // Informationen fuer die Controlumgebung 51 // werden nur vorgehalten, wenn ein Object sich nicht in einer Objectliste befindet 52 ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexContainer> m_xParent; 53 ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexContainer > m_xEnvironmentHistory; 54 sal_Int32 m_nPos; 55 sal_Int32 m_nType; 56 57 OutputDevice* m_pLastKnownRefDevice; 58 // the last ref device we know, as set at the model 59 // only to be used for comparison with the current ref device! 60 61 public: 62 SVX_DLLPUBLIC FmFormObj(const ::rtl::OUString& rModelName,sal_Int32 _nType); 63 SVX_DLLPUBLIC FmFormObj(sal_Int32 _nType); 64 65 TYPEINFO(); 66 67 const ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexContainer>& 68 GetOriginalParent() const { return m_xParent; } 69 const ::com::sun::star::uno::Sequence< ::com::sun::star::script::ScriptEventDescriptor >& 70 GetOriginalEvents() const { return aEvts; } 71 sal_Int32 72 GetOriginalIndex() const { return m_nPos; } 73 74 void SetObjEnv( 75 const ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexContainer>& xForm, 76 const sal_Int32 nIdx, 77 const ::com::sun::star::uno::Sequence< ::com::sun::star::script::ScriptEventDescriptor >& rEvts ); 78 void ClearObjEnv(); 79 80 public: 81 virtual ~FmFormObj(); 82 virtual void SetPage(SdrPage* pNewPage); 83 84 virtual sal_uInt32 GetObjInventor() const; 85 virtual sal_uInt16 GetObjIdentifier() const; 86 virtual void NbcReformatText(); 87 88 virtual SdrObject* Clone() const; 89 // #116235# virtual SdrObject* Clone(SdrPage* pPage, SdrModel* pModel) const; 90 virtual void operator= (const SdrObject& rObj); 91 92 virtual void SetModel(SdrModel* pNewModel); 93 94 virtual void clonedFrom(const FmFormObj* _pSource); 95 96 static ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface> ensureModelEnv(const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface>& _rSourceContainer, const ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexContainer> _rTopLevelDestContainer); 97 98 /** returns the FmFormObj behind the given SdrObject 99 100 In case the SdrObject *is* an FmFormObject, this is a simple cast. In case the SdrObject 101 is a virtual object whose referenced object is an FmFormObj, then this referenced 102 object is returned. In all other cases, NULL is returned. 103 */ 104 static FmFormObj* GetFormObject( SdrObject* _pSdrObject ); 105 static const FmFormObj* GetFormObject( const SdrObject* _pSdrObject ); 106 107 /** returns the type of this form object. See fmglob.hxx 108 */ 109 sal_Int32 getType() const; 110 111 virtual void SetUnoControlModel( const ::com::sun::star::uno::Reference< com::sun::star::awt::XControlModel >& _rxModel ); 112 113 protected: 114 virtual FASTBOOL EndCreate( SdrDragStat& rStat, SdrCreateCmd eCmd ); 115 virtual void BrkCreate( SdrDragStat& rStat ); 116 117 // #i70852# overload Layer interface to force to FormColtrol layer 118 virtual SdrLayerID GetLayer() const; 119 virtual void NbcSetLayer(SdrLayerID nLayer); 120 121 private: 122 /** isolates the control model from its form component hierarchy, i.e. removes it from 123 its parent. 124 */ 125 void impl_isolateControlModel_nothrow(); 126 127 /** forwards the reference device of our SdrModel to the control model 128 */ 129 void impl_checkRefDevice_nothrow( bool _force = false ); 130 }; 131 132 133 #endif // _FM_FMOBJ_HXX 134 135