xref: /aoo41x/main/sc/inc/targuno.hxx (revision cdf0e10c)
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 #ifndef SC_TARGUNO_HXX
29 #define SC_TARGUNO_HXX
30 
31 #include <svl/lstner.hxx>
32 #include <tools/string.hxx>
33 #include <com/sun/star/document/XLinkTargetSupplier.hpp>
34 #include <com/sun/star/lang/XServiceName.hpp>
35 #include <com/sun/star/lang/XServiceInfo.hpp>
36 #include <com/sun/star/beans/PropertyValues.hpp>
37 #include <com/sun/star/beans/XPropertySet.hpp>
38 #include <com/sun/star/beans/PropertyValue.hpp>
39 #include <com/sun/star/beans/PropertyState.hpp>
40 #include <com/sun/star/beans/XPropertySetInfo.hpp>
41 #include <com/sun/star/beans/XMultiPropertySet.hpp>
42 #include <com/sun/star/beans/XFastPropertySet.hpp>
43 #include <com/sun/star/beans/XVetoableChangeListener.hpp>
44 #include <com/sun/star/beans/XPropertyState.hpp>
45 #include <com/sun/star/beans/XPropertyStateChangeListener.hpp>
46 #include <com/sun/star/beans/PropertyAttribute.hpp>
47 #include <com/sun/star/beans/XPropertiesChangeListener.hpp>
48 #include <com/sun/star/beans/XPropertyChangeListener.hpp>
49 #include <com/sun/star/beans/XPropertyAccess.hpp>
50 #include <com/sun/star/beans/XPropertyContainer.hpp>
51 #include <com/sun/star/beans/PropertyStateChangeEvent.hpp>
52 #include <com/sun/star/beans/PropertyChangeEvent.hpp>
53 #include <com/sun/star/container/XEnumerationAccess.hpp>
54 #include <com/sun/star/container/XHierarchicalNameAccess.hpp>
55 #include <com/sun/star/container/XNameAccess.hpp>
56 #include <com/sun/star/container/XContentEnumerationAccess.hpp>
57 #include <com/sun/star/container/XEnumeration.hpp>
58 #include <com/sun/star/container/XElementAccess.hpp>
59 #include <com/sun/star/container/XIndexAccess.hpp>
60 #include <cppuhelper/implbase2.hxx>
61 #include <cppuhelper/implbase3.hxx>
62 
63 class ScDocShell;
64 
65 
66 #define SC_LINKTARGETTYPE_SHEET		0
67 #define SC_LINKTARGETTYPE_RANGENAME	1
68 #define SC_LINKTARGETTYPE_DBAREA	2
69 
70 #define SC_LINKTARGETTYPE_COUNT		3
71 
72 #define SCLINKTARGET_SERVICE		"com.sun.star.document.LinkTarget"
73 
74 
75 //!	Graphic / OleObject (need separate collections!)
76 
77 
78 class ScLinkTargetTypesObj : public ::cppu::WeakImplHelper2<
79 								::com::sun::star::container::XNameAccess,
80 								::com::sun::star::lang::XServiceInfo >,
81 							public SfxListener
82 {
83 private:
84 	ScDocShell*				pDocShell;
85 	String					aNames[SC_LINKTARGETTYPE_COUNT];
86 
87 public:
88 							ScLinkTargetTypesObj(ScDocShell* pDocSh);
89 	virtual					~ScLinkTargetTypesObj();
90 
91 	virtual void			Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
92 
93 							// ::com::sun::star::container::XNameAccess
94 	virtual ::com::sun::star::uno::Any SAL_CALL		getByName(const ::rtl::OUString& aName)
95 								throw(	::com::sun::star::container::NoSuchElementException,
96 										::com::sun::star::lang::WrappedTargetException,
97 										::com::sun::star::uno::RuntimeException );
98 	virtual ::com::sun::star::uno::Sequence< ::rtl::OUString> SAL_CALL		getElementNames(void) throw( ::com::sun::star::uno::RuntimeException );
99 	virtual sal_Bool SAL_CALL			hasByName(const ::rtl::OUString& aName) throw( ::com::sun::star::uno::RuntimeException );
100 
101 							// ::com::sun::star::container::XElementAccess
102 	virtual ::com::sun::star::uno::Type SAL_CALL		getElementType(void) throw( ::com::sun::star::uno::RuntimeException );
103 	virtual sal_Bool SAL_CALL			hasElements(void) throw( ::com::sun::star::uno::RuntimeException );
104 
105 							// ::com::sun::star::lang::XServiceInfo
106 	virtual ::rtl::OUString SAL_CALL			getImplementationName(void) throw( ::com::sun::star::uno::RuntimeException );
107 	virtual sal_Bool SAL_CALL			supportsService(const ::rtl::OUString& ServiceName) throw( ::com::sun::star::uno::RuntimeException );
108 	virtual ::com::sun::star::uno::Sequence< ::rtl::OUString> SAL_CALL		getSupportedServiceNames(void) throw( ::com::sun::star::uno::RuntimeException );
109 };
110 
111 
112 class ScLinkTargetTypeObj : public ::cppu::WeakImplHelper3<
113 								::com::sun::star::beans::XPropertySet,
114 								::com::sun::star::document::XLinkTargetSupplier,
115 								::com::sun::star::lang::XServiceInfo >,
116 							public SfxListener
117 {
118 private:
119 	ScDocShell*				pDocShell;
120 	sal_uInt16				nType;
121 	String					aName;
122 
123 public:
124 							ScLinkTargetTypeObj(ScDocShell* pDocSh, sal_uInt16 nT);
125 	virtual					~ScLinkTargetTypeObj();
126 
127 	virtual void			Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
128 
129 	static void				SetLinkTargetBitmap( ::com::sun::star::uno::Any& rRet, sal_uInt16 nType );
130 
131 							// ::com::sun::star::beans::XPropertySet
132 	virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > SAL_CALL  getPropertySetInfo(void) throw( ::com::sun::star::uno::RuntimeException );
133 	virtual void SAL_CALL	setPropertyValue(const ::rtl::OUString& aPropertyName,
134 									const ::com::sun::star::uno::Any& aValue)
135 								throw(	::com::sun::star::beans::UnknownPropertyException,
136 										::com::sun::star::beans::PropertyVetoException,
137  										::com::sun::star::lang::IllegalArgumentException,
138 										::com::sun::star::lang::WrappedTargetException,
139 										::com::sun::star::uno::RuntimeException );
140 	virtual ::com::sun::star::uno::Any SAL_CALL		getPropertyValue(const ::rtl::OUString& PropertyName)
141 								throw(	::com::sun::star::beans::UnknownPropertyException,
142 										::com::sun::star::lang::WrappedTargetException,
143 										::com::sun::star::uno::RuntimeException );
144 	virtual void SAL_CALL			addPropertyChangeListener(const ::rtl::OUString& aPropertyName,
145 									const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertyChangeListener > & xListener)
146 								throw(	::com::sun::star::beans::UnknownPropertyException,
147 										::com::sun::star::lang::WrappedTargetException,
148 										::com::sun::star::uno::RuntimeException );
149 	virtual void SAL_CALL			removePropertyChangeListener(const ::rtl::OUString& aPropertyName,
150 									const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertyChangeListener > & aListener)
151 								throw( 	::com::sun::star::beans::UnknownPropertyException,
152 										::com::sun::star::lang::WrappedTargetException,
153 										::com::sun::star::uno::RuntimeException );
154 	virtual void SAL_CALL			addVetoableChangeListener(const ::rtl::OUString& PropertyName,
155 									const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XVetoableChangeListener > & aListener)
156 								throw(	::com::sun::star::beans::UnknownPropertyException,
157 										::com::sun::star::lang::WrappedTargetException,
158 										::com::sun::star::uno::RuntimeException );
159 	virtual void SAL_CALL			removeVetoableChangeListener(const ::rtl::OUString& PropertyName,
160 									const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XVetoableChangeListener > & aListener)
161 								throw(	::com::sun::star::beans::UnknownPropertyException,
162 										::com::sun::star::lang::WrappedTargetException,
163 										::com::sun::star::uno::RuntimeException );
164 
165 							// ::com::sun::star::document::XLinkTargetSupplier
166 	virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess > SAL_CALL  getLinks(void) throw( ::com::sun::star::uno::RuntimeException );
167 
168 							// ::com::sun::star::lang::XServiceInfo
169 	virtual ::rtl::OUString SAL_CALL			getImplementationName(void) throw( ::com::sun::star::uno::RuntimeException );
170 	virtual sal_Bool SAL_CALL			supportsService(const ::rtl::OUString& ServiceName) throw( ::com::sun::star::uno::RuntimeException );
171 	virtual ::com::sun::star::uno::Sequence< ::rtl::OUString> SAL_CALL getSupportedServiceNames(void) throw( ::com::sun::star::uno::RuntimeException );
172 };
173 
174 
175 class ScLinkTargetsObj : public ::cppu::WeakImplHelper2<
176 							::com::sun::star::container::XNameAccess,
177 							::com::sun::star::lang::XServiceInfo >
178 {
179 private:
180 	::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess > 			xCollection;
181 
182 public:
183 							ScLinkTargetsObj( const ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess > & rColl );
184 	virtual					~ScLinkTargetsObj();
185 
186 							// ::com::sun::star::container::XNameAccess
187 	virtual ::com::sun::star::uno::Any SAL_CALL			getByName(const ::rtl::OUString& aName)
188 								throw(	::com::sun::star::container::NoSuchElementException,
189 										::com::sun::star::lang::WrappedTargetException,
190  										::com::sun::star::uno::RuntimeException );
191 	virtual ::com::sun::star::uno::Sequence< ::rtl::OUString> SAL_CALL		getElementNames(void) throw( ::com::sun::star::uno::RuntimeException );
192 	virtual sal_Bool SAL_CALL			hasByName(const ::rtl::OUString& aName) throw( ::com::sun::star::uno::RuntimeException );
193 
194 							// ::com::sun::star::container::XElementAccess
195 	virtual ::com::sun::star::uno::Type SAL_CALL		getElementType(void) throw( ::com::sun::star::uno::RuntimeException );
196 	virtual sal_Bool SAL_CALL			hasElements(void) throw( ::com::sun::star::uno::RuntimeException );
197 
198 							// ::com::sun::star::lang::XServiceInfo
199 	virtual ::rtl::OUString SAL_CALL			getImplementationName(void) throw( ::com::sun::star::uno::RuntimeException );
200 	virtual sal_Bool SAL_CALL			supportsService(const ::rtl::OUString& ServiceName) throw( ::com::sun::star::uno::RuntimeException );
201 	virtual ::com::sun::star::uno::Sequence< ::rtl::OUString> SAL_CALL		getSupportedServiceNames(void) throw( ::com::sun::star::uno::RuntimeException );
202 };
203 
204 
205 #endif
206 
207