1*b1cdbd2cSJim Jagielski /************************************************************** 2*b1cdbd2cSJim Jagielski * 3*b1cdbd2cSJim Jagielski * Licensed to the Apache Software Foundation (ASF) under one 4*b1cdbd2cSJim Jagielski * or more contributor license agreements. See the NOTICE file 5*b1cdbd2cSJim Jagielski * distributed with this work for additional information 6*b1cdbd2cSJim Jagielski * regarding copyright ownership. The ASF licenses this file 7*b1cdbd2cSJim Jagielski * to you under the Apache License, Version 2.0 (the 8*b1cdbd2cSJim Jagielski * "License"); you may not use this file except in compliance 9*b1cdbd2cSJim Jagielski * with the License. You may obtain a copy of the License at 10*b1cdbd2cSJim Jagielski * 11*b1cdbd2cSJim Jagielski * http://www.apache.org/licenses/LICENSE-2.0 12*b1cdbd2cSJim Jagielski * 13*b1cdbd2cSJim Jagielski * Unless required by applicable law or agreed to in writing, 14*b1cdbd2cSJim Jagielski * software distributed under the License is distributed on an 15*b1cdbd2cSJim Jagielski * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*b1cdbd2cSJim Jagielski * KIND, either express or implied. See the License for the 17*b1cdbd2cSJim Jagielski * specific language governing permissions and limitations 18*b1cdbd2cSJim Jagielski * under the License. 19*b1cdbd2cSJim Jagielski * 20*b1cdbd2cSJim Jagielski *************************************************************/ 21*b1cdbd2cSJim Jagielski 22*b1cdbd2cSJim Jagielski 23*b1cdbd2cSJim Jagielski 24*b1cdbd2cSJim Jagielski #ifndef SW_UNOBOOKMARK_HXX 25*b1cdbd2cSJim Jagielski #define SW_UNOBOOKMARK_HXX 26*b1cdbd2cSJim Jagielski 27*b1cdbd2cSJim Jagielski #include <com/sun/star/lang/XUnoTunnel.hpp> 28*b1cdbd2cSJim Jagielski #include <com/sun/star/lang/XServiceInfo.hpp> 29*b1cdbd2cSJim Jagielski #include <com/sun/star/beans/XPropertySet.hpp> 30*b1cdbd2cSJim Jagielski #include <com/sun/star/container/XNamed.hpp> 31*b1cdbd2cSJim Jagielski #include <com/sun/star/text/XTextContent.hpp> 32*b1cdbd2cSJim Jagielski #include <com/sun/star/text/XFormField.hpp> 33*b1cdbd2cSJim Jagielski 34*b1cdbd2cSJim Jagielski #include <cppuhelper/implbase5.hxx> 35*b1cdbd2cSJim Jagielski 36*b1cdbd2cSJim Jagielski #include <sfx2/Metadatable.hxx> 37*b1cdbd2cSJim Jagielski 38*b1cdbd2cSJim Jagielski #include <unobaseclass.hxx> 39*b1cdbd2cSJim Jagielski #include <IDocumentMarkAccess.hxx> 40*b1cdbd2cSJim Jagielski 41*b1cdbd2cSJim Jagielski 42*b1cdbd2cSJim Jagielski class SwDoc; 43*b1cdbd2cSJim Jagielski 44*b1cdbd2cSJim Jagielski 45*b1cdbd2cSJim Jagielski typedef ::cppu::ImplInheritanceHelper5 46*b1cdbd2cSJim Jagielski < ::sfx2::MetadatableMixin 47*b1cdbd2cSJim Jagielski , ::com::sun::star::lang::XUnoTunnel 48*b1cdbd2cSJim Jagielski , ::com::sun::star::lang::XServiceInfo 49*b1cdbd2cSJim Jagielski , ::com::sun::star::beans::XPropertySet 50*b1cdbd2cSJim Jagielski , ::com::sun::star::container::XNamed 51*b1cdbd2cSJim Jagielski , ::com::sun::star::text::XTextContent 52*b1cdbd2cSJim Jagielski > SwXBookmark_Base; 53*b1cdbd2cSJim Jagielski 54*b1cdbd2cSJim Jagielski class SwXBookmark 55*b1cdbd2cSJim Jagielski : public SwXBookmark_Base 56*b1cdbd2cSJim Jagielski { 57*b1cdbd2cSJim Jagielski 58*b1cdbd2cSJim Jagielski private: 59*b1cdbd2cSJim Jagielski 60*b1cdbd2cSJim Jagielski class Impl; 61*b1cdbd2cSJim Jagielski ::sw::UnoImplPtr<Impl> m_pImpl; 62*b1cdbd2cSJim Jagielski 63*b1cdbd2cSJim Jagielski protected: 64*b1cdbd2cSJim Jagielski 65*b1cdbd2cSJim Jagielski void attachToRangeEx( 66*b1cdbd2cSJim Jagielski const ::com::sun::star::uno::Reference< 67*b1cdbd2cSJim Jagielski ::com::sun::star::text::XTextRange > & xTextRange, 68*b1cdbd2cSJim Jagielski IDocumentMarkAccess::MarkType eType) 69*b1cdbd2cSJim Jagielski throw (::com::sun::star::lang::IllegalArgumentException, 70*b1cdbd2cSJim Jagielski ::com::sun::star::uno::RuntimeException ); 71*b1cdbd2cSJim Jagielski virtual void attachToRange( 72*b1cdbd2cSJim Jagielski const ::com::sun::star::uno::Reference< 73*b1cdbd2cSJim Jagielski ::com::sun::star::text::XTextRange > & xTextRange) 74*b1cdbd2cSJim Jagielski throw (::com::sun::star::lang::IllegalArgumentException, 75*b1cdbd2cSJim Jagielski ::com::sun::star::uno::RuntimeException); 76*b1cdbd2cSJim Jagielski 77*b1cdbd2cSJim Jagielski const ::sw::mark::IMark* GetBookmark() const; 78*b1cdbd2cSJim Jagielski 79*b1cdbd2cSJim Jagielski virtual ~SwXBookmark(); 80*b1cdbd2cSJim Jagielski 81*b1cdbd2cSJim Jagielski /// @param pDoc and pMark != 0, but not & because of ImplInheritanceHelper 82*b1cdbd2cSJim Jagielski SwXBookmark(::sw::mark::IMark *const pMark, SwDoc *const pDoc); 83*b1cdbd2cSJim Jagielski 84*b1cdbd2cSJim Jagielski void registerInMark( ::sw::mark::IMark *const pBkmk ); 85*b1cdbd2cSJim Jagielski 86*b1cdbd2cSJim Jagielski public: 87*b1cdbd2cSJim Jagielski 88*b1cdbd2cSJim Jagielski /// descriptor 89*b1cdbd2cSJim Jagielski SwXBookmark(); 90*b1cdbd2cSJim Jagielski 91*b1cdbd2cSJim Jagielski static ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextContent > 92*b1cdbd2cSJim Jagielski CreateXBookmark(SwDoc & rDoc, ::sw::mark::IMark & rBookmark); 93*b1cdbd2cSJim Jagielski 94*b1cdbd2cSJim Jagielski /// @return IMark for this, but only if it lives in pDoc 95*b1cdbd2cSJim Jagielski static ::sw::mark::IMark const* GetBookmarkInDoc(SwDoc const*const pDoc, 96*b1cdbd2cSJim Jagielski const ::com::sun::star::uno::Reference< 97*b1cdbd2cSJim Jagielski ::com::sun::star::lang::XUnoTunnel> & xUT); 98*b1cdbd2cSJim Jagielski 99*b1cdbd2cSJim Jagielski // MetadatableMixin 100*b1cdbd2cSJim Jagielski virtual ::sfx2::Metadatable* GetCoreObject(); 101*b1cdbd2cSJim Jagielski virtual ::com::sun::star::uno::Reference< 102*b1cdbd2cSJim Jagielski ::com::sun::star::frame::XModel > GetModel(); 103*b1cdbd2cSJim Jagielski 104*b1cdbd2cSJim Jagielski static const ::com::sun::star::uno::Sequence< sal_Int8 >& getUnoTunnelId(); 105*b1cdbd2cSJim Jagielski 106*b1cdbd2cSJim Jagielski // XUnoTunnel 107*b1cdbd2cSJim Jagielski virtual sal_Int64 SAL_CALL getSomething( 108*b1cdbd2cSJim Jagielski const ::com::sun::star::uno::Sequence< sal_Int8 >& rIdentifier) 109*b1cdbd2cSJim Jagielski throw (::com::sun::star::uno::RuntimeException); 110*b1cdbd2cSJim Jagielski 111*b1cdbd2cSJim Jagielski // XServiceInfo 112*b1cdbd2cSJim Jagielski virtual ::rtl::OUString SAL_CALL getImplementationName() 113*b1cdbd2cSJim Jagielski throw (::com::sun::star::uno::RuntimeException); 114*b1cdbd2cSJim Jagielski virtual sal_Bool SAL_CALL supportsService( 115*b1cdbd2cSJim Jagielski const ::rtl::OUString& rServiceName) 116*b1cdbd2cSJim Jagielski throw (::com::sun::star::uno::RuntimeException); 117*b1cdbd2cSJim Jagielski virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL 118*b1cdbd2cSJim Jagielski getSupportedServiceNames() 119*b1cdbd2cSJim Jagielski throw (::com::sun::star::uno::RuntimeException); 120*b1cdbd2cSJim Jagielski 121*b1cdbd2cSJim Jagielski // XComponent 122*b1cdbd2cSJim Jagielski virtual void SAL_CALL dispose() 123*b1cdbd2cSJim Jagielski throw (::com::sun::star::uno::RuntimeException); 124*b1cdbd2cSJim Jagielski virtual void SAL_CALL addEventListener( 125*b1cdbd2cSJim Jagielski const ::com::sun::star::uno::Reference< 126*b1cdbd2cSJim Jagielski ::com::sun::star::lang::XEventListener > & xListener) 127*b1cdbd2cSJim Jagielski throw (::com::sun::star::uno::RuntimeException); 128*b1cdbd2cSJim Jagielski virtual void SAL_CALL removeEventListener( 129*b1cdbd2cSJim Jagielski const ::com::sun::star::uno::Reference< 130*b1cdbd2cSJim Jagielski ::com::sun::star::lang::XEventListener > & xListener) 131*b1cdbd2cSJim Jagielski throw (::com::sun::star::uno::RuntimeException); 132*b1cdbd2cSJim Jagielski 133*b1cdbd2cSJim Jagielski // XPropertySet 134*b1cdbd2cSJim Jagielski virtual ::com::sun::star::uno::Reference< 135*b1cdbd2cSJim Jagielski ::com::sun::star::beans::XPropertySetInfo > SAL_CALL 136*b1cdbd2cSJim Jagielski getPropertySetInfo() 137*b1cdbd2cSJim Jagielski throw (::com::sun::star::uno::RuntimeException); 138*b1cdbd2cSJim Jagielski virtual void SAL_CALL setPropertyValue( 139*b1cdbd2cSJim Jagielski const ::rtl::OUString& rPropertyName, 140*b1cdbd2cSJim Jagielski const ::com::sun::star::uno::Any& rValue) 141*b1cdbd2cSJim Jagielski throw (::com::sun::star::beans::UnknownPropertyException, 142*b1cdbd2cSJim Jagielski ::com::sun::star::beans::PropertyVetoException, 143*b1cdbd2cSJim Jagielski ::com::sun::star::lang::IllegalArgumentException, 144*b1cdbd2cSJim Jagielski ::com::sun::star::lang::WrappedTargetException, 145*b1cdbd2cSJim Jagielski ::com::sun::star::uno::RuntimeException); 146*b1cdbd2cSJim Jagielski virtual ::com::sun::star::uno::Any SAL_CALL getPropertyValue( 147*b1cdbd2cSJim Jagielski const ::rtl::OUString& rPropertyName) 148*b1cdbd2cSJim Jagielski throw (::com::sun::star::beans::UnknownPropertyException, 149*b1cdbd2cSJim Jagielski ::com::sun::star::lang::WrappedTargetException, 150*b1cdbd2cSJim Jagielski ::com::sun::star::uno::RuntimeException); 151*b1cdbd2cSJim Jagielski virtual void SAL_CALL addPropertyChangeListener( 152*b1cdbd2cSJim Jagielski const ::rtl::OUString& rPropertyName, 153*b1cdbd2cSJim Jagielski const ::com::sun::star::uno::Reference< 154*b1cdbd2cSJim Jagielski ::com::sun::star::beans::XPropertyChangeListener >& xListener) 155*b1cdbd2cSJim Jagielski throw (::com::sun::star::beans::UnknownPropertyException, 156*b1cdbd2cSJim Jagielski ::com::sun::star::lang::WrappedTargetException, 157*b1cdbd2cSJim Jagielski ::com::sun::star::uno::RuntimeException); 158*b1cdbd2cSJim Jagielski virtual void SAL_CALL removePropertyChangeListener( 159*b1cdbd2cSJim Jagielski const ::rtl::OUString& rPropertyName, 160*b1cdbd2cSJim Jagielski const ::com::sun::star::uno::Reference< 161*b1cdbd2cSJim Jagielski ::com::sun::star::beans::XPropertyChangeListener >& xListener) 162*b1cdbd2cSJim Jagielski throw (::com::sun::star::beans::UnknownPropertyException, 163*b1cdbd2cSJim Jagielski ::com::sun::star::lang::WrappedTargetException, 164*b1cdbd2cSJim Jagielski ::com::sun::star::uno::RuntimeException); 165*b1cdbd2cSJim Jagielski virtual void SAL_CALL addVetoableChangeListener( 166*b1cdbd2cSJim Jagielski const ::rtl::OUString& rPropertyName, 167*b1cdbd2cSJim Jagielski const ::com::sun::star::uno::Reference< 168*b1cdbd2cSJim Jagielski ::com::sun::star::beans::XVetoableChangeListener >& xListener) 169*b1cdbd2cSJim Jagielski throw (::com::sun::star::beans::UnknownPropertyException, 170*b1cdbd2cSJim Jagielski ::com::sun::star::lang::WrappedTargetException, 171*b1cdbd2cSJim Jagielski ::com::sun::star::uno::RuntimeException); 172*b1cdbd2cSJim Jagielski virtual void SAL_CALL removeVetoableChangeListener( 173*b1cdbd2cSJim Jagielski const ::rtl::OUString& rPropertyName, 174*b1cdbd2cSJim Jagielski const ::com::sun::star::uno::Reference< 175*b1cdbd2cSJim Jagielski ::com::sun::star::beans::XVetoableChangeListener >& xListener) 176*b1cdbd2cSJim Jagielski throw (::com::sun::star::beans::UnknownPropertyException, 177*b1cdbd2cSJim Jagielski ::com::sun::star::lang::WrappedTargetException, 178*b1cdbd2cSJim Jagielski ::com::sun::star::uno::RuntimeException); 179*b1cdbd2cSJim Jagielski 180*b1cdbd2cSJim Jagielski // XNamed 181*b1cdbd2cSJim Jagielski virtual ::rtl::OUString SAL_CALL getName() 182*b1cdbd2cSJim Jagielski throw (::com::sun::star::uno::RuntimeException); 183*b1cdbd2cSJim Jagielski virtual void SAL_CALL setName(const ::rtl::OUString& rName) 184*b1cdbd2cSJim Jagielski throw (::com::sun::star::uno::RuntimeException); 185*b1cdbd2cSJim Jagielski 186*b1cdbd2cSJim Jagielski // XTextContent 187*b1cdbd2cSJim Jagielski virtual void SAL_CALL attach( 188*b1cdbd2cSJim Jagielski const ::com::sun::star::uno::Reference< 189*b1cdbd2cSJim Jagielski ::com::sun::star::text::XTextRange > & xTextRange) 190*b1cdbd2cSJim Jagielski throw (::com::sun::star::lang::IllegalArgumentException, 191*b1cdbd2cSJim Jagielski ::com::sun::star::uno::RuntimeException); 192*b1cdbd2cSJim Jagielski virtual ::com::sun::star::uno::Reference< 193*b1cdbd2cSJim Jagielski ::com::sun::star::text::XTextRange > SAL_CALL getAnchor() 194*b1cdbd2cSJim Jagielski throw (::com::sun::star::uno::RuntimeException); 195*b1cdbd2cSJim Jagielski 196*b1cdbd2cSJim Jagielski }; 197*b1cdbd2cSJim Jagielski 198*b1cdbd2cSJim Jagielski class SwXFieldmarkParameters 199*b1cdbd2cSJim Jagielski : public ::cppu::WeakImplHelper1< ::com::sun::star::container::XNameContainer> 200*b1cdbd2cSJim Jagielski , private SwClient 201*b1cdbd2cSJim Jagielski { 202*b1cdbd2cSJim Jagielski public: SwXFieldmarkParameters(::sw::mark::IFieldmark * const pFieldmark)203*b1cdbd2cSJim Jagielski SwXFieldmarkParameters(::sw::mark::IFieldmark* const pFieldmark) 204*b1cdbd2cSJim Jagielski { 205*b1cdbd2cSJim Jagielski pFieldmark->Add(this); 206*b1cdbd2cSJim Jagielski } 207*b1cdbd2cSJim Jagielski 208*b1cdbd2cSJim Jagielski // XNameContainer 209*b1cdbd2cSJim Jagielski virtual void SAL_CALL insertByName( const ::rtl::OUString& aName, const ::com::sun::star::uno::Any& aElement ) throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::container::ElementExistException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); 210*b1cdbd2cSJim Jagielski virtual void SAL_CALL removeByName( const ::rtl::OUString& Name ) throw (::com::sun::star::container::NoSuchElementException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); 211*b1cdbd2cSJim Jagielski // XNameReplace 212*b1cdbd2cSJim Jagielski virtual void SAL_CALL replaceByName( const ::rtl::OUString& aName, const ::com::sun::star::uno::Any& aElement ) throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::container::NoSuchElementException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); 213*b1cdbd2cSJim Jagielski // XNameAccess 214*b1cdbd2cSJim Jagielski virtual ::com::sun::star::uno::Any SAL_CALL getByName( const ::rtl::OUString& aName ) throw (::com::sun::star::container::NoSuchElementException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); 215*b1cdbd2cSJim Jagielski virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getElementNames( ) throw (::com::sun::star::uno::RuntimeException); 216*b1cdbd2cSJim Jagielski virtual ::sal_Bool SAL_CALL hasByName( const ::rtl::OUString& aName ) throw (::com::sun::star::uno::RuntimeException); 217*b1cdbd2cSJim Jagielski // XElementAccess 218*b1cdbd2cSJim Jagielski virtual ::com::sun::star::uno::Type SAL_CALL getElementType( ) throw (::com::sun::star::uno::RuntimeException); 219*b1cdbd2cSJim Jagielski virtual ::sal_Bool SAL_CALL hasElements( ) throw (::com::sun::star::uno::RuntimeException); 220*b1cdbd2cSJim Jagielski protected: 221*b1cdbd2cSJim Jagielski //SwClient 222*b1cdbd2cSJim Jagielski virtual void Modify( const SfxPoolItem* pOld, const SfxPoolItem *pNew ); 223*b1cdbd2cSJim Jagielski private: 224*b1cdbd2cSJim Jagielski ::sw::mark::IFieldmark::parameter_map_t* getCoreParameters() throw (::com::sun::star::uno::RuntimeException); 225*b1cdbd2cSJim Jagielski }; 226*b1cdbd2cSJim Jagielski 227*b1cdbd2cSJim Jagielski typedef cppu::ImplInheritanceHelper1< SwXBookmark, 228*b1cdbd2cSJim Jagielski ::com::sun::star::text::XFormField > SwXFieldmark_Base; 229*b1cdbd2cSJim Jagielski 230*b1cdbd2cSJim Jagielski class SwXFieldmark 231*b1cdbd2cSJim Jagielski : public SwXFieldmark_Base 232*b1cdbd2cSJim Jagielski { 233*b1cdbd2cSJim Jagielski 234*b1cdbd2cSJim Jagielski private: 235*b1cdbd2cSJim Jagielski 236*b1cdbd2cSJim Jagielski bool isReplacementObject; 237*b1cdbd2cSJim Jagielski 238*b1cdbd2cSJim Jagielski SwXFieldmark( 239*b1cdbd2cSJim Jagielski bool _isReplacementObject, 240*b1cdbd2cSJim Jagielski ::sw::mark::IMark *const pMark, 241*b1cdbd2cSJim Jagielski SwDoc *const pDoc ); 242*b1cdbd2cSJim Jagielski 243*b1cdbd2cSJim Jagielski public: 244*b1cdbd2cSJim Jagielski 245*b1cdbd2cSJim Jagielski // <SwXFieldmark> instance not attached to the document - property descriptor available 246*b1cdbd2cSJim Jagielski SwXFieldmark( bool isReplacementObject ); 247*b1cdbd2cSJim Jagielski 248*b1cdbd2cSJim Jagielski // (as the parent class) newly created <SwXFieldmark> instances for an existing <IMark> instance needs to be registered in the Mark 249*b1cdbd2cSJim Jagielski static ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextContent > 250*b1cdbd2cSJim Jagielski CreateXFieldmark( 251*b1cdbd2cSJim Jagielski SwDoc & rDoc, 252*b1cdbd2cSJim Jagielski ::sw::mark::IMark & rBookmark ); 253*b1cdbd2cSJim Jagielski 254*b1cdbd2cSJim Jagielski virtual void attachToRange( 255*b1cdbd2cSJim Jagielski const ::com::sun::star::uno::Reference< 256*b1cdbd2cSJim Jagielski ::com::sun::star::text::XTextRange > & xTextRange) 257*b1cdbd2cSJim Jagielski throw (::com::sun::star::lang::IllegalArgumentException, 258*b1cdbd2cSJim Jagielski ::com::sun::star::uno::RuntimeException); 259*b1cdbd2cSJim Jagielski virtual ::rtl::OUString SAL_CALL getFieldType(void) 260*b1cdbd2cSJim Jagielski throw( ::com::sun::star::uno::RuntimeException ); 261*b1cdbd2cSJim Jagielski virtual void SAL_CALL setFieldType(const ::rtl::OUString& description ) 262*b1cdbd2cSJim Jagielski throw (::com::sun::star::uno::RuntimeException); 263*b1cdbd2cSJim Jagielski virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameContainer > SAL_CALL getParameters( ) 264*b1cdbd2cSJim Jagielski throw (::com::sun::star::uno::RuntimeException); 265*b1cdbd2cSJim Jagielski 266*b1cdbd2cSJim Jagielski }; 267*b1cdbd2cSJim Jagielski 268*b1cdbd2cSJim Jagielski #endif // SW_UNOBOOKMARK_HXX 269*b1cdbd2cSJim Jagielski 270