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