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 */ 016package org.opengion.hayabusa.taglib; 017 018import static org.opengion.fukurou.util.StringUtil.nval; 019 020import org.opengion.fukurou.util.StringUtil; 021import org.opengion.fukurou.util.XHTMLTag; 022import org.opengion.hayabusa.common.HybsSystem; 023import org.opengion.hayabusa.resource.GUIInfo; 024 025/** 026 * テキストフィールドの入力を補助するポップアップを作成します。 027 * 028 * 通常のテキストフィールドに組み込むケースと、一覧表に組み込むケースに対応しています。 029 * 基本的には、columnMarker タグと同じ使い方ですが、フィールドが書き込み許可時に表示させる必要が 030 * あるため、実際には、viewMarker の isRendere="false" で使用するケースが多いと思います。 031 * なお、ポップアップ専用なので href="index.jsp" target="CONTENTS" がデフォルトで設定されています。 032 * 033 * @og.formSample 034 * ●形式:<og:popup gamenId="…" href="…" keys="…,…" vals="…,…" rtnKeys="…,…" /> 035 * ●body:なし 036 * 037 * ●Tag定義: 038 * <og:popup 039 * name 【TAG】この要素をリンクの対象とするための名前を指定します 040 * gamenId 【TAG】画面ID属性を登録します 041 * href 【TAG】ポップアップ先のURLを指定します(初期値:index.jsp) 042 * keys 【TAG】ポップアップ先に渡す入力キー配列をCSV形式で複数指定します 043 * vals 【TAG】ポップアップ先に渡す値配列をCSV形式で複数指定します 044 * rtnKeys 【TAG】ポップアップ先より受け取るキー配列をCSV形式で複数指定します 045 * column 【TAG】リンクをつけたいカラムを指定します 046 * onMark 【TAG】リンクを張る(true or 1)/張らない(false or 0)の設定を指定します(初期値:true) 047 * markList 【TAG】処理するマークを、"|"区切りの文字列で指定します 048 * height 【TAG】ダイアログの縦幅をピクセル数で指定します 049 * width 【TAG】ダイアログの横幅をピクセル数で指定します 050 * src 【TAG】表示させる画像のURLを指定します 051 * charset 【TAG】ポップアップ先の文字コードセットを指定します 052 * target 【TAG】ポップアップ先の表示ターゲットを指定します(初期値:CONTENTS) 053 * caseKey 【TAG】このタグ自体を利用するかどうかの条件キーを指定します(初期値:null) 054 * caseVal 【TAG】このタグ自体を利用するかどうかの条件値を指定します(初期値:null) 055 * caseNN 【TAG】指定の値が、null/ゼロ文字列 でない場合(Not Null=NN)は、このタグは使用されます(初期値:true) 056 * caseNull 【TAG】指定の値が、null/ゼロ文字列 の場合は、このタグは使用されます(初期値:true) 057 * id 【HTML】要素に対して固有の名前(id)をつける場合に設定します 058 * lang 【HTML】要素の内容と他の属性値の言語(lang,xml:lang)を指定します 059 * dir 【HTML】文字表記の方向(dir)を指定します 060 * title 【HTML】要素に対する補足的情報(title)を設定します 061 * style 【HTML】この要素に対して適用させるスタイルシート(style)を設定します 062 * tabindex 【HTML】タブの移動順(tabindex)を指定します(0 〜 32767) 063 * accesskey 【HTML】アクセスキー(alt+キーで直接指定)を割り当てます 064 * clazz 【HTML】要素に対して class 属性を設定します 065 * lbl 【TAG】ラベルリソースのラベルIDを指定します 066 * language 【TAG】タグ内部で使用する言語コード[ja/en/zh/…]を指定します 067 * command 【TAG】(通常使いません)処理の実行を指定する command を設定できます(初期値:NEW) 068 * append 【TAG】返ってきた値をキャレット位置に追記するかどうか(初期値:false) 069 * setSrc 【TAG】ボタンではなく画像を利用する場合にimgのsrcを指定します 070 * span 【TAG】テキストでポップアップを利用する場合に指定します 071 * useGamenId 【TAG】popupのURLに画面ID属性を追加するかどうか(初期値:false) 072 * debug 【TAG】デバッグ情報を出力するかどうか[true/false]を指定します(初期値:false) 073 * /> 074 * 075 * ●使用例 076 * ・普通のポップアップ 077 * <og:popup gamenId="GE0002" href="index.jsp" target="CONTENTS" 078 * keys="AAA,BBB,CCC" vals="{@AAA},{@B},ABC" 079 * rtnKeys="DDD,EEE" /> 080 * 081 * ・QUERYの入力フィールドに組み込む 082 * @keys、vals、rtnKeys がセットされる場合 083 * セットされる keys に対して vals の値をポップアップ画面に渡し、ポップアップ画面の戻り値を rtnKeys にセットされます。 084 * <og:column name="AAA" value="{@AAA}" > 085 * <og:popup gamenId="GE0002" 086 * keys="AAA,BBB,CCC" vals="{@AAA},{@B},ABC" 087 * rtnKeys="DDD,EEE" /> 088 * </og:column> 089 * Akeys、vals、rtnKeys がセットされない場合 090 * ポップアップ画面にリクエスト変数 XNAME に外側のカラム名、XVALUE にカラムの入力値、rtnKeys にカラム名を自動的にセットされます。 091 * <og:column name="AAA" value="{@AAA}" > 092 * <og:popup gamenId="GE0002" /> 093 * </og:column> 094 * 095 * ・RESULTの入力フィールドに組み込む(viewMarker 経由) 096 * gamenId を指定しなければこの画面へのURLを作成します。 097 * このURLは、その画面の index.jsp に直接ジャンプするためのURLです。 098 * <og:viewMarker command="{@command}" isRenderer="false"> 099 * <og:popup gamenId="GE0002" column="ABC" onMark="[ABC]" markList="1|2|3" 100 * keys="AAA,BBB,CCC" vals="[AAA],[BBB].value,{@CCC}" 101 * rtnKeys="DDD,EEE" /> 102 * </og:viewMarker> 103 * 104 * ・ポップアップ側のJSPファイル(view 部分) 105 * 106 * @og.group 画面部品 107 * @og.rev 3.8.6.1 (2006/10/20) 新規作成 108 * 109 * @version 0.9.0 2000/10/17 110 * @author Kazuhiko Hasegawa 111 * @since JDK1.1, 112 */ 113public class PopupTag extends HTMLTagSupport { 114 //* このプログラムのVERSION文字列を設定します。 {@value} */ 115 private static final String VERSION = "5.2.2.0 (2010/11/01)" ; 116 117 private static final long serialVersionUID = 522020101101L ; 118 119 private static final String DEF_BODY = "▼" ; 120// private static final String DEF_STYLE = "width:20px;text-align:center;" ; 121 private static final String DEF_STYLE = "width:20px;text-align:center;padding:0;" ; // 5.9.4.3 (2016/01/15) padding 122 123 private String column = null; 124 private String gamenId = null; 125 private String href = "index.jsp"; 126 private String target = "CONTENTS"; 127 private String onMark = "true"; // true または 1 128 private String markList = "true|TRUE|1"; // true または 1 129 private String height = null; 130 private String width = null; 131 private String imgsrc = null; 132 private String[] keys = null; 133 private String[] vals = null; 134 private String[] rtnKeys = null; 135 136 /** command 引数に渡す事の出来る コマンド 新規 {@value} */ 137 private static final String CMD_NEW = "NEW" ; // 5.1.7.0 (2010/06/01) 138 private String command = CMD_NEW; // 5.1.7.0 (2010/06/01) 139 140 private String append = "false"; // 5.8.5.0 (2015/03/06) 141 142// private static String VALUE_PRE = "this.form."; // 5.9.6.0 (2016/03/01) 143 private static String VALUE_PRE = "$(this).closest('form').get(0)."; // 5.10.11.2 (2019/05/17) 144 145 private boolean useGamenId = false; // 5.10.11.2 (2019/05/17) 7.0.3.0追加適用 146 private String setSpan = null; // 5.10.11.2 (2019/05/07) 147 148 /** 149 * Taglibの終了タグが見つかったときに処理する doEndTag() を オーバーライドします。 150 * 151 * @og.rev 5.2.2.0 (2010/11/01) caseKey 、caseVal 属性対応 152 * 153 * @return 後続処理の指示 154 */ 155 @Override 156 public int doEndTag() { 157 // 5.2.2.0 (2010/11/01) caseKey 、caseVal 属性対応 158 if( useTag() ) { 159 makeGamenLink(); 160 161 // GAMENID属性のURLへの自動セットは行わない。 162 ViewMarkerTag viewMark = (ViewMarkerTag)findAncestorWithClass( this,ViewMarkerTag.class ); 163 if( viewMark != null ) { 164 set( "onMark" ,onMark ); 165 set( "markList",markList ); 166 set( "body" ,makePopup( true ) ); 167 168 if( column != null && column.length() > 0 ) { 169 set( "column" ,column ); // 4.0.0 (2005/08/31) 同一カラムの複数登録を許可します。 170 viewMark.addAttribute( getAttributes() ); 171 } 172 } 173 else { 174 if( markList.indexOf( onMark ) >= 0 ) { 175 jspPrint( makePopup( false ) ); 176 } 177 } 178 } 179 return(EVAL_PAGE); 180 } 181 182 /** 183 * 使用しません。 184 * 185 * @return (null 固定) 186 */ 187 @Override 188 protected String makeTag() { return null; } 189 190 /** 191 * タグリブオブジェクトをリリースします。 192 * キャッシュされて再利用されるので、フィールドの初期設定を行います。 193 * 194 * @og.rev 5.10.11.2 (2019/05/17) useGamenid,setSpan追加 195 */ 196 @Override 197 protected void release2() { 198 super.release2(); 199 column = null; 200 gamenId = null; 201 href = "index.jsp"; 202 target = "CONTENTS"; 203 onMark = "true"; // true または 1 204 markList = "true|TRUE|1"; // true または 1 205 keys = null; 206 vals = null; 207 rtnKeys = null; 208 height = null; 209 width = null; 210 imgsrc = null; 211 command = CMD_NEW; // 5.1.7.0 (2010/06/01) 212 append = "false"; // 5.8.5.0 (2015/03/66) 213 useGamenId = false; // 5.10.11.2 (2019/05/17) 214 setSpan = null; // 5.10.11.2 (2019/05/17) 215 } 216 217 /** 218 * リンクを作成します。 219 * 220 * @og.rev 4.2.4.0 (2008/07/01) keys,vals,rtnKeysが設定されていない場合、外側のog:columnタグのname値を設定するように変更 221 * @og.rev 5.1.7.0 (2010/06/01) 引数にcommandを追加 222 * @og.rev 5.2.1.0 (2010/10/01) height、width には、"px" などの単位を付ける前提での対応 223 * @og.rev 5.2.2.0 (2010/11/01) height、width が null の場合は、シングルクオートをつけない。 224 * @og.rev 5.8.5.0 (2015/03/06) append追加 225 * @og.rev 5.9.16.1 (2017/01/20) this.formの追加 226 * @og.rev 5.10.11.2 (2019/05/17) useGamenId追加 227 * 228 * @param useKey [true:KEY付き/false:KEY無し] 229 * 230 * @return リンクタグ文字列 231 */ 232 private String makePopup( final boolean useKey ) { 233 StringBuilder rtn = new StringBuilder(); 234// rtn.append( "ogPopup( '" ).append( get( "href" ) ).append( "'," ); 235// rtn.append( height ).append( "," ).append( width ).append( "," ); 236 // 5.2.1.0 (2010/10/01) px を付けると数字ではなくなるため、シングルクオーテーションでくくる。 237 rtn.append( "ogPopup( '" ).append( get( "href" ) ).append( "'," ); 238 // 5.2.2.0 (2010/11/01) height、width が null の場合は、シングルクオートをつけない。 239 if( height != null ) { rtn.append( "'" ).append( height ).append( "'" ); } 240 else { rtn.append( "null" ); } 241 rtn.append( "," ); 242 if( width != null ) { rtn.append( "'" ).append( width ).append( "'" ); } 243 else { rtn.append( "null" ); } 244 rtn.append( "," ); 245 246 final String GMN_KV = useGamenId && gamenId != null && !gamenId.isEmpty() 247 ? "'GAMENID','" + gamenId + "'," 248 : "" ; 249 250 String columnName = null; //4.2.4.0 2008/07/01 251 if( keys != null && keys.length > 0 ) { 252 rtn.append( "new Array(" ) 253 .append( GMN_KV ); // 5.10.11.2 (2019/05/17) 254 addQuote( rtn, keys[0], false ); 255 rtn.append( "," ); 256 addQuote( rtn, vals[0], false ); 257 for( int i = 1; i < keys.length; i++ ) { 258 rtn.append( "," ); 259 addQuote( rtn, keys[i], false ); 260 rtn.append( "," ); 261 addQuote( rtn, vals[i], false ); 262 } 263 rtn.append( ")," ); 264 } 265 else { 266 ColumnTag outerColumn = (ColumnTag) findAncestorWithClass( this, ColumnTag.class ); 267 columnName = ( outerColumn == null ) ? null : outerColumn.getName(); 268 if( columnName != null ) { 269 rtn.append( "new Array('XNAME','" ); 270 rtn.append( columnName ); 271 rtn.append( "','XVALUE'," ); 272 rtn.append( VALUE_PRE ); // 5.9.16.1 (2017/01/20) 273 rtn.append( columnName ); 274 rtn.append( ".value" ); 275 rtn.append( ")," ); 276 } 277 else { 278 rtn.append( "null," ); 279 } 280 } 281 rtn.append( "" ); 282 283 if( rtnKeys != null && rtnKeys.length > 0 ) { 284 rtn.append( "this,new Array(" ); 285 addQuote( rtn, rtnKeys[0], useKey ); 286 for( int i = 1; i < rtnKeys.length; i++ ) { 287 rtn.append( "," ); 288 addQuote( rtn, rtnKeys[i], useKey ); 289 } 290 rtn.append( ")" ); 291 } 292 else if( columnName != null ) { 293 rtn.append( "this,new Array('" ); 294 rtn.append( columnName ); 295 rtn.append( "')" ); 296 } 297 else { 298 rtn.append( "null,null" ); 299 } 300 301 // 5.1.7.0 (2010/06/01) 引数にcommandを追加 302 // 5.8.5.0 (2015/03/06) append追加 303// rtn.append( ");" ); 304// rtn.append( ",'" ).append( command ).append( "');" ); 305 rtn.append( ",'" ).append( command ).append( "'"); 306 rtn.append( ",'" ).append( append ).append( "');" ); 307 308// if( imgsrc == null ) { 309// set( "type" , "button" ); 310// set( "body" , nval( getMsglbl(),DEF_BODY) ); 311// set( "onClick", rtn.toString() ); 312// set( "style" , nval( get( "style" ),DEF_STYLE) ); 313// return XHTMLTag.button( getAttributes() ) ; 314// } 315// else { 316// set( "src" , imgsrc ); 317// set( "title" , getMsglbl() ); 318// set( "onClick", rtn.toString() ); 319// set( "style" , get( "style" ) ); 320// return XHTMLTag.img( getAttributes() ) ; 321// } 322 323 if( imgsrc != null ) { 324 set( "src" , imgsrc ); 325 set( "title" , getMsglbl() ); 326 set( "onClick", rtn.toString() ); 327 set( "style" , get( "style" ) ); 328 return XHTMLTag.img( getAttributes() ) ; 329 } 330 else if( setSpan != null ) { // 5.10.11.2 (2019/05/17) 331 set( "body" , StringUtil.htmlFilter(setSpan) ); 332 set( "title" , getMsglbl() ); 333 set( "optionAttributes", "onClick=\""+rtn.toString()+"\"" ); 334 set( "style" , get( "style" ) ); 335 set( "class" , "hybsPopup" ); 336 return XHTMLTag.span( getAttributes() ) ; 337 } 338 else { 339 set( "type" , "button" ); 340 set( "body" , nval( getMsglbl(),DEF_BODY) ); 341 set( "onClick", rtn.toString() ); 342 set( "style" , nval( get( "style" ),DEF_STYLE) ); 343 return XHTMLTag.button( getAttributes() ) ; 344 } 345 } 346 347 /** 348 * 引数 val の設定値を設定する簡易メソッド 349 * 350 * @og.rev 5.9.6.0 (2016/03/01) valueの取得の形を少し変える処理をここに入れる 351 * 352 * @param buf 結果を格納するStringBuilderオブジェクト 353 * @param val 設定値 354 * @param useKey [true:KEY付き/false:KEY無し] 355 * 356 * @return (引数のバッファと同じオブジェクト) 357 */ 358 private StringBuilder addQuote( final StringBuilder buf, final String val, final boolean useKey ) { 359 // 5.9.6.0 this.form.対応 360 String val2 = ""; 361 if( val != null && val.endsWith( ".value" ) && val.indexOf( "." ) == val.lastIndexOf( "." ) ){ 362 val2 = VALUE_PRE; 363 } 364 365 366 if( useKey ) { 367 if( val != null && val.endsWith( ".value" ) ) { 368// buf.append( val.substring( 0,val.length()-6 ) ).append( "__{I}.value" ); 369 buf.append( val2 ).append( val.substring( 0,val.length()-6 ) ).append( "__{I}.value" ); // 5.9.6.0 370 } 371 else { 372 buf.append( "'" ).append( val ).append( "__{I}'" ); 373 } 374 } 375 else { 376 if( val != null && val.endsWith( ".value" ) ) { 377 if( val.charAt(0) == '[' ) { 378// buf.append( val.substring( 1,val.length()-7 ) ).append( "__{I}.value" ); 379 buf.append( val2 ).append( val.substring( 1,val.length()-7 ) ).append( "__{I}.value" ); // 5.9.6.0 380 } 381 else { 382// buf.append( val ); 383 buf.append( val2 ).append( val ); // 5.9.6.0 384 } 385 } 386 else { 387 buf.append( "'" ).append( val ).append( "'" ); 388 } 389 } 390 return buf ; 391 } 392 393 /** 394 * 画面IDとhref から、指定のURLを作成します。 395 * 396 */ 397 private void makeGamenLink() { 398 if( gamenId == null || gamenId.length() == 0 ) { return ; } 399 400 GUIInfo guiInfo = getGUIInfo( gamenId ); // 4.0.0 (2005/01/31) 401 if( guiInfo == null ) { return ; } // 見つからない場合は、アクセス不可 402 403 String address = guiInfo.getRealAddress( get( "href" ) ); 404 String url = getRequestParameter( address ); 405 406 set( "href",url ); 407 408 if( get( "title" ) == null ) { 409 set( "title","To:" + guiInfo.getLabel() ); 410 } 411 } 412 413 /** 414 * 【TAG】この要素をリンクの対象とするための名前を指定します。 415 * 416 * @og.tag この要素をリンクの対象とするための名前を指定します。 417 * 418 * @param name 名前 419 */ 420 public void setName( final String name ) { 421 set( "name",getRequestParameter( name ) ); 422 } 423 424 /** 425 * 【TAG】リンクをつけたいカラムを指定します。 426 * 427 * @og.tag 428 * このカラム名のTableModelに対して、 ViewLink タグが存在する場合は, 429 * リンクを張ります。 430 * 431 * @param clm カラム名 432 */ 433 public void setColumn( final String clm ) { 434 column = nval( getRequestParameter( clm ),column ); 435 } 436 437 /** 438 * 【TAG】画面ID属性を登録します。 439 * 440 * @og.tag 441 * gamenId 属性は、画面IDをキーに、実アドレスを求めるのに使用します。 442 * 画面IDが指定された場合は、実アドレスに変換する。指定されない場合は、 443 * href 属性をそのままリンク情報を作成します。 444 * 画面IDを指定する場合の href は、JSPファイル名(例えば、index.jsp 等)です。 445 * 446 * @param id 画面ID 447 */ 448 public void setGamenId( final String id ) { 449 gamenId = nval( getRequestParameter( id ),gamenId ); 450 } 451 452 /** 453 * 【TAG】ポップアップ先のURLを指定します(初期値:index.jsp)。 454 * 455 * @og.tag 456 * 通常、gamenId を指定している場合は、それ以降(index.jsp , result.jsp など)を指定します。 457 * 通常のリンクの場合、GAMENID/href というアドレスに合成されます。( GE0001/result.jsp など ) 458 * (正確には、画面IDではなく、対応する画面ADDRESSを使用します。) 459 * ポップアップ専用のリンクなので、初期値は、index.jsp です。 460 * 461 * @param href ポップアップ先のURL 462 */ 463 public void setHref( final String href ) { 464 set( "href",nval( getRequestParameter( href ),this.href ) ); 465 } 466 467 /** 468 * 【TAG】ポップアップ先の文字コードセットを指定します。 469 * 470 * @og.tag ポップアップ先の文字コードセットを指定します。 471 * 472 * @param charset 文字コードセット 473 */ 474 public void setCharset( final String charset ) { 475 set( "charset",getRequestParameter( charset ) ); 476 } 477 478 /** 479 * 【TAG】ポップアップ先の表示ターゲットを指定します(初期値:CONTENTS)。 480 * 481 * @og.tag ポップアップ先の表示ターゲットを指定します。 482 * 483 * @param target 表示ターゲット 484 */ 485 public void setTarget( final String target ) { 486 set( "target",nval( getRequestParameter( target ),this.target ) ); 487 } 488 489 /** 490 * 【TAG】ポップアップ先に渡す入力キー配列をCSV形式で複数指定します。 491 * 492 * @og.tag ポップアップ先に渡す入力キー配列を指定します。 493 * 分解方法は、CSV変数を先に分解してから、getRequestParameter で値を取得します。 494 * こうしないとデータ自身にカンマを持っている場合に分解をミスる為です。 495 * 496 * @param key 渡す入力キー配列(CSV形式) 497 */ 498 public void setKeys( final String key ) { 499 keys = getCSVParameter( key ); 500 } 501 502 /** 503 * 【TAG】ポップアップ先に渡す値配列をCSV形式で複数指定します。 504 * 505 * @og.tag ポップアップ先に渡す値配列を指定します。 506 * 分解方法は、CSV変数を先に分解してから、getRequestParameter で値を取得します。 507 * こうしないとデータ自身にカンマを持っている場合に分解をミスる為です。 508 * 509 * @param val 渡す値配列(CSV形式) 510 */ 511 public void setVals( final String val ) { 512 vals = getCSVParameter( val ); 513 } 514 515 /** 516 * 【TAG】ポップアップ先より受け取るキー配列をCSV形式で複数指定します。 517 * 518 * @og.tag ポップアップ先より受け取るキー配列を指定します。 519 * 分解方法は、CSV変数を先に分解してから、getRequestParameter で値を取得します。 520 * こうしないとデータ自身にカンマを持っている場合に分解をミスる為です。 521 * 522 * @param key 受け取るキー配列(CSV形式) 523 */ 524 public void setRtnKeys( final String key ) { 525 rtnKeys = getCSVParameter( key ); 526 } 527 528 /** 529 * 【TAG】リンクを張る(true or 1)/張らない(false or 0)の設定を指定します(初期値:true)。 530 * 531 * @og.tag 532 * リンクを張る場合は、"true"(または "1") リンクを張らない 533 * 場合は, "true以外"(または "0")をセットします。 534 * 初期値は、 "true"(リンクを張る)です。 535 * さらに、[カラム名] で、動的にカラムの値で、リンクを張る、張らないを 536 * 選ぶ事が可能になります。値は、"true"(または "1") で、マークします。 537 * ただし、単独 linkタグ時は使用できません。 538 * 追記 3.5.2.0 (2003/10/20):markList属性に、処理対象文字列郡を指定できます。 539 * これにより、リンクを処理するかどうかの判断が、true,1 以外にも使用できるようになりました。 540 * 541 * @param flag リンクの設定[true:リンクを張る/それ以外:リンクを張らない] 542 */ 543 public void setOnMark( final String flag ) { 544 onMark = nval( getRequestParameter( flag ),onMark ); 545 } 546 547 /** 548 * 【TAG】処理するマークを、"|"区切りの文字列で指定します。 549 * 550 * @og.tag 551 * markListで与えられた文字列に、onMark文字列(大文字/小文字の区別あり)が 552 * 含まれていれば、処理します。 553 * 例えば、"A","B","C" という文字列が、onMark で指定された 554 * 場合に処理するようにしたい場合は、"A|B|C" をセットします。 555 * markList には、[カラム名]指定が可能です。(ただし、単独 linkタグ時は除く) 556 * 初期値は、 "true|TRUE|1"です。 557 * 558 * @param list 処理するマーク(indexOf による含む/含まない判定) 559 */ 560 public void setMarkList( final String list ) { 561 markList = nval( getRequestParameter( list ),markList ); 562 } 563 564 /** 565 * 【TAG】ダイアログの縦幅をピクセル数で指定します。 566 * 567 * @og.tag 568 * 縦幅を指定します。単位も含めて入力してください。 569 * 設定しない場合は、ogPopup JavaScript の内部初期値が採用されます。 570 * 571 * @og.rev 5.2.1.0 (2010/10/01) height、width には、"px" などの単位を付ける前提での対応 572 * 573 * @param ht ダイアログの縦幅(ピクセル数) 574 */ 575 public void setHeight( final String ht ) { 576 height = nval( getRequestParameter( ht ),height ); 577 if( height != null && ! height.endsWith( "px" ) ) { height += "px"; } // 5.2.1.0 (2010/10/01) 578 } 579 580 /** 581 * 【TAG】ダイアログの横幅をピクセル数で指定します。 582 * 583 * @og.tag 584 * 横幅を指定します。単位も含めて入力してください。 585 * 設定しない場合は、ogPopup JavaScript の内部初期値が採用されます。 586 * 587 * @og.rev 5.2.1.0 (2010/10/01) height、width には、"px" などの単位を付ける前提での対応 588 * 589 * @param wh ダイアログの横幅(ピクセル数) 590 */ 591 public void setWidth( final String wh ) { 592 width = nval( getRequestParameter( wh ),width ); 593 if( width != null && ! width.endsWith( "px" ) ) { width += "px"; } // 5.2.1.0 (2010/10/01) 594 } 595 596 /** 597 * 【TAG】表示させる画像のURLを指定します。 598 * 599 * @og.tag 600 * この属性を設定すると、自動的に イメージリンクでの onClick属性で 601 * ポップアップの起動画面を作成します。 602 * この属性が設定されていない場合は、button での起動になります。 603 * 604 * @param src 画像のURL 605 */ 606 public void setSrc( final String src ) { 607 imgsrc = nval( getRequestParameter( src ),imgsrc ); 608 } 609 610 /** 611 * 【TAG】(通常使いません)処理の実行を指定する command を設定できます(初期値:NEW)。 612 * 613 * @og.tag 614 * ここで指定されたcommandは、ポップアップ画面の引数として渡されます。 615 * 初期値は、NEW です。 616 * 617 * @og.rev 5.1.7.0 (2010/06/01) 新規作成 618 * 619 * @param cmd コマンド 620 */ 621 public void setCommand( final String cmd ) { 622 command = nval( getRequestParameter( cmd ),command ); 623 } 624 625 /** 626 * 【TAG】返り値をキャレット位置に追記する(true)/しない(false)の設定を指定します(初期値:false)。 627 * 628 * @og.tag 629 * ポップアップからの返り値を、元の値と置換するのではなく、キャレット位置に挿入するかどうかを指定します。 630 * 631 * @og.rev 5.8.5.0 (2015/02/06) 632 * 633 * @param flg 返り値のキャレット位置に追記設[true:追記/それ以外:置換] 634 */ 635 public void setAppend( final String flg ) { 636 append = nval( getRequestParameter( flg ),append ); 637 } 638 639 /** 640 * 【TAG】表示させる文字列を指定します。 641 * 642 * @og.tag 643 * この属性を設定すると、spanタグの onClick属性で 644 * ポップアップの起動画面を作成します。 645 * classにはhybsPopupを付加します。 646 * img利用を指定している場合は、そちらが優先的に利用されます。 647 * 648 * @param text 表示させる文字列 649 */ 650 public void setSpan( final String text ) { 651 setSpan = nval( getRequestParameter( text ),setSpan ); 652 } 653 654 /** 655 * 【TAG】popupで上がる画面のURLにGamenId属性を付加するかどうかせっています(初期値:false)。 656 * 657 * @og.tag 658 * ポップアップのURLのリクエスト変数にGAMENIDを付加するかどうかを指定します。 659 * 初期値は互換性を考慮してfalseです。 660 * 661 * @og.rev 5.10.11.2 (2019/05/17) 新規作成 662 * 663 * @param flg gamenidの付加設定[true:付加する/false:しない] 664 */ 665 public void setUseGamenId( final String flg ) { 666 useGamenId = nval( getRequestParameter( flg ),useGamenId ); 667 } 668 669 /** 670 * このオブジェクトの文字列表現を返します。 671 * 基本的にデバッグ目的に使用します。 672 * 673 * @return このクラスの文字列表現 674 */ 675 @Override 676 public String toString() { 677 return org.opengion.fukurou.util.ToString.title( this.getClass().getName() ) 678 .println( "VERSION" ,VERSION ) 679 .println( "column" ,column ) 680 .println( "gamenId" ,gamenId ) 681 .println( "href" ,href ) 682 .println( "target" ,target ) 683 .println( "onMark" ,onMark ) 684 .println( "markList" ,markList ) 685 .println( "height" ,height ) 686 .println( "width" ,width ) 687 .println( "keys" ,keys ) 688 .println( "vals" ,vals ) 689 .println( "rtnKeys" ,rtnKeys ) 690 .println( "Other..." ,getAttributes().getAttribute() ) 691 .fixForm().toString() 692 + HybsSystem.CR 693 + super.toString() ; 694 } 695}