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 }