xref: /aoo4110/main/sw/inc/unobookmark.hxx (revision b1cdbd2c)
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