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