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.HybsSystem;
019 import org.opengion.fukurou.util.XHTMLTag;
020
021 import org.opengion.fukurou.util.StringUtil;
022
023 /**
024 * 【?力??行?入力が可能な?スト?力フィールドを作?するHTML拡張タグです?
025 *
026 * name 属?に ラベルリソース のキーを与えることで?ロケールにあわせたリソースを使用して?
027 * 画面に表示します?
028 * ロケールは、ユーザー??の lang 属?を?期?で使用し? セ?されて???合??
029 * リクエスト情報のロケールから取得します?
030 * ラベル部?入力フィールド部???ブルタグの <td> により左右に?されます?
031 * HTML 表示時?、前後に<tr>タグで囲って?整形できます?
032 *
033 * @og.formSample
034 * ●形式?lt;og:queryOption >
035 * SELECT?
036 * </og:queryOption >
037 * ●body?あ?EVAL_BODY_BUFFERED:BODYを評価し?{@XXXX} を解析しま?
038 *
039 * ●Tag定義??
040 * <og:textarea
041 * name ○?HTML】名前を?しま???)?
042 * lbl 【TAG】ラベルリソースのラベルIDを指定しま?
043 * rows 【HTML】高さ(行数)を指定しま?
044 * cols 【HTML】横?カラ?)を指定しま?
045 * must 【TAG】??入力を表す色に変えるかど?[true/false]を指定しま?初期値:false)
046 * mustAny 【TAG】選択??入?どれかひとつ??)を表す色[true/mustAny/そ?他]を指定しま?初期値:無??
047 * id 【HTML】要?対して固有?名前(id)をつける場合に設定しま?
048 * lang 【HTML】要???と他?属?値の??lang,xml:lang)を指定しま?
049 * dir 【HTML】文字表記?方?dir)を指定しま?
050 * title 【HTML】要?対する補足?報(title)を設定しま?
051 * style 【HTML】この要?対して適用させるスタイルシー?style)を設定しま?
052 * readonly 【TAG】その部品に対して変更が?来な??(readonly)?しま?サーバ?に送信され?
053 * disabled 【TAG】その部品に対して?択や変更が?来な??(disabled)?しま?サーバ?に送信されな?
054 * tabindex 【HTML】タブ?移動?(tabindex)を指定しま?0 ??32767)
055 * accesskey 【HTML】アクセスキー(alt+キーで直接??を割り当てま?
056 * clazz 【HTML】要?対して class 属?を設定しま?
057 * language 【TAG】タグ?で使用する?コード[ja/en/zh/…]を指定しま?
058 * onClick 【HTML】JavaScriptのイベン?onClick を設定しま??onClick="renew('query.jsp','QUERY');")
059 * onBlur 【HTML】JavaScriptのイベン?onBlur を設定しま??onBlur="this.value=value.toUpperCase();")
060 * onFocus 【HTML】JavaScriptのイベン?onFocus を設定しま?
061 * ondblClick 【HTML】JavaScriptのイベン?ondblClick を設定しま?
062 * onMouseDown 【HTML】JavaScriptのイベン?onMouseDown を設定しま?
063 * onMouseUp 【HTML】JavaScriptのイベン?onMouseUp を設定しま?
064 * onMouseMove 【HTML】JavaScriptのイベン?onMouseMove を設定しま?
065 * onMouseOut 【HTML】JavaScriptのイベン?onMouseOut を設定しま?
066 * onMouseOver 【HTML】JavaScriptのイベン?onMouseOver を設定しま?
067 * onSelect 【HTML】JavaScriptのイベン?onSelect を設定しま?
068 * onKeydown 【HTML】JavaScriptのイベン?onKeydown を設定しま?
069 * onKeypress 【HTML】JavaScriptのイベン?onKeypress を設定しま?
070 * onKeyup 【HTML】JavaScriptのイベン?onKeyup を設定しま?
071 * autofocus 【HTML5】指定した?力?カーソルが当たって自動的にフォーカスされます?
072 * placeholder 【HTML5】?力?初期表示する?を指定します?
073 * required 【HTML5】?力??を指定しま?
074 * roles 【TAG】ロールをセ?しま?
075 * debug 【TAG】デバッグ??を?力するかど?[true/false]を指定しま?初期値:false)
076 * > ... Body ...
077 * </og:textarea>
078 *
079 * ●使用?
080 * <og:textarea name="BUN" />
081 *
082 * <og:textarea name="BUN"> 初期値に値をセ?した??
083 * test
084 * </og:textarea name="BUN">
085 *
086 * @og.group 画面部?
087 *
088 * @version 4.0
089 * @author Kazuhiko Hasegawa
090 * @since JDK5.0,
091 */
092 public class TextareaTag extends HTMLTagSupport {
093 //* こ?プログラ??VERSION??を設定します? {@value} */
094 private static final String VERSION = "5.2.1.0 (2010/10/01)" ;
095
096 private static final long serialVersionUID = 521020101001L ;
097
098 /**
099 * Taglibの開始タグが見つかったときに処??doStartTag() ?オーバ?ライドします?
100 *
101 * @return 後続????( EVAL_BODY_BUFFERED )
102 */
103 @Override
104 public int doStartTag() {
105 return( EVAL_BODY_BUFFERED ); // Body を評価する? extends BodyTagSupport ?
106 }
107
108 /**
109 * Taglibのタグ本体を処??doAfterBody() ?オーバ?ライドします?
110 *
111 * @og.rev 3.1.1.0 (2003/03/28) ボディの?を取得する??、CommonTagSupport で行う?
112 * @og.rev 3.1.1.0 (2003/03/28) body 属?に?{@XXXX} パ?ス機?を付加する?
113 *
114 * @return 後続????(SKIP_BODY)
115 */
116 @Override
117 public int doAfterBody() {
118 String str = getBodyString();
119
120 if( str != null && str.length() > 0 ) {
121 String label = StringUtil.htmlFilter( str );
122 if( label != null && label.length() > 0 ) {
123 set( "body",label );
124 }
125 }
126
127 return(SKIP_BODY);
128 }
129
130 /**
131 * 検索条件の入力用の?ストフィールドを作?します?
132 *
133 * ??ブルタグによりフィールド??されます?
134 * 使用時?、テーブルタグを前後に使用して下さ??
135 *
136 * @og.rev 4.3.7.1 (2009/06/08) id=labelのclass?
137 * @og.rev 5.2.1.0 (2010/10/01) must , mustAny 属?を?動化します?
138 *
139 * @return 入力用の?ストフィールドタグ
140 */
141 @Override
142 protected String makeTag() {
143 StringBuilder rtn = new StringBuilder( HybsSystem.BUFFER_MIDDLE );
144 if( getMsglbl() == null ) { setLbl( get( "name" ) ); }
145
146 // 4.3.7.1 (2009/06/08) id=labelのclass?
147 // rtn.append( "<td id=\"label\">" );
148 rtn.append( "<td class=\"label\">" );
149 rtn.append( getLongLabel() ); // 4.0.0 (2005/01/31)
150 rtn.append( "</td>" );
151 rtn.append( "<td>" );
152 rtn.append( XHTMLTag.textarea( getAttributes() ) );
153 rtn.append( "</td>" );
154
155 // 5.2.1.0 (2010/10/01) must , mustAny 属?を?動化します?
156 if( getMustType() != null ) { rtn.append( makeMustHidden( get( "name" ) ) ); }
157
158 return rtn.toString() ;
159 }
160
161 /**
162 * 【HTML】名前を?します?
163 *
164 * @og.tag 名前を指定します?
165 *
166 * @param name 名前
167 */
168 public void setName( final String name ) {
169 set( "name",getRequestParameter( name ) );
170 }
171
172 /**
173 * 【HTML】高さ(行数)を指定します?
174 *
175 * @og.tag 高さ(行数)を指定します?
176 *
177 * @param rows 高さ(行数)
178 */
179 public void setRows( final String rows ) {
180 set( "rows",getRequestParameter( rows ) );
181 }
182
183 /**
184 * 【HTML】横?カラ?)を指定します?
185 *
186 * @og.tag 横??します?
187 *
188 * @param cols 横?カラ?)
189 */
190 public void setCols( final String cols ) {
191 set( "cols",getRequestParameter( cols ) );
192 }
193 }