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 static org.opengion.fukurou.util.StringUtil.nval; 019 020 import org.opengion.fukurou.util.Attributes; 021 import org.opengion.fukurou.util.XHTMLTag; 022 import org.opengion.hayabusa.common.HybsSystem; 023 import org.opengion.hayabusa.db.DBColumn; 024 import org.opengion.hayabusa.db.DBEditConfig; 025 026 /** 027 * query.jsp での検索ボタンを表示します? 028 * 検索ボタン以外に、pageSize、maxRowCount、prevNext、timeView などの 029 * ?も表示可能です? 030 * また?BODY部に登録した値は、table 要?して、td 部に追記されます? 031 * 032 * @og.formSample 033 * ●形式?lt;og:queryButton /> 034 * ●body?あ?EVAL_BODY_BUFFERED:BODYを評価し?{@XXXX} を解析しま? 035 * 036 * ●Tag定義?? 037 * <og:queryButton 038 * command 【TAG】リクエストとして送信するコマンドを?しま?初期値:NEW) 039 * pageSize 【TAG】pageSize プル?ンメニューの初期値を指定しま?(初期値:HTML_PAGESIZE[=100]) 040 * maxRowCount 【TAG】maxRowCount プル?ンメニューの初期値を指定しま?(初期値:DB_MAX_ROW_COUNT[=1000]) 041 * useCrear 【TAG】JavaScriptによる初期化?タンを使用するかど?[true/false]を指定しま?初期値:true) 042 * type 【TAG】?型的なボタンの形状に設定しま?初期値:null) 043 * scope 【TAG】リクエストとして送信するスコープを?しま?初期値:null) 044 * lbl 【TAG】ラベルリソースのラベルIDを指定しま? 045 * accesskey 【TAG】検索ボタンに使用するショートカ?キー?を?しま?初期値:F) 046 * usePrevNext 【TAG】??戻る?prev_next リンクを表示するかど?を指定しま?初期値:true) 047 * usePageSize 【TAG】pageSize 引数を使用するかど?を指定しま?初期値:true) 048 * useRowCount 【TAG】maxRowCount 引数を使用するかど?を指定しま?初期値:true) 049 * useTimeView 【TAG】??間を表示する TimeView を表示するかど?を指定しま?初期値:true) 050 * clearAccesskey 【TAG】クリアボタンに使用するショートカ?キー?を?しま?初期値:C) 051 * useDummy 【TAG】IE用?ーinputを?力するかど? 052 * useEditMenu 【TAG】編??ル?ンを?すかど?(初期値:true) 053 * title 【HTML】要?対する補足?報(title)を設定しま? 054 * style 【HTML】この要?対して適用させるスタイルシー?style)を設定しま? 055 * disabled 【HTML】その部品に対して?択や変更が?来な??(disabled)?しま?サーバ?に送信されな? 056 * tabindex 【HTML】タブ?移動?(tabindex)を指定しま?0 ??32767) 057 * clazz 【HTML】要?対して class 属?を設定しま? 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 * autofocus 【HTML5】指定した?力?カーソルが当たって自動的にフォーカスされます? 068 * debug 【TAG】デバッグ??を?力するかど?[true/false]を指定しま?初期値:false) 069 * > ... Body ... 070 * </og:queryButton> 071 * 072 * ●使用? 073 * <og:queryButton 074 * command = "NEW" NEW:通常の検索(初期値)?ENTRY:エントリ登録? 075 * type = "ENTRY" null:標?, SELECT:検索ボタンのみ , ENTRY:登録ボタンのみ 076 * pageSize = "100" pageSize の初期値設?初期値:HTML_PAGESIZE) 077 * maxRowCount = "100" maxRowCount の初期値設?初期値:DB_MAX_ROW_COUNT) 078 * useCrear = "true" true:JavaScriptによる初期化/false:通常のresetボタン 079 * scope = "request" null(初期値)?session:セ?ョン登録?request:リクエスト登録 080 * lbl = "MSG0010" 検索ボタンに表示するメ?ージID(初期値:MSG0010) 081 * accesskey = "F" ショートカ?キー??初期値:F) 082 * usePrevNext = "true" Prev-Nextリンクを使用するかど?(初期値:true) 083 * usePageSize = "true" pageSize 引数を使用するかど?(初期値:true) 084 * useRowCount = "true" maxRowCount 引数を使用するかど?(初期値:true) 085 * useTimeView = "true" timeView表示(実行時間表示)を使用するかど?(初期値:true) 086 * useEditMenu = "true" 編??ル?ンを?すかど?(初期値:true) 087 * /> 088 * 089 * 標準的な検索ボタン 090 * <og:queryButton /> 091 * 092 * 標準的な登録ボタン(command="NEW" で、query.jsp で使用するボタン) 093 * <og:queryButton type="ENTRY" /> 094 * 095 * BODY 部に追??表示 096 * <og:queryButton > 097 * <td><jsp:directive.include file="/jsp/common/timeViewImage.jsp" /></td> 098 * </og:queryButton > 099 * 100 * @og.rev 4.0.0.0 (2005/01/31) 新規作? 101 * @og.rev 5.7.1.0 (2013/12/06) HTMLTagSupport を継承し?ボタンに付ける属?を増やします? 102 * @og.group 画面制御 103 * 104 * @version 4.0 105 * @author Kazuhiko Hasegawa 106 * @since JDK5.0, 107 */ 108 public class QueryButtonTag extends HTMLTagSupport { 109 //* こ?プログラ??VERSION??を設定します? {@value} */ 110 private static final String VERSION = "5.7.6.2 (2014/05/16)" ; 111 112 private static final long serialVersionUID = 576220140516L ; 113 114 private static final String CR = HybsSystem.CR; 115 116 private static final String COMMAND = 117 "<input type=\"hidden\" name=\"command\" value=\"NEW\" id=\"h_cmd\" />"; 118 119 private static final String JSP = HybsSystem.sys( "JSP" ); 120 121 // 4.2.1.0 (2008/04/07) TDにIDを追? 122 // 4.3.1.0 (2008/09/03) 戻る?進??タンをsubmitにより実行する? 123 private static final String PREV_NEXT = 124 "<td id=\"prev-next\"><a href=\"forward.jsp?command=FIRST\" target=\"RESULT\" >" + CR + 125 " <img src=\"" + JSP + "/image/FIRST.gif\" alt=\"FIRST\" border=\"0px\" " + CR + 126 " onclick=\"return submitPrevNextForm('FIRST');\"/>" + CR + 127 "</a>" + CR + 128 "<a href=\"forward.jsp?command=PREV\" target=\"RESULT\" >" + CR + 129 " <img src=\"" + JSP + "/image/PREV.gif\" alt=\"PREV\" border=\"0px\" " + CR + 130 " onclick=\"return submitPrevNextForm('PREV');\"/>" + CR + 131 "</a>" + CR + 132 "<a href=\"forward.jsp?command=NEXT\" target=\"RESULT\" >" + CR + 133 " <img src=\"" + JSP + "/image/NEXT.gif\" alt=\"NEXT\" border=\"0px\" " + CR + 134 " onclick=\"return submitPrevNextForm('NEXT');\"/>" + CR + 135 "</a>" + CR + 136 "<a href=\"forward.jsp?command=LAST\" target=\"RESULT\" >" + CR + 137 " <img src=\"" + JSP + "/image/LAST.gif\" alt=\"LAST\" border=\"0px\" " + CR + 138 " onclick=\"return submitPrevNextForm('LAST');\"/>" + CR + 139 "</a></td>" + CR ; 140 141 private static final String TIME_VIEW = // 4.2.1.0 (2008/04/07) 直接色?を?る? 142 "<td><table cellspacing=\"0\" cellpadding=\"0\">" + CR + 143 "<tr>" + CR + 144 "<td width=\"20px\"> </td>" + CR + 145 "<td width=\"0px\" id=\"queryTbl\" title=\"\" ></td>" + CR + // #ff0000 146 "<td width=\"0px\" id=\"viewTbl\" title=\"\" ></td>" + CR + // #0000ff 147 "<td width=\"0px\" id=\"pageTbl\" title=\"\" ></td>" + CR + // #00ff00 148 "<td width=\"10px\"></td>" + CR + 149 "<td style=\"background-color:transparent;\" id=\"totalTbl\"></td>" + CR + 150 "</tr>" + CR + 151 "</table></td>" + CR ; 152 153 // 4.3.6.0 (2009/04/01) 件数を?タンで開閉させ? 154 private static final String COUNT_SWITCH= 155 "<td>" + 156 " <img id=\"queryHide\" src=\"" + JSP + "/image/expand_r.png\" alt=\"pageSize\" border=\"0px\" "+ // 5.5.3.2 (2012/06/08) 157 " onClick=\"hideClass( event, this, 'hide', 'expand_r', 'shrink_r' )\"> " + CR + 158 "</td>"; 159 160 // 5.6.1.0 (2013/02/01) display:noneの?ー出? 161 private static final String DUMMY_INPUT = "HYBS_DUMMY_NPUT"; 162 163 // 5.7.6.2 (2014/05/16) IEのHTML5機?が有効か無効か?判定?を飛?す?hidden タグを作?します? 164 // 判定方法?、HTML5で新規追?れた canvas タグが?有効かど?(?メソ?の戻り?があるかど?)で判定します? 165 private static final String IE_HTML5_CHECK = 166 "<script type=\"text/javascript\">" + CR 167 + " (function($){" + CR 168 + " var test = document.createElement('canvas');" + CR 169 + " $.support.canvas = !(!test || !test.getContext);" + CR 170 + " })(jQuery);" + CR 171 + " $('<input/>').attr('type','hidden').attr('name','" 172 + HybsSystem.IE_HTML5_KEY 173 + "').val( $.support.canvas ).appendTo('form');" + CR 174 + "</script>" + CR ; 175 176 private String command = "NEW"; 177 private String pageSize = null; 178 private String maxRowCount = null; 179 private String accesskey = "F"; 180 private boolean useCrear = true; 181 private String type = null; // null:標?, SELECT:検索ボタンのみ , ENTRY:登録ボタンのみ 182 private String scope = null; 183 private boolean usePrevNext = true; 184 private boolean usePageSize = true; 185 private boolean useRowCount = true; 186 private boolean useTimeView = true; 187 private String body = null; 188 private String clearAcskey = "C"; 189 private boolean useDummy = HybsSystem.sysBool( "USE_DUMMY_INPUT" ); // 5.6.1.0 (2013/02/01) 190 private boolean useEditMenu = true; // 5.7.5.0 (2014/04/04) 編??ル?ンを?すかど?(初期値:true)? 191 192 /** 193 * Taglibの開始タグが見つかったときに処??doStartTag() ?オーバ?ライドします? 194 * 195 * @return 後続????( EVAL_BODY_BUFFERED ) 196 */ 197 @Override 198 public int doStartTag() { 199 return EVAL_BODY_BUFFERED ; // Body を評価する? extends BodyTagSupport ? 200 } 201 202 /** 203 * Taglibのタグ本体を処??doAfterBody() ?オーバ?ライドします? 204 * 205 * @og.rev 2.2.0.0 (2002/12/17) 中国?国際化)対?エンコード?取得方法変更 206 * @og.rev 3.0.0.0 (2002/12/25) StringUtil#changeString ? 207 * @og.rev 3.1.1.0 (2003/03/28) ボディの?を取得する??、CommonTagSupport で行う? 208 * 209 * @return 後続????(SKIP_BODY) 210 */ 211 @Override 212 public int doAfterBody() { 213 body = nval( getBodyString(),body ); 214 215 return SKIP_BODY ; 216 } 217 218 /** 219 * Taglibの終?グが見つかったときに処??doEndTag() ?オーバ?ライドします? 220 * 221 * @og.rev 5.3.6.0 (2011/06/01) ??合計などのEdit機?に対応します? 222 * @og.rev 5.6.5.1 (2013/06/14) debugプル?ンの追??つ?に、PageSize と MaxRowCount の 表示条件を?整備します? 223 * @og.rev 5.6.9.4 (2013/10/31) editNameの初期値を外部から与えられるよ?する 224 * @og.rev 5.7.1.0 (2013/12/06) HTMLTagSupportを継承する為、メソ?を?getSubmit() ?makeTag() に変更 225 * @og.rev 5.7.1.2 (2013/12/20) USE_DEFAULT_EDITNAMEでeditNameの初期値変更 226 * @og.rev 5.7.5.0 (2014/04/04) useEditMenu 追? 227 * @og.rev 5.7.6.2 (2014/05/16) IEのHTML5機?が有効か無効か?判定?を飛?す?hidden タグを作?します? 228 * 229 * @return 後続???? 230 */ 231 @Override 232 public int doEndTag() { 233 debugPrint(); // 4.0.0 (2005/02/28) 234 StringBuilder buf = new StringBuilder( HybsSystem.BUFFER_MIDDLE ); 235 236 buf.append( getHiddenScope() ).append( CR ); 237 238 buf.append( "<table border=\"0\" frame=\"border\" summary=\"submit\" ><tr>" ); 239 buf.append( CR ); 240 buf.append( "<td>" ).append( makeTag() ).append( "</td>" ).append( CR ); // 5.7.1.0 (2013/12/06) 241 buf.append( "<td>" ).append( getReset() ).append( "</td>" ).append( CR ); 242 buf.append( "<td>" ).append( getCommand() ).append( "</td>" ).append( CR ); 243 buf.append( "<td>" ).append( getGamenId() ).append( "</td>" ).append( CR ); 244 if( usePrevNext ) { buf.append( PREV_NEXT ).append( CR ); } 245 buf.append( "<td>" ).append( "<span id=\"query-button-append\"></span>").append( "</td>" ).append( CR ); //4 3.6.0 (2009/04/01) 246 // if( usePageSize ) { buf.append( getPageSize() ).append( CR ); } 247 // if( useRowCount ) { buf.append( getMaxRowCount()).append( CR ); } 248 if( body != null ) { 249 buf.append( "<td>" ).append( body ).append( "</td>" ).append( CR ); 250 } 251 252 // 5.7.5.0 (2014/04/04) useEditMenu 追??trueで、編??ル?ンを?力します? 253 if( useEditMenu ) { 254 // 5.3.6.0 (2011/06/01) ??合計などのEdit機?に対応します? 255 String guikey = getGUIInfoAttri( "KEY" ); 256 DBEditConfig[] configs = getUser().getEditConfigs( guikey ); 257 if( configs != null && configs.length > 0 ) { 258 // String selEditName = getUser().getSelectedEdit( getGUIInfoAttri( "KEY" ) ); 259 // String selEditName = nval( getRequestValue( "editName" ) , getUser().getSelectedEdit( getGUIInfoAttri( "KEY" ) )); // 5.6.9.4 (2013/10/31) 260 String selEditName ; // 5.7.1.2 (2013/12/20) 261 if( "FALSE".equalsIgnoreCase( sys( "USE_DEFAULT_EDITNAME" ) ) ){ 262 selEditName = getRequestValue( "editName" ); 263 } 264 else{ 265 selEditName = nval( getRequestValue( "editName" ) , getUser().getSelectedEdit( getGUIInfoAttri( "KEY" ) )); // 5.6.9.4 (2013/10/31) 266 267 } 268 buf.append( getEditSelect( configs, selEditName ) ).append( CR ); 269 } 270 } 271 272 // 5.6.5.1 (2013/06/14) debugプル?ンの追??つ?に、PageSize と MaxRowCount の 表示条件を?整備します? 273 if( usePageSize || useRowCount) { 274 buf.append( COUNT_SWITCH ).append( CR ); 275 if( usePageSize ) { buf.append( getPageSize() ).append( CR ); } 276 if( useRowCount ) { buf.append( getMaxRowCount()).append( CR ); } 277 // ??は、ユーザーのロールが?root の場合?み表示するようにします? 278 if( "root".equalsIgnoreCase( getUser().getRoles() ) ) { 279 buf.append( getDebugClm() ).append( CR ); // 5.6.5.1 (2013/06/14) debugプル?ンの追? 280 } 281 } 282 283 if( useTimeView ) { buf.append( TIME_VIEW ).append( CR ); } 284 285 buf.append( "</tr></table>" ).append( CR ); 286 287 // 5.7.6.2 (2014/05/16) IEのHTML5機?が有効か無効か?判定?を飛?す?hidden タグを作?します? 288 // IE_HTML5_KEY をキーとする設定?がなければ、ま?設定なので、hidden タグを作?します? 289 if( getSessionAttribute( HybsSystem.IE_HTML5_KEY ) == null ) { 290 buf.append( IE_HTML5_CHECK ); 291 } 292 293 jspPrint( buf.toString() ); 294 if( useDummy ){ jspPrint( getDummyInput() ); }// 5.6.1.0 (2013/02/01) 295 return EVAL_PAGE ; // ペ?ジの残りを評価する? 296 } 297 298 /** 299 * タグリブオブジェクトをリリースします? 300 * キャ?ュされて再利用される?で、フィールド?初期設定を行います? 301 * 302 * @og.rev 5.6.1.0 (2013/02/01) useDummy 追? 303 * @og.rev 5.7.5.0 (2014/04/04) useEditMenu 追? 304 */ 305 @Override 306 protected void release2() { 307 super.release2(); 308 command = "NEW"; 309 pageSize = null; 310 maxRowCount = null; 311 accesskey = "F"; 312 useCrear = true; 313 type = null; 314 scope = null; 315 usePrevNext = true; 316 usePageSize = true; 317 useRowCount = true; 318 useTimeView = true; 319 clearAcskey = "C"; // 5.3.5.0 (2011/05/01) クリアボタンアクセスキー対? 320 useDummy = HybsSystem.sysBool( "USE_DUMMY_INPUT" ); // 5.6.1.0 (2013/02/01) 321 useEditMenu = true; // 5.7.5.0 (2014/04/04) 編??ル?ンを?すかど?(初期値:true)? 322 } 323 324 /** 325 * サブミ?ボタンを作?します? 326 * 327 * @og.rev 5.3.6.0 (2011/06/01) accessKeyを削除できるように対? 328 * @og.rev 5.5.7.1 (2012/10/05) 不要な括弧出力を削除 329 * @og.rev 5.6.9.3 (2013/10/25) IDを?力す? 330 * @og.rev 5.7.1.0 (2013/12/06) HTMLTagSupportを継承する為、メソ?を?getSubmit() ?makeTag() に変更 331 * 332 * @return サブミ?ボタン 333 */ 334 @Override 335 protected String makeTag() { 336 String msglbl = getLongLabel(); // 4.0.0 (2005/01/31) 337 if( msglbl == null ) { 338 if( "ENTRY".equalsIgnoreCase( type ) ) { 339 msglbl = getLabel( "ENTRY" ); 340 } 341 else { 342 msglbl = getLabel( "QUERY" ); 343 } 344 } 345 346 // 5.7.1.0 (2013/12/06) XHTMLTag を使用することで、各種属?を追?きるようにします? 347 if( accesskey != null ) { 348 set( "accesskey" , accesskey ); 349 msglbl = msglbl + "(" + accesskey + ")" ; 350 } 351 352 set( "type" , "submit" ); 353 set( "id" , "queryButtonSubmit" ); 354 set( "body" , msglbl ); 355 356 return XHTMLTag.button( getAttributes() ); 357 } 358 359 /** 360 * リセ?ボタンを作?します? 361 * 362 * @og.rev 4.0.0.0 (2007/10/18) メ?ージリソース統? getResource().getMessage ?getResource().getLabel ) 363 * @og.rev 5.0.2.0 (2009/11/01) 戻る?タンが?力されて?状態で、クリアボタンを押すと、戻る?タンが消える不?合を修正 364 * @og.rev 5.3.5.0 (2011/05/01) クリアボタンにもアクセスキーが付加できるように対? 365 * @og.rev 5.3.6.0 (2011/06/01) accessKeyを削除できるように対? 366 * 367 * @return リセ?ボタン 368 */ 369 private String getReset() { 370 final String rtn ; 371 372 if( useCrear ) { 373 rtn = "<button onClick=\"window.open('" + JSP + "/" + getGUIInfoAttri("ADDRESS") + 374 "/query.jsp?GAMENID=" + getGUIInfoAttri("KEY") + "&command=NEW','QUERY')\" " + 375 ( clearAcskey == null ? "" : "accesskey=\"" + clearAcskey + "\"" ) + 376 ">" + 377 getResource().getLabel( "MSG0011" ) + 378 ( clearAcskey == null ? "" : "(" + clearAcskey + ")" ) + 379 "</button>" ; 380 } 381 else { 382 rtn = "<button type=\"reset\" " + 383 ( clearAcskey == null ? "" : "accesskey=\"" + clearAcskey + "\"" ) + 384 ">" + 385 getResource().getLabel( "MSG0011" ) + 386 ( clearAcskey == null ? "" : "(" + clearAcskey + ")" ) + 387 "</button>" ; 388 } 389 390 return rtn; 391 } 392 393 /** 394 * コマンドを出力す?hidden を作?します? 395 * 396 * @return コマンドを出力す?hidden 397 */ 398 private String getCommand() { 399 final String rtn ; 400 401 if( "NEW".equals( command ) ) { 402 rtn = COMMAND; 403 } 404 else { 405 rtn = "<input type=\"hidden\" name=\"command\" value=\"" + 406 command + "\" id=\"h_cmd\" />" ; 407 } 408 409 return rtn; 410 } 411 412 /** 413 * スコープを出力す?hidden を作?します? 414 * 415 * @return スコープを出力す?hidden 416 */ 417 private String getHiddenScope() { 418 String rtn = ""; 419 420 if( scope != null ) { 421 rtn = "<input type=\"hidden\" name=\"scope\" value=\"" + 422 scope + "\" />" ; 423 } 424 425 return rtn; 426 } 427 428 /** 429 * 画面IDを?力す?hidden を作?します? 430 * 431 * @return 画面IDを?力す?hidden 432 */ 433 private String getGamenId() { 434 String rtn = "<input type=\"hidden\" name=\"GAMENID\" value=\"" + 435 getGUIInfoAttri("KEY") + "\" />"; 436 437 return rtn; 438 } 439 440 /** 441 * ペ?ジサイズプル?ンメニューを作?します? 442 * 443 * @og.rev 4.3.6.0 (2008/04/01) idとclassの変更 444 * 445 * @return ペ?ジサイズプル?ンメニュー 446 */ 447 private String getPageSize() { 448 if( pageSize == null ) { 449 String PAGESIZE = sys( "HTML_PAGESIZE" ); 450 pageSize = nval( getRequestValue( "pageSize" ),PAGESIZE ) ; 451 } 452 453 DBColumn column = getDBColumn( "pageSize" ); 454 String tag = column.getEditorValue( pageSize ); 455 456 // return ( "<td id=\"label\">" + 457 return "<td class=\"label pageSize hide\">" // 4.3.6.0 (2008/04/01) class出? 458 + column.getLongLabel() 459 + ":</td><td class=\"pageSize hide\">" + tag + "</td>" ; 460 } 461 462 /** 463 * 検索時??検索数のプル?ンメニューを作?します? 464 * 465 * @og.rev 4.3.6.0 (2008/04/01) idとclassの変更 466 * 467 * @return ?検索数のプル?ンメニュー 468 */ 469 private String getMaxRowCount() { 470 if( maxRowCount == null ) { 471 String ROW_COUNT = sys( "DB_MAX_ROW_COUNT" ); 472 maxRowCount = nval( getRequestValue( "maxRowCount" ), ROW_COUNT ) ; 473 } 474 475 DBColumn column = getDBColumn( "maxRowCount" ); 476 String tag = column.getEditorValue( maxRowCount ); 477 478 // return ( "<td id=\"label\">" + 479 return "<td class=\"label maxRowCount hide\">" // 4.3.6.0 (2008/04/01) class出? 480 + column.getLongLabel() 481 + ":</td><td class=\"maxRowCount hide\">" + tag + "</td>" ; 482 } 483 484 /** 485 * debugプル?ンメニューを作?します? 486 * 487 * @og.rev 5.6.5.1 (2013/06/14) 新規追? 488 * 489 * @return debugプル?ンメニュー 490 */ 491 private String getDebugClm() { 492 DBColumn column = getDBColumn( "debug" ); 493 String tag = column.getEditorValue( "false" ); 494 495 return "<td class=\"label debug hide\">" 496 + column.getLongLabel() 497 + ":</td><td class=\"debug hide\">" + tag + "</td>" ; 498 } 499 500 /** 501 * エ??設定?のプル?ンメニューを作?します? 502 * 503 * @og.rev 5.3.6.0 (2011/06/01) 新規追? 504 * 505 * @param configs エ???(配?) 506 * @param selEditName 選択中のエ??? 507 * 508 * @return エ???のプル?ン 509 */ 510 private String getEditSelect( final DBEditConfig[] configs, final String selEditName ) { 511 DBColumn column = getDBColumn( "editName" ); 512 513 StringBuilder buf = new StringBuilder(); 514 buf.append( "<td class=\"label editName\">" ) 515 .append( column.getLongLabel() ) 516 .append( ":</td><td class=\"editName\">" ) 517 .append( "<select name=\"editName\">" ) 518 .append( "<option />" ); 519 for( DBEditConfig config : configs ) { 520 String name = config.getEditName(); 521 if( name != null && name.length() > 0 ) { 522 buf.append( "<option value=\"" ).append( name ).append( "\"" ); 523 if( config.isCommon() ) { 524 buf.append( " class=\"commonEdit\"" ); 525 } 526 if( name.equals( selEditName ) ) { 527 buf.append( " selected" ); 528 } 529 buf.append( ">" ).append( name ).append( "</option>" ); 530 } 531 } 532 buf.append( "</select></td>" ); 533 return buf.toString(); 534 } 535 536 /** 537 * IEのEnterボタンのための?しinput出力? 538 * 539 * ※?コール用 540 * 541 * @og.rev 5.6.1.0 (2013/02/01) 新規作? 542 * 543 * @return ?属?タグ 544 */ 545 private final String getDummyInput() { 546 547 StringBuilder strRet = new StringBuilder( HybsSystem.BUFFER_MIDDLE ); 548 Attributes attributes = new Attributes(); 549 attributes.set("name",DUMMY_INPUT); 550 attributes.set("value",null); 551 attributes.set("optionAttributes","style='display:none;'"); 552 strRet.append( XHTMLTag.input( attributes ) ); 553 554 return strRet.toString(); 555 } 556 557 /** 558 * 【TAG】リクエストとして送信するコマンドを?しま?初期値:NEW)? 559 * 560 * @og.tag 561 * NEW:通常の検索(初期値)?ENTRY:エントリ登録? 562 * 563 * @param cmd 送信するコマン? 564 */ 565 public void setCommand( final String cmd ) { 566 command = nval( getRequestParameter( cmd ),command ); 567 } 568 569 /** 570 * 【TAG】JavaScriptによる初期化?タンを使用するかど?[true/false]を指定しま?初期値:true)? 571 * 572 * @og.tag 573 * 通常の初期化?タンでは、HTMLが作?された状態に戻すだけです?例えば? 574 * 引数付きで設定された場合?そ?引数が設定されて?状態へ戻します? 575 * こ?JavaScriptによる初期化?タンの場?trueの場?は、JavaScriptにより 576 * INIT状態でもう?QUERYフレー?呼び出します?で、指定された引数? 577 * クリアされます? 578 * 初期値は、true:JavaScriptによる初期化です? 579 * 580 * @param flag [true:JavaScriptによる初期?false:通常のresetボタン] 581 */ 582 public void setUseCrear( final String flag ) { 583 useCrear = nval( getRequestParameter( flag ),useCrear ); 584 } 585 586 /** 587 * 【TAG】?型的なボタンの形状に設定しま?初期値:null)? 588 * 589 * @og.tag 590 * クエリーボタンでは、検索ボタン以外に、pageSize、maxRowCount? 591 * prevNext、timeView などの?も表示可能です? 592 * これらを、?別に設定可能ですが??常使用するタイプとして?タイプを 593 * 用意します?これは、設定状態?初期値と?ます? 594 * null :通常の検索ボタンで、フル?の?です? 595 * SELECT:?件のみ検索するようなケースで使用します? 596 * 検索ボタンとクリアボタンのみを表示します? 597 * ENTRY :?なり登録するようなケースで使用します? 598 * 登録ボタンとクリアボタンのみを表示します?(command="NEW" です?) 599 * 600 * @param tp タイプ指?null,SELECT,ENTRY) 601 */ 602 public void setType( final String tp ) { 603 type = nval( getRequestParameter( tp ),type ); 604 605 if( "SELECT".equalsIgnoreCase( type ) ) { 606 accesskey = "F"; 607 usePrevNext = false; 608 usePageSize = false; 609 useRowCount = false; 610 useTimeView = false; 611 } 612 else if( "ENTRY".equalsIgnoreCase( type ) ) { 613 accesskey = "W"; 614 usePrevNext = false; 615 usePageSize = false; 616 useRowCount = false; 617 useTimeView = false; 618 } 619 } 620 621 /** 622 * 【TAG】リクエストとして送信するスコープを?しま?初期値:null)? 623 * 624 * @og.tag 625 * リクエスト時に、付与する引数??の?の、スコープを?します? 626 * これは、検索専用画面の場合?、scope="request" にする事で、メモリの 627 * 無?確保を行わずに、検索結果を表示できます? 628 * ただし?そ?結果に対して、NEXT-PREV ??ヘッ??ソートリンクなどの 629 * 機?が使えなくなります? 630 * 通常は、何も?しな??null)で、RESULT画面の設定に任せるのが良?しょ?? 631 * 初期値は、null = session(セ?ョン登録) です? 632 * 633 * @param scp [session:セ?ョン登録/request:リクエスト登録] 634 */ 635 @Override 636 public void setScope( final String scp ) { 637 scope = nval( getRequestParameter( scp ),scope ); 638 } 639 640 /** 641 * 【TAG】検索ボタンに使用するショートカ?キー?を?しま?初期値:F)? 642 * 643 * @og.tag 644 * ボタンを?Alt-XX で実行できるようにするショートカ?キーを設定します? 645 * 標準では、検索ボタンは?F" に設定して?す?で、Alt-F となります? 646 * ゼロ??を指定すると、ショートカ?キーなしに設定できます? 647 * 初期値は、Find の "F" です? 648 * 649 * @og.rev 5.3.6.0 (2011/06/01) accessKeyを削除できるように対? 650 * @og.rev 5.6.0.3 (2012/01/24) getRequestParameter を何度も呼んで?ので修正? 651 * 652 * @param accsKey ショートカ?キー??初期値:F) 653 */ 654 @Override 655 public void setAccesskey( final String accsKey ) { 656 String val = getRequestParameter( accsKey ); 657 if( val == null || val.length() == 0 ) { 658 accesskey = null; 659 } 660 else { 661 accesskey = val; // 5.6.0.3 (2012/01/24) 662 } 663 } 664 665 /** 666 * 【TAG】クリアボタンに使用するショートカ?キー?を?しま?初期値:C)? 667 * 668 * @og.tag 669 * ボタンを?Alt-XX で実行できるようにするショートカ?キーを設定します? 670 * 標準では、検索ボタンは?C" に設定して?す?で、Alt-C となります? 671 * ゼロ??を指定すると、ショートカ?キーなしに設定できます? 672 * 初期値は、Clear の "C" です? 673 * 674 * @og.rev 5.3.6.0 (2011/06/01) accessKeyを削除できるように対? 675 * @og.rev 5.6.0.3 (2012/01/24) getRequestParameter を何度も呼んで?ので修正? 676 * 677 * @param accsKey クリアボタンのショートカ?キー??初期値:C) 678 */ 679 public void setClearAccesskey( final String accsKey ) { 680 String val = getRequestParameter( accsKey ); 681 if( val == null || val.length() == 0 ) { 682 clearAcskey = null; 683 } 684 else { 685 clearAcskey = val; // 5.6.0.3 (2012/01/24) 686 } 687 } 688 689 /** 690 * 【TAG】??戻る?prev_next リンクを表示するかど?を指定しま?初期値:true)? 691 * 692 * @og.tag 693 * 進?戻るリンクは、RESULT画面にコマン?FIRST,PREV,NEXT,LAST) と? 694 * コマンドを送る事で実現して?画像リンクです? 695 * PREV_NEXT が存在しな?面では、消去しておく?があります? 696 * 初期値は、true(表示する)です? 697 * 698 * @param flag prev_next リンクを表示するかど? 699 */ 700 public void setUsePrevNext( final String flag ) { 701 usePrevNext = nval( getRequestParameter( flag ),usePrevNext ); 702 } 703 704 /** 705 * 【TAG】pageSize 引数を使用するかど?を指定しま?初期値:true)? 706 * 707 * @og.tag 708 * pageSize 引数は、RESULT画面のviewタグで使用する ?の表示に 709 * 何件の??タを表示させるかを指定する引数です? 710 * こ?件数が多いと、多くの??タを見ることが?来ますが、その?示? 711 * ?なります??、少な?、PREV_NEXT を多用することになり? 712 * 目??行を探し?しにくくなります? 713 * pageSize の値は、pageSizeパラメータで画面単位に?するか、シス? 714 * パラメータの HTML_PAGESIZE でシス?単位に?できます? 715 * 初期値は、true(使用する)です? 716 * 717 * @param flag pageSize引数を使用するかど? 718 * @see #setPageSize( String ) 719 */ 720 public void setUsePageSize( final String flag ) { 721 usePageSize = nval( getRequestParameter( flag ),usePageSize ); 722 } 723 724 /** 725 * 【TAG】maxRowCount 引数を使用するかど?を指定しま?初期値:true)? 726 * 727 * @og.tag 728 * maxRowCount 引数は、RESULT画面のqueryタグで使用する ?の検索時に 729 * 何件の??タを取得させるかを?する引数です? 730 * こ?件数が多いと、多くの??タを検索することが?来ますが、その?示? 731 * ?なります??、少な?、目??行まで探し?せな?もしれません? 732 * maxRowCount の値は、rowCountパラメータで画面単位に?するか、シス? 733 * パラメータの DB_MAX_ROW_COUNT でシス?単位に?できます? 734 * 735 * 初期値は、true(使用する)です? 736 * 737 * @param flag maxRowCount引数を使用するかど? 738 * @see #setMaxRowCount( String ) 739 */ 740 public void setUseRowCount( final String flag ) { 741 useRowCount = nval( getRequestParameter( flag ),useRowCount ); 742 } 743 744 /** 745 * 【TAG】??間を表示する TimeView を表示するかど?を指定しま?初期値:true)? 746 * 747 * @og.tag 748 * true に設定すると、??間を表示するバ?イメージが表示されます? 749 * これは、DB検索、APサーバ?処??画面表示の???間をバ?イメージで 750 * 表示させる機?です?処?間?目安になります? 751 * 初期値は、true です? 752 * 753 * @param flag TimeView表示をするかど?(初期値:true) 754 */ 755 public void setUseTimeView( final String flag ) { 756 useTimeView = nval( getRequestParameter( flag ),useTimeView ); 757 } 758 759 /** 760 * 【TAG】pageSize プル?ンメニューの初期値を指定しま? 761 * (初期値:HTML_PAGESIZE[={@og.value org.opengion.hayabusa.common.SystemData#HTML_PAGESIZE}])? 762 * 763 * @og.tag 764 * プル?ンメニューを表示する場合?初期値を指定します? 765 * (初期値:ユーザー定数のHTML_PAGESIZE[={@og.value org.opengion.hayabusa.common.SystemData#HTML_PAGESIZE}])? 766 * 767 * @param pSize プル?ンメニューの初期値 768 * @see #setUsePageSize( String ) 769 * @see org.opengion.hayabusa.common.SystemData#HTML_PAGESIZE 770 */ 771 public void setPageSize( final String pSize ) { 772 pageSize = nval( getRequestParameter( pSize ),pageSize ); 773 } 774 775 /** 776 * 【TAG】maxRowCount プル?ンメニューの初期値を指定しま? 777 * (初期値:DB_MAX_ROW_COUNT[={@og.value org.opengion.hayabusa.common.SystemData#DB_MAX_ROW_COUNT}])? 778 * 779 * @og.tag 780 * プル?ンメニューを表示する場合?初期値を指定します? 781 * (初期値:ユーザー定数のDB_MAX_ROW_COUNT[={@og.value org.opengion.hayabusa.common.SystemData#DB_MAX_ROW_COUNT}])? 782 * 783 * @param maxSize maxRowCountプル?ンメニューの初期値 784 * @see #setUseRowCount( String ) 785 * @see org.opengion.hayabusa.common.SystemData#DB_MAX_ROW_COUNT 786 */ 787 public void setMaxRowCount( final String maxSize ) { 788 maxRowCount = nval( getRequestParameter( maxSize ),maxRowCount ); 789 } 790 791 /** 792 * 【TAG】ダミ?のinputタグ(display:none)を?力するか設定します? 793 * (初期値:USE_DUMMY_INPUT[={@og.value org.opengion.hayabusa.common.SystemData#USE_DUMMY_INPUT}])? 794 * 795 * @og.tag 796 * ?ーのinputタグ(display:none)を?力するか設定します? 797 * IEではinputが1つ?の場合にエンターでのsubmitが上手くいかな?め??ーを?置する?があります? 798 * trueに設定するとWriteCheckタグがダミ?を(常に??力します? 799 * (初期値:USE_DUMMY_INPUT[={@og.value org.opengion.hayabusa.common.SystemData#USE_DUMMY_INPUT}])? 800 * 801 * @og.rev 5.6.1.0 (2013/02/01) 新規追? 802 * 803 * @param flag 出力[する(true)/しな?false)] 804 * @see org.opengion.hayabusa.common.SystemData#USE_DUMMY_INPUT 805 */ 806 public void setUseDummy( final String flag ) { 807 useDummy = nval( getRequestParameter( flag ), useDummy ); 808 } 809 810 /** 811 * 【TAG】query画面等で編??ル?ンを?力するかど?(初期値?true) 812 * 813 * @og.tag 814 * falseを指定すると編??ル?ンを?さな?? 815 * popup画面等?画面ID単位では編??は使???に使?くな??合に 816 * タグのパラメータとして個別に?できるようにします? 817 * 初期値は、互換性の関係から?編??ル?ンを?力す?=true)です? 818 * 819 * @og.rev 5.7.5.0 (2014/04/04) 新規追? 820 * 821 * @param flag 編??ル?ンを?力するかど?(初期値:true) 822 * @see org.opengion.hayabusa.taglib.FileUDTag#setUseEditLink(String) 823 */ 824 public void setUseEditMenu( final String flag ) { 825 useEditMenu = nval( getRequestParameter( flag ),useEditMenu ); 826 } 827 828 /** 829 * こ?オブジェクト???表現を返します? 830 * 基本???目?使用します? 831 * 832 * @return こ?クラスの??表現 833 */ 834 @Override 835 public String toString() { 836 return org.opengion.fukurou.util.ToString.title( this.getClass().getName() ) 837 .println( "VERSION" ,VERSION ) 838 .println( "command" ,command ) 839 .println( "pageSize" ,pageSize ) 840 .println( "maxRowCount" ,maxRowCount ) 841 .println( "accesskey" ,accesskey ) 842 .println( "scope" ,scope ) 843 .println( "useCrear" ,useCrear ) 844 .println( "usePrevNext" ,usePrevNext ) 845 .println( "usePageSize" ,usePageSize ) 846 .println( "useRowCount" ,useRowCount ) 847 .println( "useTimeView" ,useTimeView ) 848 .println( "body" ,body ) 849 .println( "Other..." ,getAttributes().getAttribute() ) 850 .fixForm().toString() ; 851 } 852 }