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