Revision 3108
org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.lib/src/main/java/org/gvsig/tools/dynobject/impl/DefaultDynField.java | ||
---|---|---|
25 | 25 |
import java.io.File; |
26 | 26 |
import java.net.URI; |
27 | 27 |
import java.net.URL; |
28 |
import java.nio.charset.Charset; |
|
29 |
import java.util.Arrays; |
|
28 | 30 |
import java.util.Collection; |
29 | 31 |
import java.util.Date; |
30 | 32 |
import java.util.Iterator; |
31 | 33 |
import java.util.List; |
34 |
import java.util.Locale; |
|
32 | 35 |
import java.util.Map; |
33 | 36 |
import java.util.Set; |
37 |
import java.util.SortedMap; |
|
34 | 38 |
import java.util.function.Supplier; |
35 | 39 |
import org.apache.commons.lang3.StringUtils; |
36 | 40 |
import org.gvsig.tools.ToolsLocator; |
... | ... | |
327 | 331 |
@Override |
328 | 332 |
public DynField setSubtype(String subtype) { |
329 | 333 |
this.subtype = subtype; |
334 |
if(this.availableValues == null) { |
|
335 |
switch (this.getType()) { |
|
336 |
case DataTypes.STRING: |
|
337 |
if(StringUtils.equalsIgnoreCase(subtype, "locale")) { |
|
338 |
this.availableValues = getAvailableLocaleLanguageTags(); |
|
339 |
} else if(StringUtils.equalsIgnoreCase(subtype, "charset")) { |
|
340 |
this.availableValues = getAvailableCharsetValues(); |
|
341 |
} |
|
342 |
break; |
|
343 |
case DataTypes.LOCALE: |
|
344 |
if(StringUtils.equalsIgnoreCase(subtype, "locale")) { |
|
345 |
this.availableValues = getAvailableLocaleValues(); |
|
346 |
} |
|
347 |
} |
|
348 |
} |
|
330 | 349 |
return this; |
331 | 350 |
} |
351 |
|
|
352 |
private DynObjectValueItem[] getAvailableCharsetValues() { |
|
353 |
SortedMap<String, Charset> charsets = Charset.availableCharsets(); |
|
354 |
DynObjectValueItem[] availableValues = new DynObjectValueItem[charsets.size()+1]; |
|
355 |
int i = 0; |
|
356 |
availableValues[i++] = new DynObjectValueItem("DEFAULT", "Default (use system language)"); |
|
357 |
for (Map.Entry<String, Charset> entry : charsets.entrySet()) { |
|
358 |
String key = entry.getKey(); |
|
359 |
Charset value = entry.getValue(); |
|
360 |
availableValues[i++] = new DynObjectValueItem(value, key); |
|
361 |
} |
|
332 | 362 |
|
363 |
return availableValues; |
|
364 |
} |
|
365 |
|
|
366 |
private DynObjectValueItem[] getAvailableLocaleLanguageTags() { |
|
367 |
Locale[] locales = Locale.getAvailableLocales(); |
|
368 |
Arrays.sort(locales, (Locale o1, Locale o2) -> { |
|
369 |
if (o1 == null) { |
|
370 |
return -1; |
|
371 |
} |
|
372 |
if (o2 == null) { |
|
373 |
return 1; |
|
374 |
} |
|
375 |
return o1.getDisplayName().compareToIgnoreCase(o2.getDisplayName()); |
|
376 |
}); |
|
377 |
DynObjectValueItem[] availableValues = new DynObjectValueItem[locales.length+1]; |
|
378 |
availableValues[0] = new DynObjectValueItem("DEFAULT", "Default (use system locale)"); |
|
379 |
for (int i = 0; i < locales.length; i++) { |
|
380 |
String theLabel = locales[i].getDisplayName(); |
|
381 |
if(StringUtils.isBlank(theLabel)){ |
|
382 |
theLabel = locales[i].toLanguageTag(); |
|
383 |
} |
|
384 |
availableValues[i+1] = new DynObjectValueItem(locales[i].toLanguageTag(), theLabel); |
|
385 |
} |
|
386 |
return availableValues; |
|
387 |
|
|
388 |
} |
|
389 |
|
|
390 |
private DynObjectValueItem[] getAvailableLocaleValues() { |
|
391 |
Locale[] locales = Locale.getAvailableLocales(); |
|
392 |
Arrays.sort(locales, (Locale o1, Locale o2) -> { |
|
393 |
if (o1 == null) { |
|
394 |
return -1; |
|
395 |
} |
|
396 |
if (o2 == null) { |
|
397 |
return 1; |
|
398 |
} |
|
399 |
return o1.getDisplayName().compareToIgnoreCase(o2.getDisplayName()); |
|
400 |
}); |
|
401 |
DynObjectValueItem[] availableValues = new DynObjectValueItem[locales.length+1]; |
|
402 |
availableValues[0] = new DynObjectValueItem("DEFAULT", "Default (use system locale)"); |
|
403 |
for (int i = 0; i < locales.length; i++) { |
|
404 |
String theLabel = locales[i].getDisplayName(); |
|
405 |
if(StringUtils.isBlank(theLabel)){ |
|
406 |
theLabel = locales[i].toLanguageTag(); |
|
407 |
} |
|
408 |
availableValues[i+1] = new DynObjectValueItem(locales[i], theLabel); |
|
409 |
} |
|
410 |
return availableValues; |
|
411 |
|
|
412 |
} |
|
413 |
|
|
414 |
|
|
333 | 415 |
@Override |
334 | 416 |
public String getSubtype() { |
335 | 417 |
return subtype; |
Also available in: Unified diff