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