xref: /trunk/main/scripting/source/stringresource/stringresource.hxx (revision 91144cd0085a7583d2099b982122deb2184ab956)
1 /**************************************************************
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  *************************************************************/
21 
22 
23 
24 #ifndef SCRIPTING_DLGPROV_HXX
25 #define SCRIPTING_DLGPROV_HXX
26 
27 #ifndef _COM_SUN_STAR_AWT_XSTRINGRESOURCEWITHSTORAGE_HPP_
28 #include <com/sun/star/resource/XStringResourceWithStorage.hpp>
29 #endif
30 #ifndef _COM_SUN_STAR_AWT_XSTRINGRESOURCEWITHSTORAGE_HPP_
31 #include <com/sun/star/resource/XStringResourceWithLocation.hpp>
32 #endif
33 #include <com/sun/star/lang/XServiceInfo.hpp>
34 #include <com/sun/star/lang/XInitialization.hpp>
35 #include <com/sun/star/uno/XComponentContext.hpp>
36 #include <com/sun/star/ucb/XSimpleFileAccess.hpp>
37 #include <com/sun/star/io/XInputStream.hpp>
38 #include <com/sun/star/io/XOutputStream.hpp>
39 #include <cppuhelper/implbase1.hxx>
40 #include <cppuhelper/implbase2.hxx>
41 #include <cppuhelper/interfacecontainer.hxx>
42 #include <osl/mutex.hxx>
43 
44 #include <vector>
45 #include <hash_map>
46 
47 //.........................................................................
48 namespace stringresource
49 {
50 //.........................................................................
51 
52 // =============================================================================
53 // mutex
54 // =============================================================================
55 
56 ::osl::Mutex& getMutex();
57 
58 
59 // =============================================================================
60 // class stringresourceImpl
61 // =============================================================================
62 
63 // Hashtable to map string ids to string
64 struct hashName_Impl
65 {
operator ()stringresource::hashName_Impl66     size_t operator()(const ::rtl::OUString Str) const
67     {
68         return (size_t)Str.hashCode();
69     }
70 };
71 
72 struct eqName_Impl
73 {
operator ()stringresource::eqName_Impl74     sal_Bool operator()(const ::rtl::OUString Str1, const ::rtl::OUString Str2) const
75     {
76         return ( Str1 == Str2 );
77     }
78 };
79 
80 typedef std::hash_map
81 <
82     ::rtl::OUString,
83     ::rtl::OUString,
84     hashName_Impl,
85     eqName_Impl
86 >
87 IdToStringMap;
88 
89 typedef std::hash_map
90 <
91     ::rtl::OUString,
92     sal_Int32,
93     hashName_Impl,
94     eqName_Impl
95 >
96 IdToIndexMap;
97 
98 
99 struct LocaleItem
100 {
101     ::com::sun::star::lang::Locale      m_locale;
102     IdToStringMap                       m_aIdToStringMap;
103     IdToIndexMap                        m_aIdToIndexMap;
104     sal_Int32                           m_nNextIndex;
105     bool                                m_bLoaded;
106     bool                                m_bModified;
107 
LocaleItemstringresource::LocaleItem108     LocaleItem( ::com::sun::star::lang::Locale locale, bool bLoaded=true )
109         : m_locale( locale )
110         , m_nNextIndex( 0 )
111         , m_bLoaded( bLoaded )
112         , m_bModified( false )
113     {}
114 };
115 
116 typedef std::vector< LocaleItem* > LocaleItemVector;
117 typedef std::vector< LocaleItem* >::iterator LocaleItemVectorIt;
118 typedef std::vector< LocaleItem* >::const_iterator LocaleItemVectorConstIt;
119 
120 typedef ::cppu::WeakImplHelper2<
121     ::com::sun::star::lang::XServiceInfo,
122     ::com::sun::star::resource::XStringResourceManager > StringResourceImpl_BASE;
123 
124 class StringResourceImpl : public StringResourceImpl_BASE
125 {
126 protected:
127     ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext >        m_xContext;
128     ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiComponentFactory >  m_xMCF;
129 
130     LocaleItem*                                                                         m_pCurrentLocaleItem;
131     LocaleItem*                                                                         m_pDefaultLocaleItem;
132     bool                                                                                m_bDefaultModified;
133 
134     ::cppu::OInterfaceContainerHelper                                                   m_aListenerContainer;
135 
136     LocaleItemVector                                                                    m_aLocaleItemVector;
137     LocaleItemVector                                                                    m_aDeletedLocaleItemVector;
138     LocaleItemVector                                                                    m_aChangedDefaultLocaleVector;
139 
140     bool                                                                                m_bModified;
141     bool                                                                                m_bReadOnly;
142 
143     sal_Int32                                                                           m_nNextUniqueNumericId;
144 
145     // Scans ResourceID to start with number and adapt m_nNextUniqueNumericId
146     void implScanIdForNumber( const ::rtl::OUString& ResourceID );
147     const static sal_Int32 UNIQUE_NUMBER_NEEDS_INITIALISATION = -1;
148 
149     // Checks read only status and throws exception if it's true
150     void implCheckReadOnly( const sal_Char* pExceptionMsg );
151 
152     // Return the context's MultiComponentFactory
153     ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiComponentFactory >
154         getMultiComponentFactory( void );
155 
156     // Returns the LocalItem for a given locale, if it exists, otherwise NULL
157     // This method compares the locales exactly, no closest match search is performed
158     LocaleItem* getItemForLocale( const ::com::sun::star::lang::Locale& locale, sal_Bool bException );
159 
160     // Returns the LocalItem for a given locale, if it exists, otherwise NULL
161     // This method performs a closest match search, at least the language must match
162     LocaleItem* getClosestMatchItemForLocale( const ::com::sun::star::lang::Locale& locale );
163     void implSetCurrentLocale( const ::com::sun::star::lang::Locale& locale,
164         sal_Bool FindClosestMatch, sal_Bool bUseDefaultIfNoMatch );
165 
166     void implModified( void );
167     void implNotifyListeners( void );
168 
169     //=== Impl methods for ...ForLocale methods ===
170     ::rtl::OUString SAL_CALL implResolveString( const ::rtl::OUString& ResourceID, LocaleItem* pLocaleItem );
171     ::sal_Bool implHasEntryForId( const ::rtl::OUString& ResourceID, LocaleItem* pLocaleItem );
172     ::com::sun::star::uno::Sequence< ::rtl::OUString > implGetResourceIDs( LocaleItem* pLocaleItem );
173     void implSetString( const ::rtl::OUString& ResourceID,
174         const ::rtl::OUString& Str, LocaleItem* pLocaleItem );
175     void implRemoveId( const ::rtl::OUString& ResourceID, LocaleItem* pLocaleItem );
176 
177     // Method to load a locale if necessary, returns true if loading was
178     // successful. Default implementation in base class just returns true.
179     virtual bool loadLocale( LocaleItem* pLocaleItem );
180 
181     virtual void implLoadAllLocales( void );
182 
183 public:
184     StringResourceImpl(
185         const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext >& rxContext );
186     virtual ~StringResourceImpl();
187 
188     // XServiceInfo
189     virtual ::rtl::OUString SAL_CALL getImplementationName(  );
190     virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName );
191     virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames(  );
192 
193     // XModifyBroadcaster
194     virtual void SAL_CALL addModifyListener( const ::com::sun::star::uno::Reference< ::com::sun::star::util::XModifyListener >& aListener );
195     virtual void SAL_CALL removeModifyListener( const ::com::sun::star::uno::Reference< ::com::sun::star::util::XModifyListener >& aListener );
196 
197     // XStringResourceResolver
198     virtual ::rtl::OUString SAL_CALL resolveString( const ::rtl::OUString& ResourceID );
199     virtual ::rtl::OUString SAL_CALL resolveStringForLocale( const ::rtl::OUString& ResourceID,
200         const ::com::sun::star::lang::Locale& locale );
201     virtual ::sal_Bool SAL_CALL hasEntryForId( const ::rtl::OUString& ResourceID );
202     virtual ::sal_Bool SAL_CALL hasEntryForIdAndLocale( const ::rtl::OUString& ResourceID,
203         const ::com::sun::star::lang::Locale& locale );
204     virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getResourceIDs(  );
205     virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getResourceIDsForLocale
206         ( const ::com::sun::star::lang::Locale& locale );
207     virtual ::com::sun::star::lang::Locale SAL_CALL getCurrentLocale(  );
208     virtual ::com::sun::star::lang::Locale SAL_CALL getDefaultLocale(  );
209     virtual ::com::sun::star::uno::Sequence< ::com::sun::star::lang::Locale > SAL_CALL getLocales(  );
210 
211     // XStringResourceManager
212     virtual ::sal_Bool SAL_CALL isReadOnly();
213     virtual void SAL_CALL setCurrentLocale( const ::com::sun::star::lang::Locale& locale, ::sal_Bool FindClosestMatch );
214     virtual void SAL_CALL setDefaultLocale( const ::com::sun::star::lang::Locale& locale );
215     virtual void SAL_CALL setString( const ::rtl::OUString& ResourceID, const ::rtl::OUString& Str );
216     virtual void SAL_CALL setStringForLocale( const ::rtl::OUString& ResourceID, const ::rtl::OUString& Str,
217         const ::com::sun::star::lang::Locale& locale );
218     virtual void SAL_CALL removeId( const ::rtl::OUString& ResourceID );
219     virtual void SAL_CALL removeIdForLocale( const ::rtl::OUString& ResourceID,
220         const ::com::sun::star::lang::Locale& locale );
221     virtual void SAL_CALL newLocale( const ::com::sun::star::lang::Locale& locale );
222     virtual void SAL_CALL removeLocale( const ::com::sun::star::lang::Locale& locale );
223     virtual ::sal_Int32 SAL_CALL getUniqueNumericId(  );
224  };
225 
226 typedef ::cppu::ImplInheritanceHelper1<
227         StringResourceImpl,
228         ::com::sun::star::resource::XStringResourcePersistence > StringResourcePersistenceImpl_BASE;
229 
230 class BinaryOutput;
231 class BinaryInput;
232 
233 class StringResourcePersistenceImpl : public StringResourcePersistenceImpl_BASE
234 {
235 protected:
236     ::rtl::OUString                                                             m_aNameBase;
237     ::rtl::OUString                                                             m_aComment;
238 
239     void SAL_CALL implInitializeCommonParameters
240         ( const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& aArguments );
241 
242     // Scan locale properties files
243     virtual void implScanLocales( void );
244 
245     // Method to load a locale if necessary, returns true if loading was successful
246     virtual bool loadLocale( LocaleItem* pLocaleItem );
247 
248     // does the actual loading
249     virtual bool implLoadLocale( LocaleItem* pLocaleItem );
250 
251     virtual void implLoadAllLocales( void );
252 
253     void implScanLocaleNames( const ::com::sun::star::uno::Sequence< ::rtl::OUString >& aContentSeq );
254     ::rtl::OUString implGetFileNameForLocaleItem( LocaleItem* pLocaleItem, const ::rtl::OUString& aNameBase );
255     ::rtl::OUString implGetPathForLocaleItem( LocaleItem* pLocaleItem, const ::rtl::OUString& aNameBase,
256         const ::rtl::OUString& aLocation, bool bDefaultFile=false );
257 
258     bool implReadPropertiesFile( LocaleItem* pLocaleItem,
259         const ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream >& xInput );
260 
261     bool implWritePropertiesFile( LocaleItem* pLocaleItem, const ::com::sun::star::uno::Reference
262         < ::com::sun::star::io::XOutputStream >& xOutputStream, const ::rtl::OUString& aComment );
263 
264     void implWriteLocaleBinary( LocaleItem* pLocaleItem, BinaryOutput& rOut );
265 
266     void implStoreAtStorage
267     (
268         const ::rtl::OUString& aNameBase,
269         const ::rtl::OUString& aComment,
270         const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& Storage,
271         bool bUsedForStore,
272         bool bStoreAll
273     );
274 
275     void implKillRemovedLocaleFiles
276     (
277         const ::rtl::OUString& Location,
278         const ::rtl::OUString& aNameBase,
279         const ::com::sun::star::uno::Reference< ::com::sun::star::ucb::XSimpleFileAccess >& xFileAccess
280     );
281 
282     void implKillChangedDefaultFiles
283     (
284         const ::rtl::OUString& Location,
285         const ::rtl::OUString& aNameBase,
286         const ::com::sun::star::uno::Reference< ::com::sun::star::ucb::XSimpleFileAccess >& xFileAccess
287     );
288 
289     void implStoreAtLocation
290     (
291         const ::rtl::OUString& Location,
292         const ::rtl::OUString& aNameBase,
293         const ::rtl::OUString& aComment,
294         const ::com::sun::star::uno::Reference< ::com::sun::star::ucb::XSimpleFileAccess >& xFileAccess,
295         bool bUsedForStore,
296         bool bStoreAll,
297         bool bKillAll = false
298     );
299 
300 public:
301     StringResourcePersistenceImpl(
302         const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext >& rxContext );
303     virtual ~StringResourcePersistenceImpl();
304 
305     // XServiceInfo
306     virtual ::rtl::OUString SAL_CALL getImplementationName(  );
307     virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName );
308     virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames(  );
309 
310     // XModifyBroadcaster
311     virtual void SAL_CALL addModifyListener( const ::com::sun::star::uno::Reference< ::com::sun::star::util::XModifyListener >& aListener );
312     virtual void SAL_CALL removeModifyListener( const ::com::sun::star::uno::Reference< ::com::sun::star::util::XModifyListener >& aListener );
313 
314     // XStringResourceResolver
315     virtual ::rtl::OUString SAL_CALL resolveString( const ::rtl::OUString& ResourceID );
316     virtual ::rtl::OUString SAL_CALL resolveStringForLocale( const ::rtl::OUString& ResourceID,
317         const ::com::sun::star::lang::Locale& locale );
318     virtual ::sal_Bool SAL_CALL hasEntryForId( const ::rtl::OUString& ResourceID );
319     virtual ::sal_Bool SAL_CALL hasEntryForIdAndLocale( const ::rtl::OUString& ResourceID,
320         const ::com::sun::star::lang::Locale& locale );
321     virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getResourceIDs(  );
322     virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getResourceIDsForLocale
323         ( const ::com::sun::star::lang::Locale& locale );
324     virtual ::com::sun::star::lang::Locale SAL_CALL getCurrentLocale(  );
325     virtual ::com::sun::star::lang::Locale SAL_CALL getDefaultLocale(  );
326     virtual ::com::sun::star::uno::Sequence< ::com::sun::star::lang::Locale > SAL_CALL getLocales(  );
327 
328     // XStringResourceManager
329     virtual ::sal_Bool SAL_CALL isReadOnly();
330     virtual void SAL_CALL setCurrentLocale( const ::com::sun::star::lang::Locale& locale, ::sal_Bool FindClosestMatch );
331     virtual void SAL_CALL setDefaultLocale( const ::com::sun::star::lang::Locale& locale );
332     virtual void SAL_CALL setString( const ::rtl::OUString& ResourceID, const ::rtl::OUString& Str );
333     virtual void SAL_CALL setStringForLocale( const ::rtl::OUString& ResourceID, const ::rtl::OUString& Str,
334         const ::com::sun::star::lang::Locale& locale );
335     virtual void SAL_CALL removeId( const ::rtl::OUString& ResourceID );
336     virtual void SAL_CALL removeIdForLocale( const ::rtl::OUString& ResourceID,
337         const ::com::sun::star::lang::Locale& locale );
338     virtual void SAL_CALL newLocale( const ::com::sun::star::lang::Locale& locale );
339     virtual void SAL_CALL removeLocale( const ::com::sun::star::lang::Locale& locale );
340     virtual ::sal_Int32 SAL_CALL getUniqueNumericId(  );
341 
342     // XStringResourcePersistence
343     virtual void SAL_CALL store(  );
344     virtual ::sal_Bool SAL_CALL isModified(  );
345     virtual void SAL_CALL setComment( const ::rtl::OUString& Comment );
346     virtual void SAL_CALL storeToStorage
347         ( const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& Storage,
348           const ::rtl::OUString& NameBase, const ::rtl::OUString& Comment );
349     virtual void SAL_CALL storeToURL( const ::rtl::OUString& URL, const ::rtl::OUString& NameBase,
350         const ::rtl::OUString& Comment, const ::com::sun::star::uno::Reference
351         < ::com::sun::star::task::XInteractionHandler >& Handler );
352     virtual ::com::sun::star::uno::Sequence< ::sal_Int8 > SAL_CALL exportBinary(  );
353     virtual void SAL_CALL importBinary( const ::com::sun::star::uno::Sequence< ::sal_Int8 >& Data );
354 };
355 
356 
357 typedef ::cppu::ImplInheritanceHelper2<
358         StringResourcePersistenceImpl,
359         ::com::sun::star::lang::XInitialization,
360         ::com::sun::star::resource::XStringResourceWithStorage > StringResourceWithStorageImpl_BASE;
361 
362 class StringResourceWithStorageImpl : public StringResourceWithStorageImpl_BASE
363 {
364     ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >       m_xStorage;
365     bool                                                                        m_bStorageChanged;
366 
367     virtual void implScanLocales( void );
368     virtual bool implLoadLocale( LocaleItem* pLocaleItem );
369 
370 public:
371     StringResourceWithStorageImpl(
372         const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext >& rxContext );
373     virtual ~StringResourceWithStorageImpl();
374 
375     // XServiceInfo
376     virtual ::rtl::OUString SAL_CALL getImplementationName(  );
377     virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName );
378     virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames(  );
379 
380     // XInitialization
381     virtual void SAL_CALL initialize( const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& aArguments );
382 
383     // XModifyBroadcaster
384     virtual void SAL_CALL addModifyListener( const ::com::sun::star::uno::Reference< ::com::sun::star::util::XModifyListener >& aListener );
385     virtual void SAL_CALL removeModifyListener( const ::com::sun::star::uno::Reference< ::com::sun::star::util::XModifyListener >& aListener );
386 
387     // XStringResourceResolver
388     virtual ::rtl::OUString SAL_CALL resolveString( const ::rtl::OUString& ResourceID );
389     virtual ::rtl::OUString SAL_CALL resolveStringForLocale( const ::rtl::OUString& ResourceID,
390         const ::com::sun::star::lang::Locale& locale );
391     virtual ::sal_Bool SAL_CALL hasEntryForId( const ::rtl::OUString& ResourceID );
392     virtual ::sal_Bool SAL_CALL hasEntryForIdAndLocale( const ::rtl::OUString& ResourceID,
393         const ::com::sun::star::lang::Locale& locale );
394     virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getResourceIDs(  );
395     virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getResourceIDsForLocale
396         ( const ::com::sun::star::lang::Locale& locale );
397     virtual ::com::sun::star::lang::Locale SAL_CALL getCurrentLocale(  );
398     virtual ::com::sun::star::lang::Locale SAL_CALL getDefaultLocale(  );
399     virtual ::com::sun::star::uno::Sequence< ::com::sun::star::lang::Locale > SAL_CALL getLocales(  );
400 
401     // XStringResourceManager
402     virtual ::sal_Bool SAL_CALL isReadOnly();
403     virtual void SAL_CALL setCurrentLocale( const ::com::sun::star::lang::Locale& locale, ::sal_Bool FindClosestMatch );
404     virtual void SAL_CALL setDefaultLocale( const ::com::sun::star::lang::Locale& locale );
405     virtual void SAL_CALL setString( const ::rtl::OUString& ResourceID, const ::rtl::OUString& Str );
406     virtual void SAL_CALL setStringForLocale( const ::rtl::OUString& ResourceID, const ::rtl::OUString& Str,
407         const ::com::sun::star::lang::Locale& locale );
408     virtual void SAL_CALL removeId( const ::rtl::OUString& ResourceID );
409     virtual void SAL_CALL removeIdForLocale( const ::rtl::OUString& ResourceID,
410         const ::com::sun::star::lang::Locale& locale );
411     virtual void SAL_CALL newLocale( const ::com::sun::star::lang::Locale& locale );
412     virtual void SAL_CALL removeLocale( const ::com::sun::star::lang::Locale& locale );
413     virtual ::sal_Int32 SAL_CALL getUniqueNumericId(  );
414 
415     // XStringResourcePersistence
416     virtual void SAL_CALL store(  );
417     virtual ::sal_Bool SAL_CALL isModified(  );
418     virtual void SAL_CALL setComment( const ::rtl::OUString& Comment );
419     virtual void SAL_CALL storeToStorage
420         ( const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& Storage,
421           const ::rtl::OUString& NameBase, const ::rtl::OUString& Comment );
422     virtual void SAL_CALL storeToURL( const ::rtl::OUString& URL, const ::rtl::OUString& NameBase,
423         const ::rtl::OUString& Comment, const ::com::sun::star::uno::Reference
424         < ::com::sun::star::task::XInteractionHandler >& Handler );
425     virtual ::com::sun::star::uno::Sequence< ::sal_Int8 > SAL_CALL exportBinary(  );
426     virtual void SAL_CALL importBinary( const ::com::sun::star::uno::Sequence< ::sal_Int8 >& Data );
427 
428     // XStringResourceWithStorage
429     virtual void SAL_CALL storeAsStorage
430         ( const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& Storage );
431     virtual void SAL_CALL setStorage
432         ( const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& Storage );
433 };
434 
435 
436 typedef ::cppu::ImplInheritanceHelper2<
437         StringResourcePersistenceImpl,
438         ::com::sun::star::lang::XInitialization,
439         ::com::sun::star::resource::XStringResourceWithLocation > StringResourceWithLocationImpl_BASE;
440 
441 class StringResourceWithLocationImpl : public StringResourceWithLocationImpl_BASE
442 {
443     ::rtl::OUString                                                             m_aLocation;
444     bool                                                                        m_bLocationChanged;
445     com::sun::star::uno::Reference< com::sun::star::ucb::XSimpleFileAccess >    m_xSFI;
446     com::sun::star::uno::Reference< com::sun::star::task::XInteractionHandler > m_xInteractionHandler;
447 
448     const ::com::sun::star::uno::Reference< ::com::sun::star::ucb::XSimpleFileAccess > getFileAccess( void );
449 
450     virtual void implScanLocales( void );
451     virtual bool implLoadLocale( LocaleItem* pLocaleItem );
452 
453 public:
454     StringResourceWithLocationImpl(
455         const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext >& rxContext );
456     virtual ~StringResourceWithLocationImpl();
457 
458     // XServiceInfo
459     virtual ::rtl::OUString SAL_CALL getImplementationName(  );
460     virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName );
461     virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames(  );
462 
463     // XInitialization
464     virtual void SAL_CALL initialize( const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& aArguments );
465 
466     // XModifyBroadcaster
467     virtual void SAL_CALL addModifyListener( const ::com::sun::star::uno::Reference< ::com::sun::star::util::XModifyListener >& aListener );
468     virtual void SAL_CALL removeModifyListener( const ::com::sun::star::uno::Reference< ::com::sun::star::util::XModifyListener >& aListener );
469 
470     // XStringResourceResolver
471     virtual ::rtl::OUString SAL_CALL resolveString( const ::rtl::OUString& ResourceID );
472     virtual ::rtl::OUString SAL_CALL resolveStringForLocale( const ::rtl::OUString& ResourceID,
473         const ::com::sun::star::lang::Locale& locale );
474     virtual ::sal_Bool SAL_CALL hasEntryForId( const ::rtl::OUString& ResourceID );
475     virtual ::sal_Bool SAL_CALL hasEntryForIdAndLocale( const ::rtl::OUString& ResourceID,
476         const ::com::sun::star::lang::Locale& locale );
477     virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getResourceIDs(  );
478     virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getResourceIDsForLocale
479         ( const ::com::sun::star::lang::Locale& locale );
480     virtual ::com::sun::star::lang::Locale SAL_CALL getCurrentLocale(  );
481     virtual ::com::sun::star::lang::Locale SAL_CALL getDefaultLocale(  );
482     virtual ::com::sun::star::uno::Sequence< ::com::sun::star::lang::Locale > SAL_CALL getLocales(  );
483 
484     // XStringResourceManager
485     virtual ::sal_Bool SAL_CALL isReadOnly();
486     virtual void SAL_CALL setCurrentLocale( const ::com::sun::star::lang::Locale& locale, ::sal_Bool FindClosestMatch );
487     virtual void SAL_CALL setDefaultLocale( const ::com::sun::star::lang::Locale& locale );
488     virtual void SAL_CALL setString( const ::rtl::OUString& ResourceID, const ::rtl::OUString& Str );
489     virtual void SAL_CALL setStringForLocale( const ::rtl::OUString& ResourceID, const ::rtl::OUString& Str,
490         const ::com::sun::star::lang::Locale& locale );
491     virtual void SAL_CALL removeId( const ::rtl::OUString& ResourceID );
492     virtual void SAL_CALL removeIdForLocale( const ::rtl::OUString& ResourceID,
493         const ::com::sun::star::lang::Locale& locale );
494     virtual void SAL_CALL newLocale( const ::com::sun::star::lang::Locale& locale );
495     virtual void SAL_CALL removeLocale( const ::com::sun::star::lang::Locale& locale );
496     virtual ::sal_Int32 SAL_CALL getUniqueNumericId(  );
497 
498     // XStringResourcePersistence
499     virtual void SAL_CALL store(  );
500     virtual ::sal_Bool SAL_CALL isModified(  );
501     virtual void SAL_CALL setComment( const ::rtl::OUString& Comment );
502     virtual void SAL_CALL storeToStorage
503         ( const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& Storage,
504           const ::rtl::OUString& NameBase, const ::rtl::OUString& Comment );
505     virtual void SAL_CALL storeToURL( const ::rtl::OUString& URL, const ::rtl::OUString& NameBase,
506         const ::rtl::OUString& Comment, const ::com::sun::star::uno::Reference
507         < ::com::sun::star::task::XInteractionHandler >& Handler );
508     virtual ::com::sun::star::uno::Sequence< ::sal_Int8 > SAL_CALL exportBinary(  );
509     virtual void SAL_CALL importBinary( const ::com::sun::star::uno::Sequence< ::sal_Int8 >& Data );
510 
511     // XStringResourceWithLocation
512     virtual void SAL_CALL storeAsURL( const ::rtl::OUString& URL );
513     virtual void SAL_CALL setURL( const ::rtl::OUString& URL );
514 };
515 
516 //.........................................................................
517 }   // namespace stringtable
518 //.........................................................................
519 
520 #endif // SCRIPTING_DLGPROV_HXX
521