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 static org.opengion.fukurou.util.StringUtil.nval ; 022 023 /** 024 * ラジオボタンで表示?Order By 句)を指定するタグです? 025 * 026 * name 属?値は?"ORDER_BY" 固定です? 027 * columns 属?は、カンマ区?のカラ??を設定します? 028 * ロケールは、ユーザー??の lang 属?を?期?で使用し? セ?されて???合?? 029 * リクエスト情報のロケールから取得します? 030 * 031 * @og.formSample 032 * ●形式?lt;og:orderBy columns="…" /> 033 * ●body?な? 034 * 035 * ●Tag定義?? 036 * <og:orderBy 037 * columns ○?TAG】表示?象のカラ?CSV形式で??します?(??) 038 * checked 【TAG】?めからチェ?された状?checked)で表示しま? 039 * lbls 【TAG】ラベルをCSV形式で??しま? 040 * checkedValue 【TAG】?めからチェ?された状態にする値を指定しま? 041 * caseKey 【TAG】このタグ自体を利用するかど?の条件キーを指定しま?初期値:null) 042 * caseVal 【TAG】このタグ自体を利用するかど?の条件値を指定しま?初期値:null) 043 * debug 【TAG】デバッグ??を?力するかど?[true/false]を指定しま?初期値:false) 044 * /> 045 * 046 * ●使用? 047 * <og:orderBy columns="PN,YOBI" checked="checked" /> 048 * <og:orderBy columns="YOBI,PN" /> 049 * <og:orderBy columns="MKNM,YOBI" /> 050 * 051 * @og.rev 3.1.4.0 (2003/04/18) 継承?、CommonTagSupport に変更? 052 * @og.group 画面部? 053 * 054 * @version 4.0 055 * @author Kazuhiko Hasegawa 056 * @since JDK5.0, 057 */ 058 public class OrderByTag extends CommonTagSupport { 059 //* こ?プログラ??VERSION??を設定します? {@value} */ 060 private static final String VERSION = "5.2.2.0 (2010/11/01)" ; 061 062 private static final long serialVersionUID = 522020101101L ; 063 064 private String columns = null; 065 private String labels = null; 066 private String checked = null; 067 private String checkedValue = null; 068 069 /** 070 * Taglibの終?グが見つかったときに処??doEndTag() ?オーバ?ライドします? 071 * 072 * @og.rev 3.1.4.1 (2003/04/21) HTMLTagSupport の継承を?した為、doEndTag() を追?? 073 * @og.rev 5.2.2.0 (2010/11/01) caseKey 、caseVal 属?対? 074 * 075 * @return 後続???? 076 */ 077 @Override 078 public int doEndTag() { 079 debugPrint(); // 4.0.0 (2005/02/28) 080 // 5.2.2.0 (2010/11/01) caseKey 、caseVal 属?対? 081 if( useTag() ) { 082 jspPrint( makeTag() ); 083 } 084 return(EVAL_PAGE); 085 } 086 087 /** 088 * タグリブオブジェクトをリリースします? 089 * キャ?ュされて再利用される?で、フィールド?初期設定を行います? 090 * 091 * @og.rev 2.0.0.4 (2002/09/27) カスタ?グの release() メソ?を?追? 092 * @og.rev 3.1.1.2 (2003/04/04) Tomcat4.1 対応?release2() ?doEndTag()で呼ぶ? 093 * 094 */ 095 @Override 096 protected void release2() { 097 super.release2(); 098 columns = null; 099 labels = null; 100 checked = null; 101 checkedValue = null; 102 } 103 104 /** 105 * 検索条件の入力用の?ストフィールドを作?します? 106 * 107 * ??ブルタグによりフィールド??されます? 108 * 使用時?、テーブルタグを前後に使用して下さ?? 109 * 110 * @og.rev 3.1.1.0 (2003/03/28) radio ボタン等で、ラベルをクリ?しても?をセ?できるようにする? 111 * 112 * @return 入力用の?ストフィールドタグ 113 */ 114 protected String makeTag() { 115 set( "type","radio" ); 116 set( "name","ORDER_BY" ); 117 set( "value",columns ); 118 if( labels == null ) { setLbls( columns ); } 119 String lbls = getMsglbl(); 120 121 if( checkedValue != null && checkedValue.length() > 0 ) { 122 if( checkedValue.equals( columns ) ) { 123 set( "checked","checked" ); 124 } 125 } 126 else { 127 set( "checked",checked ); 128 } 129 130 if( get( "id" ) == null ) { set( "id",TaglibUtil.getTagId() ); } 131 132 StringBuilder rtn = new StringBuilder( HybsSystem.BUFFER_MIDDLE ); 133 134 rtn.append( "<td>" ); 135 rtn.append( XHTMLTag.input( getAttributes() ) ); 136 rtn.append( "</td>" ); 137 rtn.append( "<td>" ); 138 rtn.append( "<label for=\"" ); 139 rtn.append( get( "id" ) ); 140 rtn.append( "\">" ); 141 rtn.append( lbls ); 142 rtn.append( "</label>" ); 143 rtn.append( "</td>" ); 144 145 return rtn.toString() ; 146 } 147 148 /** 149 * 【TAG】表示?象のカラ?CSV形式で??します? 150 * 151 * @og.tag 表示?象のカラ??します? 152 * 153 * @param columns カラ?CSV形? 154 */ 155 public void setColumns( final String columns ) { 156 this.columns = getRequestParameter( columns ); 157 } 158 159 /** 160 * 【TAG】?めからチェ?された状?checked)で表示します? 161 * 162 * @og.tag 163 * check 値?"checked" の場合?み、実行されます? 164 * 165 * @param ch "checked" 値 166 */ 167 public void setChecked( final String ch ) { 168 checked = getRequestParameter( ch ); 169 if( "checked".equals( checked )) { 170 checked = "checked"; 171 } 172 else { 173 checked = null; 174 } 175 } 176 177 /** 178 * 【TAG】?めからチェ?された状態にする値を指定します? 179 * 180 * @og.tag 181 * チェ?バリューが?自??身のカラ?と同じであれば、チェ?がつきます? 182 * 通常、checkedValue = "{@ORDER_BY}" で、?動的にチェ?されます? 183 * 184 * @param ch チェ?された状態にする値 185 */ 186 public void setCheckedValue( final String ch ) { 187 checkedValue = nval( getRequestParameter( ch ),checkedValue ); 188 } 189 190 /** 191 * 【TAG】ラベルをCSV形式で??します? 192 * 193 * @og.tag 194 * ラベル(?)を変更するときに、lbls属?を使?す? 195 * 196 * シングルラベルの lbl 属?との違いは,ここではラベルを? カンマ区?で 197 * 渡すことが可能であることです?これにより?A,B,C" と?値に対して? 198 * "Aのラベル表示,Bのラベル表示,Cのラベル表示" と?具合に??? 199 * 再合成します? 200 * これは、SQL??Order By 句で、ソート?を指定する?合などに便利です? 201 * 202 * @og.rev 3.5.6.2 (2004/07/05) 先に配?に?してからリクエスト変数の値を取? 203 * @og.rev 5.2.2.0 (2010/11/01) setMsglbl ? ?setLbl に置換え 204 * 205 * @param lbls ?ラベルID(カンマ区?) 206 */ 207 public void setLbls( final String lbls ) { 208 labels = getRequestParameter( lbls ) ; 209 210 String[] array = getCSVParameter( lbls ); 211 212 StringBuilder buf = new StringBuilder( HybsSystem.BUFFER_MIDDLE ); 213 buf.append( getLabel( array[0] ) ); 214 for( int i=1; i<array.length; i++ ) { 215 buf.append( "," ); 216 buf.append( getLabel( array[i] ) ); 217 } 218 // setMsglbl( buf.toString() ); 219 setLbl( buf.toString() ); // 5.2.2.0 (2010/11/01) setMsglbl ? ?setLbl に置換え 220 } 221 222 /** 223 * こ?オブジェクト???表現を返します? 224 * 基本???目?使用します? 225 * 226 * @return こ?クラスの??表現 227 */ 228 @Override 229 public String toString() { 230 return org.opengion.fukurou.util.ToString.title( this.getClass().getName() ) 231 .println( "VERSION" ,VERSION ) 232 .println( "columns" ,columns ) 233 .println( "labels" ,labels ) 234 .println( "checked" ,checked ) 235 .println( "checkedValue" ,checkedValue ) 236 .println( "Other..." ,getAttributes().getAttribute() ) 237 .fixForm().toString() ; 238 } 239 }