1 /*
2 * Copyright 2004-2008 the Seasar Foundation and the Others.
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
13 * either express or implied. See the License for the specific language
14 * governing permissions and limitations under the License.
15 */
16 package org.seasar.uruma.annotation;
17
18 import java.lang.annotation.ElementType;
19 import java.lang.annotation.Retention;
20 import java.lang.annotation.RetentionPolicy;
21 import java.lang.annotation.Target;
22
23 /**
24 * コンポーネントから SWT のウィジットに対するレンダリング方法を指定するアノテーションです。<br />
25 *
26 * @author y-komori
27 */
28 @Retention(RetentionPolicy.RUNTIME)
29 @Target(ElementType.FIELD)
30 public @interface RenderingPolicy {
31 /**
32 * レンダリング対象を指定するための列挙型です。<br />
33 *
34 * @author y-komori
35 */
36 public enum TargetType {
37 /**
38 * 対象がプロパティであることを示します。<br />
39 * セッターを使用して値を設定します。
40 */
41 PROPERTY,
42 /**
43 * 対象がフィールドであることを示します。<br />
44 */
45 FIELD,
46 /**
47 * 自動設定を行わないことを示します。<br />
48 */
49 NONE
50 }
51
52 /**
53 * レンダリング対象属性の型を表す列挙型です。<br />
54 *
55 * @author y-komori
56 */
57 public enum ConversionType {
58 /** 対象が {@link String} 型であることを示します。<br /> */
59 STRING,
60 /** 対象が改行やタブを含む {@link String} 型であることを示します。<br /> */
61 TEXT,
62 /** 対象が int 型であることを示します。<br /> */
63 INT,
64 /** 対象が boolean 型であることを示します。<br /> */
65 BOOLEAN,
66 /** 対象が char 型であることを示します。<br /> */
67 CHAR,
68 /** 対象が int の配列型であることを示します。転送元は数値のカンマ区切り文字列で表します。<br /> */
69 INT_ARRAY,
70 /**
71 * 対象が {@link org.eclipse.swt.graphics.Color} 型であることを示します。転送元は #RRGGBB
72 * 形式の文字列で表します。<br />
73 */
74 COLOR,
75 /** 対象が int 型の {@link org.eclipse.swt.SWT} 定数であることを示します。転送元は定数名の文字列で表します。<br /> */
76 SWT_CONST,
77 /**
78 * 対象が {@link org.eclipse.swt.graphics.Image}
79 * 型であることを示します。転送元は画像ファイルへのパス文字列で表します。<br />
80 */
81 IMAGE,
82 /**
83 * 対象がアクセラレータであることを示します。 転送元は {@link org.eclipse.jface.action.Action}
84 * で使用するアクセラレータ表記文字列で表します。
85 */
86 ACCELERATOR
87 }
88
89 /**
90 * 属性を設定するタイミングを表す列挙型です。<br />
91 *
92 * @author y-komori
93 */
94 public enum SetTiming {
95 /** コンポーネントのレンダリング時に設定することを示します。<br/> */
96 RENDER,
97 /** 子コンポーネントのレンダリング後に設定することを示します。<br/> */
98 RENDER_AFTER
99 }
100
101 /**
102 * 対象プロパティ名を表します。<br />
103 * 省略時はコンポーネント側プロパティと同じ名前のプロパティへ設定します。<br />
104 *
105 * @return プロパティ名
106 */
107 public String name() default "";
108
109 /**
110 * 対象への設定方式を表します。<br />
111 *
112 * @return 対象への設定方式
113 */
114 public TargetType targetType() default TargetType.PROPERTY;
115
116 /**
117 * 対象への変換方式を表します。<br />
118 *
119 * @return 対象への変換方式
120 */
121 public ConversionType conversionType() default ConversionType.STRING;
122
123 /**
124 * 対象への設定タイミングを表します。<br />
125 *
126 * @return 対象への設定タイミング
127 */
128 public SetTiming setTiming() default SetTiming.RENDER;
129 }