001 /*
002 * Copyright (c) 2009 The openGion Project.
003 *
004 * Licensed under the Apache License, Version 2.0 (the "License");
005 * you may not use this file except in compliance with the License.
006 * You may obtain a copy of the License at
007 *
008 * http://www.apache.org/licenses/LICENSE-2.0
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS,
012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
013 * either express or implied. See the License for the specific language
014 * governing permissions and limitations under the License.
015 */
016 package org.opengion.hayabusa.taglib;
017
018 import org.opengion.hayabusa.common.HybsSystemException;
019 import org.opengion.fukurou.util.XHTMLTag;
020
021 /**
022 * ボタンを作æ?するHTML拡張タグですã?
023 *
024 * ボタンごとにå¿?¦�な画面を選び出して制御を転送することができますã?
025 * BODY 部åˆ?�«ラベルã‚?¼·調æ–?—などのタグを記述すれば、そのままボタンとして表示されますã?
026 * [ヒンãƒ?
027 * buttonタグとinputタグが生成するã?タンは、機è?çš?�«は同等ですが、buttonタグの方ã�?
028 * レタリング能力があり、å?容を持つことができますã?
029 * 例えば、画像をå†?®¹に持つbutton機è?は、type属æ?がimageのinputタグと
030 * そっくり同じですが、buttonタグはå†?®¹を持つことができますã?
031 *
032 * @og.formSample
033 * ●形式ï¼?lt;og:button type="…" name="…" value="…" lbl="…" />
034 * ●body?šあã‚?EVAL_BODY_BUFFERED:BODYを評価しã?{@XXXX} を解析しまã�?
035 *
036 * ●Tag定義??
037 * <og:button
038 * type ○ã?HTML】ã?タンのタイプ[submit/reset/button]を指定しまã�?å¿??)ã€?
039 * name 【HTML】ã?タンの名称を指定しまã�?
040 * value 【HTML】ã?タンの値を指定しまã�?
041 * caseKey 【TAG】このタグ自体を利用するかどã�?�‹の条件キーを指定しまã�?初期値:null)
042 * caseVal 【TAG】このタグ自体を利用するかどã�?�‹の条件値を指定しまã�?初期値:null)
043 * caseNN 【TAG】指定ã?値がã?null/ゼロæ–?—å? でなã�??å�?Not Null=NN)は、このタグは使用されまã�?初期値:true)
044 * caseNull 【TAG】指定ã?値がã?null/ゼロæ–?—å? の場合ã?、このタグは使用されまã�?初期値:true)
045 * lbl 【TAG】ラベルリソースのラベルIDを指定しまã�?
046 * id 【HTML】要ç´?�«対して固有ã?名前(id)をつける場合に設定しまã�?
047 * lang 【HTML】要ç´??å†?®¹と他ã?属æ?値のè¨?ª?lang,xml:lang)を指定しまã�?
048 * dir 【HTML】文字表記ã?方å�?dir)を指定しまã�?
049 * title 【HTML】要ç´?�«対する補足çš?ƒ…報(title)を設定しまã�?
050 * style 【HTML】この要ç´?�«対して適用させるスタイルシーãƒ?style)を設定しまã�?
051 * disabled 【TAG】その部品に対してã€?�¸択や変更がå?来なã�?‚ˆã�?�«(disabled)æŒ?®šしまã�?サーバã?に送信されなã�?
052 * tabindex 【HTML】タブã?移動é?(tabindex)を指定しまã�?0 ??32767)
053 * accesskey 【HTML】アクセスキー(alt+キーで直接æŒ?®?を割り当てまã�?
054 * clazz 【HTML】要ç´?�«対して class 属æ?を設定しまã�?
055 * language 【TAG】タグå†?ƒ¨で使用するè¨?ªžコード[ja/en/zh/…]を指定しまã�?
056 * onClick 【HTML】JavaScriptのイベンãƒ?onClick を設定しまã�?ä¾?onClick="renew('query.jsp','QUERY');")
057 * onBlur 【HTML】JavaScriptのイベンãƒ?onBlur を設定しまã�?ä¾?onBlur="this.value=value.toUpperCase();")
058 * onFocus 【HTML】JavaScriptのイベンãƒ?onFocus を設定しまã�?
059 * ondblClick 【HTML】JavaScriptのイベンãƒ?ondblClick を設定しまã�?
060 * onMouseDown 【HTML】JavaScriptのイベンãƒ?onMouseDown を設定しまã�?
061 * onMouseUp 【HTML】JavaScriptのイベンãƒ?onMouseUp を設定しまã�?
062 * onMouseMove 【HTML】JavaScriptのイベンãƒ?onMouseMove を設定しまã�?
063 * onMouseOut 【HTML】JavaScriptのイベンãƒ?onMouseOut を設定しまã�?
064 * onMouseOver 【HTML】JavaScriptのイベンãƒ?onMouseOver を設定しまã�?
065 * roles 【TAG】ロールをセãƒ?ƒˆしまã�?
066 * debug 【TAG】デバッグæƒ??をå?力するかどã�?�‹[true/false]を指定しまã�?初期値:false)
067 * > ... Body ...
068 * </og:button>
069 *
070 * ●使用ä¾?
071 * <og:button type="submit" name="test" value="1" lbl="test" /> LabelResource プロパティのラベル使用したã�?�¨ききはlbl属æ?に、LabelResourceを使ã�?�¾すã?
072 * <og:button type="submit" name="test" value="1" msg="MSG0103" /> MessageResource プロパティのラベル使用したã�?�¨きã?msg属æ?を使ã�?�¾すã?
073 *
074 * @og.group 画面部å“?
075 *
076 * @version 4.0
077 * @author Kazuhiko Hasegawa
078 * @since JDK5.0,
079 */
080 public class ButtonTag extends HTMLTagSupport {
081 //* こã?プログラãƒ??VERSIONæ–?—å?を設定しますã? {@value} */
082 private static final String VERSION = "5.2.2.0 (2010/11/01)" ;
083
084 private static final long serialVersionUID = 522020101101L ;
085
086 private static final String CHECK_TYPE = "|submit|reset|button|" ;
087
088 /**
089 * Taglibの開始タグが見つかったときに処ç�?�™ã‚?doStartTag() ã‚?オーバã?ライドしますã?
090 *
091 * @og.rev 3.1.1.2 (2003/04/04) Tomcat4.1 対応ã?ボディが存在する場合ã?みボディが呼ばれる対応ã?
092 * @og.rev 5.2.2.0 (2010/11/01) caseKey 、caseVal 属æ?対å¿?
093 *
094 * @return 後続å?ç�??æŒ?¤º( EVAL_BODY_BUFFERED )
095 */
096 @Override
097 public int doStartTag() {
098 // 5.2.2.0 (2010/11/01) caseKey 、caseVal 属æ?対å¿?
099 if( useTag() ) {
100 set( "body",getLongLabel() );
101 return( EVAL_BODY_BUFFERED ); // Body を評価するã€? extends BodyTagSupport æ™?
102 }
103 return ( SKIP_BODY ); // Body を評価しなã�?
104 }
105
106 /**
107 * Taglibのタグ本体を処ç�?�™ã‚?doAfterBody() ã‚?オーバã?ライドしますã?
108 *
109 * @og.rev 3.1.1.0 (2003/03/28) ボディのå†?®¹を取得するå?ç�?‚’、CommonTagSupport で行うã€?
110 * @og.rev 3.1.1.2 (2003/04/04) Tomcat4.1 対応ã?ボディが存在する場合ã?みボディが呼ばれる対応ã?
111 *
112 * @return 後続å?ç�??æŒ?¤º(SKIP_BODY)
113 */
114 @Override
115 public int doAfterBody() {
116 String label = getBodyString();
117
118 if( label != null && label.length() > 0 ) {
119 set( "body",label );
120 }
121
122 return(SKIP_BODY);
123 }
124
125 /**
126 * ボタンを作æ?しますã?
127 *
128 * <button type="submit" name="名前" value="値">
129 *
130 * @return ボタンタグæ–?—å?
131 */
132 @Override
133 protected String makeTag() {
134 return XHTMLTag.button( getAttributes() );
135 }
136
137 /**
138 * 【HTML】ã?タンのタイプ[submit/reset/button]を指定しますã?
139 *
140 * @og.tag
141 *
142 * submit:提å?ボタンを作æ?しますã?
143 * reset:リセãƒ?ƒˆボタンを作æ?しますã?
144 * button:押しã?タンを作æ?しますã?
145 *
146 * @param type ボタンのタイプ[submit/reset/button]
147 */
148 public void setType( final String type ) {
149 String tp = getRequestParameter( type );
150 if( check( "|" + tp + "|" , CHECK_TYPE ) ) {
151 set( "type",tp );
152 }
153 else {
154 String errMsg = "type は、下記ã?ç¯?›²よりæŒ?®šしてください。type=["
155 + tp + "] in [" + CHECK_TYPE + "]";
156 throw new HybsSystemException( errMsg );
157 }
158 }
159
160 /**
161 * 【HTML】ã?タンの名称を指定しますã?
162 *
163 * @og.tag
164 * @param name ボタンの名称
165 */
166 public void setName( final String name ) {
167 set( "name",getRequestParameter( name ) );
168 }
169
170 /**
171 * 【HTML】ã?タンの値を指定しますã?
172 *
173 * @og.tag
174 * @param value ボタンの値
175 */
176 public void setValue( final String value ) {
177 set( "value",getRequestParameter( value ) );
178 }
179
180 /**
181 * こã?オブジェクトã?æ–?—å?表現を返しますã?
182 * 基本çš?�«ãƒ?ƒ�ãƒ?‚°目çš?�«使用しますã?
183 *
184 * @return こã?クラスのæ–?—å?表現
185 */
186 @Override
187 public String toString() {
188 return org.opengion.fukurou.util.ToString.title( this.getClass().getName() )
189 .println( "VERSION" ,VERSION )
190 .println( "Other..." ,getAttributes().getAttribute() )
191 .fixForm().toString() ;
192
193 }
194 }