Commit | Line | Data |
---|---|---|
ec1f3444 NR |
1 | package be.nikiroo.utils.resources; |
2 | ||
3 | import java.lang.annotation.ElementType; | |
4 | import java.lang.annotation.Retention; | |
5 | import java.lang.annotation.RetentionPolicy; | |
6 | import java.lang.annotation.Target; | |
7 | ||
8 | /** | |
9 | * Annotation used to give some information about the translation keys, so the | |
10 | * translation .properties file can be created programmatically. | |
11 | * | |
12 | * @author niki | |
13 | */ | |
14 | @Retention(RetentionPolicy.RUNTIME) | |
15 | @Target(ElementType.FIELD) | |
16 | public @interface Meta { | |
17 | /** | |
db31c358 NR |
18 | * The format of an item (the values it is expected to be of). |
19 | * <p> | |
20 | * Note that the INI file can contain arbitrary data, but it is expected to | |
21 | * be valid. | |
22 | * | |
23 | * @author niki | |
24 | */ | |
25 | public enum Format { | |
26 | /** An integer value, can be negative. */ | |
27 | INT, | |
28 | /** true or false. */ | |
29 | BOOLEAN, | |
30 | /** Any text String. */ | |
31 | STRING, | |
32 | /** A password field. */ | |
33 | PASSWORD, | |
34 | /** A colour (either by name or #rrggbb or #aarrggbb). */ | |
35 | COLOR, | |
36 | /** A locale code (e.g., fr-BE, en-GB, es...). */ | |
37 | LOCALE, | |
38 | /** A path to a file. */ | |
39 | FILE, | |
40 | /** A path to a directory. */ | |
41 | DIRECTORY, | |
42 | /** A fixed list of values (see {@link Meta#list()} for the values). */ | |
43 | FIXED_LIST, | |
44 | /** | |
45 | * A fixed list of values (see {@link Meta#list()} for the values) OR a | |
46 | * custom String value (basically, a {@link Format#FIXED_LIST} with an | |
47 | * option to enter a not accounted for value). | |
48 | */ | |
9e834013 | 49 | COMBO_LIST, |
db31c358 NR |
50 | } |
51 | ||
52 | /** | |
9e834013 NR |
53 | * A description of this item (what it is or does, how to explain that item |
54 | * to the user). | |
ec1f3444 NR |
55 | * |
56 | * @return what it is | |
57 | */ | |
db31c358 | 58 | String description() default ""; |
ec1f3444 NR |
59 | |
60 | /** | |
db31c358 NR |
61 | * This item is only used as a group, not as an option. |
62 | * <p> | |
63 | * For instance, you could have LANGUAGE_CODE as a group for which you won't | |
64 | * use the value in the program, and LANGUAGE_CODE_FR, LANGUAGE_CODE_EN | |
65 | * inside for which the value must be set. | |
ec1f3444 | 66 | * |
e8aa5bf9 | 67 | * @return TRUE if it is a group |
ec1f3444 | 68 | */ |
db31c358 | 69 | boolean group() default false; |
ec1f3444 NR |
70 | |
71 | /** | |
72 | * What format should/must this key be in. | |
73 | * | |
74 | * @return the format it is in | |
75 | */ | |
db31c358 NR |
76 | Format format() default Format.STRING; |
77 | ||
78 | /** | |
79 | * The list of fixed values this item can be (either for | |
80 | * {@link Format#FIXED_LIST} or {@link Format#COMBO_LIST}). | |
81 | * | |
82 | * @return the list of values | |
83 | */ | |
84 | String[] list() default {}; | |
85 | ||
86 | /** | |
87 | * This item can be left unspecified. | |
88 | * | |
89 | * @return TRUE if it can | |
90 | */ | |
91 | boolean nullable() default true; | |
92 | ||
e8aa5bf9 NR |
93 | /** |
94 | * The default value of this item. | |
95 | * | |
96 | * @return the value | |
97 | */ | |
98 | String def() default ""; | |
99 | ||
db31c358 NR |
100 | /** |
101 | * This item is a comma-separated list of values instead of a single value. | |
0877d6f5 NR |
102 | * <p> |
103 | * The list items are separated by a comma, each surrounded by | |
104 | * double-quotes, with backslashes and double-quotes escaped by a backslash. | |
105 | * <p> | |
106 | * Example: <tt>"un", "deux"</tt> | |
db31c358 NR |
107 | * |
108 | * @return TRUE if it is | |
109 | */ | |
110 | boolean array() default false; | |
ec1f3444 NR |
111 | |
112 | /** | |
db31c358 NR |
113 | * An addition to the format. |
114 | * <p> | |
115 | * Free info text to help translate, for instance the parameters order and | |
116 | * type for String translations (i.e., %s = input file name, %d = file size | |
117 | * in MB). | |
ec1f3444 NR |
118 | * |
119 | * @return some info | |
120 | */ | |
db31c358 | 121 | String info() default ""; |
ec1f3444 | 122 | } |