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 * autofocus 【HTML5】指定した?力?カーソルが当たって自動的にフォーカスされます? 066 * roles 【TAG】ロールをセ?しま? 067 * debug 【TAG】デバッグ??を?力するかど?[true/false]を指定しま?初期値:false) 068 * > ... Body ... 069 * </og:button> 070 * 071 * ●使用? 072 * <og:button type="submit" name="test" value="1" lbl="test" /> LabelResource プロパティのラベル使用した?ききはlbl属?に、LabelResourceを使?す? 073 * <og:button type="submit" name="test" value="1" msg="MSG0103" /> MessageResource プロパティのラベル使用した?き?msg属?を使?す? 074 * 075 * @og.group 画面部? 076 * 077 * @version 4.0 078 * @author Kazuhiko Hasegawa 079 * @since JDK5.0, 080 */ 081 public class ButtonTag extends HTMLTagSupport { 082 //* こ?プログラ??VERSION??を設定します? {@value} */ 083 private static final String VERSION = "5.2.2.0 (2010/11/01)" ; 084 085 private static final long serialVersionUID = 522020101101L ; 086 087 private static final String CHECK_TYPE = "|submit|reset|button|" ; 088 089 /** 090 * Taglibの開始タグが見つかったときに処??doStartTag() ?オーバ?ライドします? 091 * 092 * @og.rev 3.1.1.2 (2003/04/04) Tomcat4.1 対応?ボディが存在する場合?みボディが呼ばれる対応? 093 * @og.rev 5.2.2.0 (2010/11/01) caseKey 、caseVal 属?対? 094 * 095 * @return 後続????( EVAL_BODY_BUFFERED ) 096 */ 097 @Override 098 public int doStartTag() { 099 // 5.2.2.0 (2010/11/01) caseKey 、caseVal 属?対? 100 if( useTag() ) { 101 set( "body",getLongLabel() ); 102 return( EVAL_BODY_BUFFERED ); // Body を評価する? extends BodyTagSupport ? 103 } 104 return ( SKIP_BODY ); // Body を評価しな? 105 } 106 107 /** 108 * Taglibのタグ本体を処??doAfterBody() ?オーバ?ライドします? 109 * 110 * @og.rev 3.1.1.0 (2003/03/28) ボディの?を取得する??、CommonTagSupport で行う? 111 * @og.rev 3.1.1.2 (2003/04/04) Tomcat4.1 対応?ボディが存在する場合?みボディが呼ばれる対応? 112 * 113 * @return 後続????(SKIP_BODY) 114 */ 115 @Override 116 public int doAfterBody() { 117 String label = getBodyString(); 118 119 if( label != null && label.length() > 0 ) { 120 set( "body",label ); 121 } 122 123 return(SKIP_BODY); 124 } 125 126 /** 127 * ボタンを作?します? 128 * 129 * <button type="submit" name="名前" value="値"> 130 * 131 * @return ボタンタグ?? 132 */ 133 @Override 134 protected String makeTag() { 135 return XHTMLTag.button( getAttributes() ); 136 } 137 138 /** 139 * 【HTML】?タンのタイプ[submit/reset/button]を指定します? 140 * 141 * @og.tag 142 * 143 * submit:提?ボタンを作?します? 144 * reset:リセ?ボタンを作?します? 145 * button:押し?タンを作?します? 146 * 147 * @param type ボタンのタイプ[submit/reset/button] 148 */ 149 public void setType( final String type ) { 150 String tp = getRequestParameter( type ); 151 if( check( "|" + tp + "|" , CHECK_TYPE ) ) { 152 set( "type",tp ); 153 } 154 else { 155 String errMsg = "type は、下記??より?してください。type=[" 156 + tp + "] in [" + CHECK_TYPE + "]"; 157 throw new HybsSystemException( errMsg ); 158 } 159 } 160 161 /** 162 * 【HTML】?タンの名称を指定します? 163 * 164 * @og.tag 165 * @param name ボタンの名称 166 */ 167 public void setName( final String name ) { 168 set( "name",getRequestParameter( name ) ); 169 } 170 171 /** 172 * 【HTML】?タンの値を指定します? 173 * 174 * @og.tag 175 * @param value ボタンの値 176 */ 177 public void setValue( final String value ) { 178 set( "value",getRequestParameter( value ) ); 179 } 180 181 /** 182 * こ?オブジェクト???表現を返します? 183 * 基本???目?使用します? 184 * 185 * @return こ?クラスの??表現 186 */ 187 @Override 188 public String toString() { 189 return org.opengion.fukurou.util.ToString.title( this.getClass().getName() ) 190 .println( "VERSION" ,VERSION ) 191 .println( "Other..." ,getAttributes().getAttribute() ) 192 .fixForm().toString() ; 193 194 } 195 }