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#ifndef __com_sun_star_resource_XStringResourceManager_idl__
24*b1cdbd2cSJim Jagielski#define __com_sun_star_resource_XStringResourceManager_idl__
25*b1cdbd2cSJim Jagielski
26*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_resource_MissingResourceException_idl__
27*b1cdbd2cSJim Jagielski#include <com/sun/star/resource/MissingResourceException.idl>
28*b1cdbd2cSJim Jagielski#endif
29*b1cdbd2cSJim Jagielski
30*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_resource_XStringResourceResolver_idl__
31*b1cdbd2cSJim Jagielski#include <com/sun/star/resource/XStringResourceResolver.idl>
32*b1cdbd2cSJim Jagielski#endif
33*b1cdbd2cSJim Jagielski
34*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_container_ElementExistException_idl__
35*b1cdbd2cSJim Jagielski#include <com/sun/star/container/ElementExistException.idl>
36*b1cdbd2cSJim Jagielski#endif
37*b1cdbd2cSJim Jagielski
38*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_lang_Locale_idl__
39*b1cdbd2cSJim Jagielski#include <com/sun/star/lang/Locale.idl>
40*b1cdbd2cSJim Jagielski#endif
41*b1cdbd2cSJim Jagielski
42*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_lang_IllegalArgumentException_idl__
43*b1cdbd2cSJim Jagielski#include <com/sun/star/lang/IllegalArgumentException.idl>
44*b1cdbd2cSJim Jagielski#endif
45*b1cdbd2cSJim Jagielski
46*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_lang_NoSupportException_idl__
47*b1cdbd2cSJim Jagielski#include <com/sun/star/lang/NoSupportException.idl>
48*b1cdbd2cSJim Jagielski#endif
49*b1cdbd2cSJim Jagielski
50*b1cdbd2cSJim Jagielski
51*b1cdbd2cSJim Jagielski//=============================================================================
52*b1cdbd2cSJim Jagielski
53*b1cdbd2cSJim Jagielskimodule com { module sun { module star { module resource {
54*b1cdbd2cSJim Jagielski
55*b1cdbd2cSJim Jagielski//=============================================================================
56*b1cdbd2cSJim Jagielski/**
57*b1cdbd2cSJim Jagielski	Interface to manage a resource string table containing a set of
58*b1cdbd2cSJim Jagielski	strings for different locales.
59*b1cdbd2cSJim Jagielski
60*b1cdbd2cSJim Jagielski	The interface is derived from
61*b1cdbd2cSJim Jagielski	<type scope="com::sun::star::resource">XStringResourceResolver</type>
62*b1cdbd2cSJim Jagielski	that allows to access the string table but not to modify it. This
63*b1cdbd2cSJim Jagielski	interface also allows to modify the string table.
64*b1cdbd2cSJim Jagielski
65*b1cdbd2cSJim Jagielski	It's designed to be used in the context of creating a string table,
66*b1cdbd2cSJim Jagielski	e.g. from a string table editor or from a Dialog Editor designing
67*b1cdbd2cSJim Jagielski	localized dialogs.
68*b1cdbd2cSJim Jagielski
69*b1cdbd2cSJim Jagielski*/
70*b1cdbd2cSJim Jagielskipublished interface XStringResourceManager: com::sun::star::resource::XStringResourceResolver
71*b1cdbd2cSJim Jagielski{
72*b1cdbd2cSJim Jagielski    /**
73*b1cdbd2cSJim Jagielski        Returns the resource's read only state
74*b1cdbd2cSJim Jagielski
75*b1cdbd2cSJim Jagielski        @return  <TRUE/> if the resource is read only, otherwise <FALSE/>
76*b1cdbd2cSJim Jagielski    */
77*b1cdbd2cSJim Jagielski    boolean isReadOnly();
78*b1cdbd2cSJim Jagielski
79*b1cdbd2cSJim Jagielski
80*b1cdbd2cSJim Jagielski    /** Sets the locale to be used
81*b1cdbd2cSJim Jagielski
82*b1cdbd2cSJim Jagielski        @param aLocale
83*b1cdbd2cSJim Jagielski            Specifies the current locale to be used.
84*b1cdbd2cSJim Jagielski
85*b1cdbd2cSJim Jagielski        @param FindClosestMatch
86*b1cdbd2cSJim Jagielski            <p>If true: If the exact locale that should be set is not available
87*b1cdbd2cSJim Jagielski            the method tries to find the closest match. E.g. if en_US is re-
88*b1cdbd2cSJim Jagielski            quired but not available, en would be the next choice. Finally
89*b1cdbd2cSJim Jagielski            the default locale will be used <TRUE/>.
90*b1cdbd2cSJim Jagielski
91*b1cdbd2cSJim Jagielski            <p>If false: If the exact locale that should be set is not available
92*b1cdbd2cSJim Jagielski            a <type scope="com::sun::star::lang">IllegalArgumentException</type>
93*b1cdbd2cSJim Jagielski            is thrown.
94*b1cdbd2cSJim Jagielski
95*b1cdbd2cSJim Jagielski            <p>If false: If the exact locale that should be set is not available
96*b1cdbd2cSJim Jagielski            a <type scope="com::sun::star::lang">IllegalArgumentException</type>
97*b1cdbd2cSJim Jagielski            is thrown.
98*b1cdbd2cSJim Jagielski    */
99*b1cdbd2cSJim Jagielski    void setCurrentLocale
100*b1cdbd2cSJim Jagielski    (
101*b1cdbd2cSJim Jagielski        [in] com::sun::star::lang::Locale locale,
102*b1cdbd2cSJim Jagielski        [in] boolean FindClosestMatch
103*b1cdbd2cSJim Jagielski    )
104*b1cdbd2cSJim Jagielski    raises( com::sun::star::lang::IllegalArgumentException );
105*b1cdbd2cSJim Jagielski
106*b1cdbd2cSJim Jagielski
107*b1cdbd2cSJim Jagielski    /** Sets the default locale to be used
108*b1cdbd2cSJim Jagielski
109*b1cdbd2cSJim Jagielski        @param aLocale
110*b1cdbd2cSJim Jagielski            Specifies the default locale to be used.
111*b1cdbd2cSJim Jagielski            If this locale is not available a
112*b1cdbd2cSJim Jagielski            <type scope="com::sun::star::lang">IllegalArgumentException</type>
113*b1cdbd2cSJim Jagielski            is thrown.
114*b1cdbd2cSJim Jagielski
115*b1cdbd2cSJim Jagielski        @throws <type scope="com::sun::star::lang">NoSupportException</type>
116*b1cdbd2cSJim Jagielski            if the resource is read only, see <member>isReadOnly</member>
117*b1cdbd2cSJim Jagielski    */
118*b1cdbd2cSJim Jagielski    void setDefaultLocale( [in] com::sun::star::lang::Locale locale )
119*b1cdbd2cSJim Jagielski        raises( com::sun::star::lang::IllegalArgumentException,
120*b1cdbd2cSJim Jagielski                com::sun::star::lang::NoSupportException );
121*b1cdbd2cSJim Jagielski
122*b1cdbd2cSJim Jagielski
123*b1cdbd2cSJim Jagielski    /**
124*b1cdbd2cSJim Jagielski        Associates a String to a Resource ID for the current locale.
125*b1cdbd2cSJim Jagielski        If an entry for the Resource ID already exists, the string
126*b1cdbd2cSJim Jagielski        associated with it will be overwritten, otherwise a new
127*b1cdbd2cSJim Jagielski        entry will be created.
128*b1cdbd2cSJim Jagielski
129*b1cdbd2cSJim Jagielski        @param ResourceID
130*b1cdbd2cSJim Jagielski            ID to address the string inside the resource for the current locale.
131*b1cdbd2cSJim Jagielski
132*b1cdbd2cSJim Jagielski        @param Str
133*b1cdbd2cSJim Jagielski            String to be associated with the Resource ID.
134*b1cdbd2cSJim Jagielski
135*b1cdbd2cSJim Jagielski        @throws <type scope="com::sun::star::lang">NoSupportException</type>
136*b1cdbd2cSJim Jagielski            if the resource is read only, see <member>isReadOnly</member>
137*b1cdbd2cSJim Jagielski    */
138*b1cdbd2cSJim Jagielski    void setString
139*b1cdbd2cSJim Jagielski    (
140*b1cdbd2cSJim Jagielski        [in] string ResourceID,
141*b1cdbd2cSJim Jagielski        [in] string Str
142*b1cdbd2cSJim Jagielski    )
143*b1cdbd2cSJim Jagielski    raises( com::sun::star::lang::NoSupportException );
144*b1cdbd2cSJim Jagielski
145*b1cdbd2cSJim Jagielski
146*b1cdbd2cSJim Jagielski    /**
147*b1cdbd2cSJim Jagielski        Associates a String to a Resource ID for a specific locale.
148*b1cdbd2cSJim Jagielski        If an entry for the Resource ID already exists, the string
149*b1cdbd2cSJim Jagielski        associated with it will be overwritten, otherwise a new
150*b1cdbd2cSJim Jagielski        entry will be created.
151*b1cdbd2cSJim Jagielski
152*b1cdbd2cSJim Jagielski        It's not recommended to use this method to get the best
153*b1cdbd2cSJim Jagielski        performance as the implementation may be optimized for
154*b1cdbd2cSJim Jagielski        the use of the current locale.
155*b1cdbd2cSJim Jagielski
156*b1cdbd2cSJim Jagielski        @param ResourceID
157*b1cdbd2cSJim Jagielski            ID to address the string inside the resource.
158*b1cdbd2cSJim Jagielski
159*b1cdbd2cSJim Jagielski        @param Str
160*b1cdbd2cSJim Jagielski            String to be associated with the Resource ID.
161*b1cdbd2cSJim Jagielski
162*b1cdbd2cSJim Jagielski        @param locale
163*b1cdbd2cSJim Jagielski            The locale the string should be set for.
164*b1cdbd2cSJim Jagielski            The locale has to match exactly with one of the locales provided by
165*b1cdbd2cSJim Jagielski            <member>getLocales</member>. A closest match search is not supported.
166*b1cdbd2cSJim Jagielski
167*b1cdbd2cSJim Jagielski        @throws <type scope="com::sun::star::lang">NoSupportException</type>
168*b1cdbd2cSJim Jagielski            if the resource is read only, see <member>isReadOnly</member>
169*b1cdbd2cSJim Jagielski    */
170*b1cdbd2cSJim Jagielski    void setStringForLocale
171*b1cdbd2cSJim Jagielski    (
172*b1cdbd2cSJim Jagielski        [in] string ResourceID,
173*b1cdbd2cSJim Jagielski        [in] string Str,
174*b1cdbd2cSJim Jagielski        [in] com::sun::star::lang::Locale locale
175*b1cdbd2cSJim Jagielski    )
176*b1cdbd2cSJim Jagielski    raises( com::sun::star::lang::NoSupportException );
177*b1cdbd2cSJim Jagielski
178*b1cdbd2cSJim Jagielski
179*b1cdbd2cSJim Jagielski    /**
180*b1cdbd2cSJim Jagielski        Removes a Resource ID including the corresponding string for
181*b1cdbd2cSJim Jagielski        the current locale.
182*b1cdbd2cSJim Jagielski
183*b1cdbd2cSJim Jagielski        @param ResourceID
184*b1cdbd2cSJim Jagielski            The Resource ID to be removed for the current locale.
185*b1cdbd2cSJim Jagielski
186*b1cdbd2cSJim Jagielski        @throws
187*b1cdbd2cSJim Jagielski        <type scope="com::sun::star::resource">MissingResourceException</type>
188*b1cdbd2cSJim Jagielski        if the Resource ID is not valid.
189*b1cdbd2cSJim Jagielski
190*b1cdbd2cSJim Jagielski        @throws
191*b1cdbd2cSJim Jagielski        <type scope="com::sun::star::lang">NoSupportException</type>
192*b1cdbd2cSJim Jagielski        if the resource is read only, see <member>isReadOnly</member>
193*b1cdbd2cSJim Jagielski    */
194*b1cdbd2cSJim Jagielski    void removeId( [in] string ResourceID )
195*b1cdbd2cSJim Jagielski        raises( com::sun::star::resource::MissingResourceException,
196*b1cdbd2cSJim Jagielski                com::sun::star::lang::NoSupportException );
197*b1cdbd2cSJim Jagielski
198*b1cdbd2cSJim Jagielski
199*b1cdbd2cSJim Jagielski    /**
200*b1cdbd2cSJim Jagielski        Removes a Resource ID including the corresponding string for
201*b1cdbd2cSJim Jagielski        s specific locale.
202*b1cdbd2cSJim Jagielski
203*b1cdbd2cSJim Jagielski        @param ResourceID
204*b1cdbd2cSJim Jagielski            The Resource ID to be removed.
205*b1cdbd2cSJim Jagielski
206*b1cdbd2cSJim Jagielski        @param locale
207*b1cdbd2cSJim Jagielski            The locale the Resource ID should be removed for.
208*b1cdbd2cSJim Jagielski            The locale has to match exactly with one of the locales provided by
209*b1cdbd2cSJim Jagielski            <member>getLocales</member>. A closest match search is not supported.
210*b1cdbd2cSJim Jagielski
211*b1cdbd2cSJim Jagielski        @throws
212*b1cdbd2cSJim Jagielski        <type scope="com::sun::star::resource">MissingResourceException</type>
213*b1cdbd2cSJim Jagielski        if the Resource ID is not valid.
214*b1cdbd2cSJim Jagielski
215*b1cdbd2cSJim Jagielski        @throws
216*b1cdbd2cSJim Jagielski        <type scope="com::sun::star::lang">NoSupportException</type>
217*b1cdbd2cSJim Jagielski        if the resource is read only, see <member>isReadOnly</member>
218*b1cdbd2cSJim Jagielski    */
219*b1cdbd2cSJim Jagielski    void removeIdForLocale( [in] string ResourceID, [in] com::sun::star::lang::Locale locale )
220*b1cdbd2cSJim Jagielski        raises( com::sun::star::resource::MissingResourceException,
221*b1cdbd2cSJim Jagielski                com::sun::star::lang::NoSupportException );
222*b1cdbd2cSJim Jagielski
223*b1cdbd2cSJim Jagielski
224*b1cdbd2cSJim Jagielski    /**
225*b1cdbd2cSJim Jagielski        Creates a new locale.
226*b1cdbd2cSJim Jagielski
227*b1cdbd2cSJim Jagielski        <p>For each existing ResourceID an empty string
228*b1cdbd2cSJim Jagielski        will be created. The first locale created will
229*b1cdbd2cSJim Jagielski        automatically be the first default locale.
230*b1cdbd2cSJim Jagielski        Otherwise strings for all already created IDs
231*b1cdbd2cSJim Jagielski        will be copied from the default locale.</p>
232*b1cdbd2cSJim Jagielski
233*b1cdbd2cSJim Jagielski        @throws
234*b1cdbd2cSJim Jagielski        <type scope="com::sun::star::container">ElementExistException</type>
235*b1cdbd2cSJim Jagielski        if the Locale already has been created.
236*b1cdbd2cSJim Jagielski
237*b1cdbd2cSJim Jagielski        @throws
238*b1cdbd2cSJim Jagielski        <type scope="com::sun::star::lang">IllegalArgumentException</type>
239*b1cdbd2cSJim Jagielski        if the Locale is not valid.
240*b1cdbd2cSJim Jagielski
241*b1cdbd2cSJim Jagielski        @throws
242*b1cdbd2cSJim Jagielski        <type scope="com::sun::star::lang">NoSupportException</type>
243*b1cdbd2cSJim Jagielski        if the resource is read only, see <member>isReadOnly</member>
244*b1cdbd2cSJim Jagielski    */
245*b1cdbd2cSJim Jagielski    void newLocale( [in] com::sun::star::lang::Locale locale )
246*b1cdbd2cSJim Jagielski        raises( com::sun::star::container::ElementExistException,
247*b1cdbd2cSJim Jagielski                com::sun::star::lang::IllegalArgumentException,
248*b1cdbd2cSJim Jagielski                com::sun::star::lang::NoSupportException );
249*b1cdbd2cSJim Jagielski
250*b1cdbd2cSJim Jagielski
251*b1cdbd2cSJim Jagielski    /**
252*b1cdbd2cSJim Jagielski        Removes a locale completely including the corresponding
253*b1cdbd2cSJim Jagielski        strings for each locale.
254*b1cdbd2cSJim Jagielski
255*b1cdbd2cSJim Jagielski        @throws
256*b1cdbd2cSJim Jagielski        <type scope="com::sun::star::lang">IllegalArgumentException</type>
257*b1cdbd2cSJim Jagielski        if the Locale to be removed is not supported.
258*b1cdbd2cSJim Jagielski
259*b1cdbd2cSJim Jagielski        @throws
260*b1cdbd2cSJim Jagielski        <type scope="com::sun::star::lang">NoSupportException</type>
261*b1cdbd2cSJim Jagielski        if the resource is read only, see <member>isReadOnly</member>
262*b1cdbd2cSJim Jagielski    */
263*b1cdbd2cSJim Jagielski    void removeLocale( [in] com::sun::star::lang::Locale locale )
264*b1cdbd2cSJim Jagielski        raises( com::sun::star::lang::IllegalArgumentException,
265*b1cdbd2cSJim Jagielski                com::sun::star::lang::NoSupportException );
266*b1cdbd2cSJim Jagielski
267*b1cdbd2cSJim Jagielski
268*b1cdbd2cSJim Jagielski	/**
269*b1cdbd2cSJim Jagielski		Provides a numeric id that is unique within all Resource IDs
270*b1cdbd2cSJim Jagielski		used in the string table.
271*b1cdbd2cSJim Jagielski
272*b1cdbd2cSJim Jagielski		This method takes into account all Resource IDs starting with
273*b1cdbd2cSJim Jagielski		a decimal number and only evaluates the ID until the first non
274*b1cdbd2cSJim Jagielski		digit character is reached. This allows to extend unique IDs
275*b1cdbd2cSJim Jagielski		with individual identifiers without breaking the mechanism of
276*b1cdbd2cSJim Jagielski		this method.
277*b1cdbd2cSJim Jagielski
278*b1cdbd2cSJim Jagielski		Examples:
279*b1cdbd2cSJim Jagielski		ID "42" -> numeric id 42
280*b1cdbd2cSJim Jagielski		ID "0foo" -> numeric id 0
281*b1cdbd2cSJim Jagielski		ID "111.MyId.Something.Else" -> numeric id 111
282*b1cdbd2cSJim Jagielski		ID "No Digits" -> not considered for numeric id
283*b1cdbd2cSJim Jagielski
284*b1cdbd2cSJim Jagielski		The id returned will be 0 for an empty string table and it will
285*b1cdbd2cSJim Jagielski		be reset to 0 if all locales are removed. In all other cases
286*b1cdbd2cSJim Jagielski		this method returns the maximum numeric id used so far at the
287*b1cdbd2cSJim Jagielski		beginning of a Resource ID incremented by 1. When calling this
288*b1cdbd2cSJim Jagielski		method more than once always the same number will be returned
289*b1cdbd2cSJim Jagielski		until this number is really used at the beginning of a new
290*b1cdbd2cSJim Jagielski		Resource ID passed to <member>setString</member> or
291*b1cdbd2cSJim Jagielski		<member>setStringForLocale</member>.
292*b1cdbd2cSJim Jagielski
293*b1cdbd2cSJim Jagielski		As the numeric id is guaranteed to be unique for the complete
294*b1cdbd2cSJim Jagielski		string table all locales are taken into account. So using this
295*b1cdbd2cSJim Jagielski		methods will force the implementation to load all locale data
296*b1cdbd2cSJim Jagielski		that may not have been loaded so far.
297*b1cdbd2cSJim Jagielski
298*b1cdbd2cSJim Jagielski		@throws
299*b1cdbd2cSJim Jagielski		<type scope="com::sun::star::lang">NoSupportException</type>
300*b1cdbd2cSJim Jagielski		if the next available id exceeds the range of type long.
301*b1cdbd2cSJim Jagielski		So it's not recommended to use own Resource IDs starting
302*b1cdbd2cSJim Jagielski		with a decimal number near to the maximum long value if
303*b1cdbd2cSJim Jagielski		this methods should be used.
304*b1cdbd2cSJim Jagielski	*/
305*b1cdbd2cSJim Jagielski	long getUniqueNumericId()
306*b1cdbd2cSJim Jagielski		raises( com::sun::star::lang::NoSupportException );
307*b1cdbd2cSJim Jagielski};
308*b1cdbd2cSJim Jagielski
309*b1cdbd2cSJim Jagielski//=============================================================================
310*b1cdbd2cSJim Jagielski
311*b1cdbd2cSJim Jagielski}; }; }; };
312*b1cdbd2cSJim Jagielski
313*b1cdbd2cSJim Jagielski#endif
314