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 org.opengion.hayabusa.common.HybsSystem;
019    import org.opengion.hayabusa.common.HybsSystemException;
020    import org.opengion.hayabusa.html.TabData;
021    
022    import static org.opengion.fukurou.util.StringUtil.nval ;
023    
024    import java.util.List;
025    import java.util.ArrayList;
026    import java.util.Locale ;
027    
028    /**
029     * 【å»?­¢】タブã?インでã€??目をå?割して表示するタブテーブルを作æ?しますã?
030     *
031     * ※ こã?タグはå»?­¢予定ですã?tabLink、tabList の使用をご検討くã�?�•ã�??
032     *
033     * ä¸?�¤の大きなHTMLをã?タブを使用することでè¤?•°の塊にåˆ?‰²表示できますã?
034     * åˆ?‰²された各タブã?、ä¸?�¤のHTMLのため、タブ間の移動によるæƒ??の消失はありませんã€?
035     * またã?ä¸?�¤のHTMLのため、タブにまたがって入力したå?は、すべて ä¸?‹¬送信することã‚?
036     * 可能ですã?(Formタグで、å?てのタブをまとめて記述してã�?‚Œば)
037     * タブテーブルは、orientation 属æ?で、横(horizontal)と縦(vertical)を指定できますã?
038     * これは、タブã?位置が異なるだけで、機è?は同ä¸?�§すã?初期値は、横(horizontal)ですã?
039     * 個ã?のタブã?æŒ?®šã?、tab タグを使用しますã?
040     * å¿?�šä¸?�¤以上ã?tab タグã‚?BODY要ç´?�«記述するå¿?¦�がありますã?
041     * selectedIndex を指定すると、å?期表示させるタブをæŒ?®šできますã?番号は?�から始まりますã?
042     *
043     * @og.formSample
044     * ●形式ï¼?lt;og:tabTable
045     *                    orientation = "[horizontal/vertical]"     タブã?方å�?横/縦)
046     *                    height      = "[100px / 100%]"            ãƒ??ブルの高さ(px OR %)
047     *                    width       = "[100px / 100%]"            ãƒ??ブルのå¹?px OR %)
048     *                    selectedIndex = "[0..]"                   初期表示するタブ番号
049     *         >
050     *             <og:tab lbl="?¥?¥?¥" > ... </og:tab >  タブそのもã?
051     *             <og:tab lbl="?¥?¥?¥" > ... </og:tab >  タブそのもã?
052     *         </og:tabTable >
053     * ●body?šあã‚?EVAL_BODY_BUFFERED:BODYを評価しã?{@XXXX} を解析しまã�?
054     *
055     * ●Tag定義??
056     *   <og:tabTable
057     *       orientation        【å»?­¢】タブã?方向ã?横åž?horizontal)か縦åž?vertical)を指定しまã�?初期値:横åž?
058     *       height             【å»?­¢】タブã?高さをã?% 、px 、またã? "auto" でæŒ?®šしまã�?
059     *       width              【å»?­¢】タブã?å¹?‚’ % 、px 、またã? "auto" でæŒ?®šしまã�?
060     *       selectedIndex      【å»?­¢】å?期表示するペã?ジ番号を指定しまã�?初期値:0)
061     *       style              【å»?­¢】å?期表示時ã?タブに与えã‚?style 属æ?を指定しまã�?
062     *       debug              【TAG】デバッグæƒ??をå?力するかどã�?�‹[true/false]を指定しまã�?初期値:false)
063     *   >   ... Body ...
064     *   </og:tabTable>
065     *
066     * ●使用ä¾?
067     *  横åž?horizontal)の場合ã?横型が初期値のため、無æŒ?®šで使用できますã?
068     *  <og:tabTable>
069     *      <og:tab lbl="page 1"><jsp:directive.include file="paGE1.jsp" /></og:tab>
070     *      <og:tab lbl="page 2"><jsp:directive.include file="page2.jsp" /></og:tab>
071     *      <og:tab lbl="page 3"><jsp:directive.include file="page3.jsp" /></og:tab>
072     *  </og:tabTable>
073     *
074     *  縦åž?vertical)の場合ã?ãƒ??ブルの高さを指定するå¿?¦�がありますã?(px OR %)
075     *  <og:tabTable orientation="vertical" height="100px" >
076     *      <og:tab lbl="page 1"><jsp:directive.include file="paGE1.jsp" /></og:tab>
077     *      <og:tab lbl="page 2"><jsp:directive.include file="page2.jsp" /></og:tab>
078     *      <og:tab lbl="page 3"><jsp:directive.include file="page3.jsp" /></og:tab>
079     *  </og:tabTable>
080     *
081     * @og.rev 3.5.6.5 (2004/08/09) 新規作æ?
082     * @og.group (å»?­¢)画面部å“?
083     *
084     * @version  4.0
085     * @author       Kazuhiko Hasegawa
086     * @since    JDK5.0,
087     * @deprecated マイクロソフトのスクリプトに依存するためã?å»?­¢しますã?tabLink、tabList の使用をご検討くã�?�•ã�??
088     */
089    @Deprecated public class TabTableTag extends CommonTagSupport {
090            //* こã?プログラãƒ??VERSIONæ–?­—å?を設定しますã?       {@value} */
091            private static final String VERSION = "4.0.0.0 (2005/08/31)" ;
092    
093            private static final long serialVersionUID = 400020050831L ;
094    
095            private static final String CR = HybsSystem.CR ;
096    //      private static final String JSV = "<script language=\"JavaScript\">ots.style.height = otab.offsetHeight ;</script>";
097            private static final String JSV = "<script type=\"text/javascript\">ots.style.height = otab.offsetHeight ;</script>";
098    
099            private transient List<TabData> tabList = null;
100            private boolean orientation = true;             // true:horizontal false:vertical
101    
102            // 3.5.6.6 (2004/08/23) height と width の初期値変更ã€?
103            private String  height  = null;
104            private String  width   = null;
105            private String  style   = null; // 3.8.6.1 (2006/10/24)
106            private int             selectedIndex = -1 ;    // 3.7.1.1 (2005/05/31) 初期選択されるペã?ジ番号
107            private int             realIndex     = -1 ;    // 3.8.6.2 (2006/11/01) 実際の選択タブã?ペã?ジ番号
108            private int             realTabCount  = -1 ;    // 3.8.6.2 (2006/11/01) 実際のタブã?ペã?ジ番号
109    
110            /**
111             * Taglibの開始タグが見つかったときに処ç�?�™ã‚?doStartTag() ã‚?オーバã?ライドしますã?
112             *
113             * @return      後続å?ç�??æŒ?¤º( EVAL_BODY_BUFFERED )
114             */
115            @Override
116            public int doStartTag() {
117                    return( EVAL_BODY_BUFFERED );   // Body を評価するã€? extends BodyTagSupport æ™?
118            }
119    
120            /**
121             * Taglibの終äº?‚¿グが見つかったときに処ç�?�™ã‚?doEndTag() ã‚?オーバã?ライドしますã?
122             *
123             * @return      後続å?ç�??æŒ?¤º
124             */
125            @Override
126            public int doEndTag() {
127                    debugPrint();           // 4.0.0 (2005/02/28)
128                    if( tabList == null ) {
129                            String errMsg = "BODY部に TabTag がå¿?�šå¿?¦�ですã?";
130                            throw new HybsSystemException( errMsg );
131                    }
132    
133                    jspPrint( makeTag() );
134                    return(EVAL_PAGE);
135            }
136    
137            /**
138             * タグリブオブジェクトをリリースしますã?
139             * キャãƒ?‚·ュされて再利用されるã?で、フィールドã?初期設定を行いますã?
140             *
141             * @og.rev 3.5.6.6 (2004/08/23) height と width の初期値変更ã€?
142             * @og.rev 3.8.6.1 (2006/10/24) style属æ?を追åŠ?
143             * @og.rev 3.8.6.2 (2006/11/01) selectedIndex の初期値変更(0 â‡?-1)ã€?
144             */
145            @Override
146            protected void release2() {
147                    super.release2();
148                    tabList                 = null;
149                    orientation     = true;         // true:horizontal false:vertical
150                    height                  = null;
151                    width                   = null;
152                    selectedIndex   = -1 ;  // 3.7.1.1 (2005/05/31) 初期選択されるペã?ジ番号
153                    realIndex               = -1 ;  // 3.8.6.2 (2006/11/01) 実際の選択タブã?ペã?ジ番号
154                    realTabCount    = -1 ;  // 3.8.6.2 (2006/11/01) 実際のタブã?ペã?ジ番号
155                    style                   = null;
156            }
157    
158            /**
159             * 出力するタグæ–?­—å?を作æ?しますã?
160             *
161             * @og.rev 3.5.6.6 (2004/08/23) メソãƒ?ƒ‰ã‚?HorizontalとVerticalにåˆ?‰²ã€?
162             *
163             * @return      タグæ–?­—å?
164             */
165            private String makeTag() {
166                    if( orientation ) {
167                            if( height == null ) { height = "auto"; }
168                            if( width  == null ) { width  = "auto"; }
169                            return makeHorizontalTag();
170                    }
171                    else {
172                            if( height == null ) { height = "200px"; }
173                            if( width  == null ) { width  = "100%" ; }
174                            return makeVerticalTag();
175                    }
176            }
177    
178            /**
179             * 出力すã‚?horizontal タグæ–?­—å?を作æ?しますã?
180             *
181             * @og.rev 3.5.6.6 (2004/08/23) メソãƒ?ƒ‰ã‚?HorizontalとVerticalにåˆ?‰²ã€?
182             * @og.rev 3.7.1.1 (2005/05/23) 初期表示するペã?ジ番号を指å®?
183             * @og.rev 3.8.6.0 (2006/08/23) IE7対応ã?mp:multipage の width:100%; を削除
184             * @og.rev 3.8.6.1 (2006/10/20) action属æ?を追åŠ?
185             * @og.rev 3.8.6.2 (2006/11/01) selectedIndex は、å?めての OPENタブとしますã?
186             *
187             * @return      タグæ–?­—å?
188             */
189            private String makeHorizontalTag() {
190                    // 注意ï¼?**/ でマã?カー付けされてã�?‚‹行ã?、縦横で異なる記述が書かれてã�?�¾すã?
191                    if( realIndex < 0 ) { realIndex = 0; }       // 3.8.6.2 (2006/11/01)
192    
193                    StringBuilder buf = new StringBuilder( HybsSystem.BUFFER_LARGE );
194    
195                    buf.append( "<table cellpadding=\"0px\" cellspacing=\"0px\"" ).append( CR );
196                    buf.append( " style=\"width:" ).append( width ).append( ";" );
197    
198                    buf.append( "\">" ).append( CR );
199                    buf.append( "  <tr valign=\"top\">" ).append( CR );
200                    buf.append( "    <td id=\"otab\">" ).append( CR );
201                    buf.append( "      <ts:tabstrip id=\"ots\" targetid=\"omp\" style=\"height:100%\"" ).append( CR );
202                    buf.append( "                tabdefaultstyle=\"border:solid 1px black;padding:3px;\"" ).append( CR );
203                    buf.append( "                tabhoverstyle=\"color:blue;\"" ).append( CR );
204    /**/    buf.append( "                tabselectedstyle=\"border:solid 1px black;border-bottom:none\"" ).append( CR );
205    /**/    buf.append( "                sepdefaultstyle=\"border-bottom:solid 1px black;\"" ).append( CR );
206                    // 3.7.1.1 (2005/05/23) 追åŠ?
207                    buf.append( "                selectedIndex=\"" ).append( realIndex ).append( "\"" ).append( CR );
208    /**/    buf.append( "                orientation=\"horizontal\">" ).append( CR );
209    
210                    int size = tabList.size();
211                    TabData tab ;
212                    for( int i=0; i<size; i++ ) {
213                            tab = tabList.get(i);
214                            if( tab.isOpen() ) {
215                                    buf.append( tab.getTab( style ) ).append( CR );
216                            }
217                            else {
218                                    buf.append( tab.getTab( null ) ).append( CR );
219                            }
220    
221                            if( orientation && (i != size-1) ) {
222                                    buf.append( "<ts:tabseparator />" ).append( CR );
223                            }
224                    }
225                    buf.append( "<ts:tabseparator defaultstyle=\"width:100%;height:100%\" />" ).append( CR );
226    
227                    buf.append( "        </ts:tabstrip>" ).append( CR );
228                    buf.append( "    </td>" ).append( CR );
229    
230    /**/    buf.append( "</tr><tr style=\"height:" ).append( height ).append( "\" >" ).append( CR );
231    
232                    buf.append( "    <td width=\"100%\">" ).append( CR );
233                    buf.append( "      <mp:multipage id=\"omp\"" ).append( CR );
234    /**/ // buf.append( "            style=\"border:solid 1px black;border-top:none;padding:5px;height:100%;width:100%;\">" ).append( CR );
235    /**/    buf.append( "            style=\"border:solid 1px black;border-top:none;padding:5px;height:100%;\">" ).append( CR );
236    
237                    for( int i=0; i<size; i++ ) {
238                            tab = tabList.get(i);
239                            buf.append( tab.getTabBody() ).append( CR );
240                    }
241                    buf.append( "      </mp:multipage>" ).append( CR );
242                    buf.append( "    </td>" ).append( CR );
243                    buf.append( "  </tr>" ).append( CR );
244                    buf.append( "</table>" ).append( CR );
245    
246                    return buf.toString();
247            }
248    
249            /**
250             * 出力すã‚?vertical タグæ–?­—å?を作æ?しますã?
251             *
252             * @og.rev 3.5.6.6 (2004/08/23) メソãƒ?ƒ‰ã‚?HorizontalとVerticalにåˆ?‰²ã€?
253             * @og.rev 3.7.1.1 (2005/05/23) 初期表示するペã?ジ番号を指å®?
254             * @og.rev 3.8.6.0 (2006/08/23) IE7対応ã?mp:multipage の height:100%; を削除
255             * @og.rev 3.8.6.1 (2006/10/20) action属æ?を追åŠ?
256             * @og.rev 3.8.6.2 (2006/11/01) selectedIndex は、å?めての OPENタブとしますã?
257             *
258             * @return      タグæ–?­—å?
259             */
260            private String makeVerticalTag() {
261                    // 注意ï¼?**/ でマã?カー付けされてã�?‚‹行ã?、縦横で異なる記述が書かれてã�?�¾すã?
262                    if( realIndex < 0 ) { realIndex = 0; }       // 3.8.6.2 (2006/11/01)
263    
264                    StringBuilder buf = new StringBuilder( HybsSystem.BUFFER_LARGE );
265    
266                    buf.append( "<table cellpadding=\"0px\" cellspacing=\"0px\"" ).append( CR );
267                    buf.append( " style=\"width:" ).append( width ).append( ";" );
268    /**/    buf.append( "height:" ).append( height ).append( ";" );
269    
270                    buf.append( "\">" ).append( CR );
271                    buf.append( "  <tr valign=\"top\">" ).append( CR );
272                    buf.append( "    <td id=\"otab\">" ).append( CR );
273                    buf.append( "      <ts:tabstrip id=\"ots\" targetid=\"omp\" style=\"height:100%\"" ).append( CR );
274                    buf.append( "                tabdefaultstyle=\"border:solid 1px black;padding:3px;\"" ).append( CR );
275                    buf.append( "                tabhoverstyle=\"color:blue;\"" ).append( CR );
276    /**/    buf.append( "                tabselectedstyle=\"border:solid 1px black;border-right:none\"" ).append( CR );
277    /**/    buf.append( "                sepdefaultstyle=\"border-right:solid 1px black;\"" ).append( CR );
278                    // 3.7.1.1 (2005/05/23) 追åŠ?
279                    buf.append( "                selectedIndex=\"" ).append( realIndex ).append( "\"" ).append( CR );
280    /**/    buf.append( "                orientation=\"vertical\">" ).append( CR );
281    
282                    int size = tabList.size();
283                    TabData tab ;
284                    for( int i=0; i<size; i++ ) {
285                            tab = tabList.get(i);
286                            if( tab.isOpen() ) {
287                                    buf.append( tab.getTab( style ) ).append( CR );
288                            }
289                            else {
290                                    buf.append( tab.getTab( null ) ).append( CR );
291                            }
292    
293                            if( orientation && (i != size-1) ) {
294                                    buf.append( "<ts:tabseparator />" ).append( CR );
295                            }
296                    }
297                    buf.append( "<ts:tabseparator defaultstyle=\"width:100%;height:100%\" />" ).append( CR );
298    
299                    buf.append( "        </ts:tabstrip>" ).append( CR );
300                    buf.append( "    </td>" ).append( CR );
301    
302                    buf.append( "    <td style=\"width:100%;height:100%;\">" ).append( CR );
303                    buf.append( "      <mp:multipage id=\"omp\"" ).append( CR );
304    /**/ // buf.append( "            style=\"border:solid 1px black;border-left:none;padding:5px;height:100%;width:100%;\">" ).append( CR );
305    /**/    buf.append( "            style=\"border:solid 1px black;border-left:none;padding:5px;height:100%;\">" ).append( CR );
306    
307                    for( int i=0; i<size; i++ ) {
308                            tab = tabList.get(i);
309                            buf.append( tab.getTabBody() ).append( CR );
310                    }
311                    buf.append( "      </mp:multipage>" ).append( CR );
312                    buf.append( "    </td>" ).append( CR );
313                    buf.append( "  </tr>" ).append( CR );
314                    buf.append( "</table>" ).append( CR );
315                    buf.append( JSV ).append( CR );         // vertical 時に IE7でサイズの取り方が異なる為の対策ã?
316    
317                    return buf.toString();
318            }
319    
320            /**
321             * 設定すã‚?タブオブジェクトを、å?部変数(List)に追åŠ?�—ますã?
322             *
323             * BODY 部に記述されã�?タブオブジェクトをé ?•ªに追åŠ?�—ますã?
324             * タブã?インのタグをå?力するå?合も、このé ?•ªで作æ?しますã?
325             *
326             * @og.rev 3.8.6.1 (2006/10/20) action属æ?を追åŠ?
327             * @og.rev 3.8.6.2 (2006/11/01) realIndex は、å?めての OPENタブとしますã?
328             *
329             * @param       data    タブオブジェクãƒ?
330             */
331            protected void addTabData( final TabData data ) {
332                    if( tabList == null ) { tabList = new ArrayList<TabData>(); }
333                    tabList.add( data );
334    
335                    // タブが選択されてã�?‚Œば、その値を選択番号とするã€?
336                    if( realIndex < 0 && data.isOpen() ) {
337                            realIndex = tabList.size()-1 ;
338                    }
339            }
340    
341            /**
342             * selectedIndex で設定されたタブかどã�?�‹を判断して返しますã?
343             *
344             * こã?メソãƒ?ƒ‰呼び出しã?、各タブから1回のみ有効としますã?
345             * 呼び出すたびに、å?部変数 realTabCount をカウントアãƒ??しますã?
346             * つまりã?そã?数がã?タブã?個数に対応しますã?
347             * タブã?、DELETE と判断されるケースがあるためã?実際の数より少なく登録されますã?
348             * そã?ときに、ここで自åˆ??身が選択されてã�?‚‹ことを判断して、実際の選択タブを
349             * JavaScript にæŒ?®šするときに使用しますã?
350             *
351             * @og.rev 3.8.6.2 (2006/11/01) 新規作æ?
352             *
353             * @return      選択タブかどã�?�‹
354             */
355            protected boolean isSelected() {
356                    realTabCount ++ ;
357                    return (selectedIndex == realTabCount) ;
358            }
359    
360            /**
361             * 【å»?­¢】タブã?方向ã?横åž?horizontal)か縦åž?vertical)を指定しまã�?初期値:横åž?ã€?
362             *
363             * @og.tag
364             * タブã?、上にタブが並ぶ横型と左にタブが並ぶ縦型がありますã?
365             * こã?属æ?では、横型ã?、horizontal 、縦型ã?、vertical を指定しますã?
366             * æŒ?®šã?、文字å?のæœ??のä¸?–‡字を見てã�?‚‹ã�?�‘ですã?で、HかVでも構いませんã€?
367             * 初期値は、横åž?horizontal) ですã?
368             *
369             * @param       ori タブã?方向ã?横åž?horizontal)か縦åž?vertical)を指å®?
370             * @deprecated クラスがå»?­¢されましたã€?
371             */
372            @Deprecated public void setOrientation( final String ori ) {
373                    String ori2 = nval( getRequestParameter( ori ),null );
374                    if( ori2 != null && ori2.length() > 0 ) {
375                            char ch = ori2.toUpperCase(Locale.JAPAN).charAt( 0 );
376                            if( ch == 'H' ) { orientation = true; }
377                            else if( ch == 'V' ) { orientation = false; }
378                            else {
379                                    String errMsg = "orientation のæŒ?®šã?、H(orizontal) またã?、V(ertical) ですã?"
380                                                            + " orientation=" + ori2 ;                      // 5.1.8.0 (2010/07/01) errMsg 修正
381                                    throw new HybsSystemException( errMsg );
382                            }
383                    }
384            }
385    
386            /**
387             * 【å»?­¢】タブã?高さをã?% 、px 、またã? "auto" でæŒ?®šしますã?
388             *
389             * @og.tag
390             * 縦åž?orientation="vertical")の初期値はã€?auto" ですã?
391             * 横åž?orientation="horizontal")の初期値はã€?200px"ですã?
392             * 横型ã?場合ã?ã€?auto" に設定するとã€?«˜さã�?"0" になってしまã�?�¾すã?
393             * å¿?�š、なにかã?値(px)でæŒ?®šするå¿?¦�がありますã?
394             * 縦åž?で "auto" に設定すると、各タブ毎に中の記述æƒ??によって、タブã?
395             * 大きさが替わりますã?タブをåˆ?‚Š替えた時にã€?�•和感がなã�?§˜にするにはã€?
396             * 高さを固å®?px æŒ?®?するとよいですã?
397             *
398             * @param       ht      高さ (% 、px 、またã? "auto" )
399             * @deprecated クラスがå»?­¢されましたã€?
400             */
401            @Deprecated public void setHeight( final String ht ) {
402                    height = nval( getRequestParameter( ht ),height );
403            }
404    
405            /**
406             * 【å»?­¢】タブã?å¹?‚’ % 、px 、またã? "auto" でæŒ?®šしますã?
407             *
408             * @og.tag
409             * 縦åž?orientation="vertical")の初期値はã€?auto" ですã?
410             * 横åž?orientation="horizontal")の初期値はã€?100%"ですã?
411             * ※ 縦型ã?場合ã?å¹?�« px で数字を設定してもã?有効に作用しませんã€?
412             *
413             * @param       wh      å¹?(% 、px 、またã? "auto" )
414             * @deprecated クラスがå»?­¢されましたã€?
415             */
416            @Deprecated public void setWidth( final String wh ) {
417                    width = nval( getRequestParameter( wh ),width );
418            }
419    
420            /**
421             * 【å»?­¢】å?期表示するペã?ジ番号を指定しまã�?初期値:0)ã€?
422             *
423             * @og.tag
424             * タブテーブルには、è¤?•°のタブを含みますã?初期表示時にどのタブを
425             * 表示するかをæŒ?®šしますã?
426             * ペã?ジ番号はã€?から始まる数字ですã?
427             * 初期値はã€?ですã?
428             *
429             * @og.rev 3.7.1.1 (2005/05/23) 新規作æ?
430             *
431             * @param       no      初期表示するペã?ジ番号(0..)
432             * @deprecated クラスがå»?­¢されましたã€?
433             */
434            @Deprecated public void setSelectedIndex( final String no ) {
435                    selectedIndex = nval( getRequestParameter( no ),selectedIndex );
436            }
437    
438            /**
439             * 【å»?­¢】å?期表示時ã?タブに与えã‚?style 属æ?を指定しますã?
440             *
441             * @og.tag
442             * ts:tab 本体では、å?期選択時のスタイルシートを、defaultStyle と
443             * selectedStyle で与えるå¿?¦�がありますã?これは、id 属æ?を設定してã€?
444             * 外部でスタイルシートを定義する形式でæŒ?®šできませんã€?
445             * ここでæŒ?®šしã�?style 属æ? は、å?別の tabTag に与えã‚?style 属æ? より優先度は
446             * 低くなりますã?
447             *
448             * @og.rev 3.8.6.1 (2006/10/24) 新規追åŠ?
449             *
450             * @param       st タブに与えã‚?初期 style 属æ?
451             * @deprecated クラスがå»?­¢されましたã€?
452             */
453            @Deprecated public void setStyle( final String st ) {
454                    style = nval( getRequestParameter( st ),style );
455            }
456    
457            /**
458             * こã?オブジェクトã?æ–?­—å?表現を返しますã?
459             * 基本çš?�«ãƒ?ƒ�ãƒ?‚°目çš?�«使用しますã?
460             *
461             * @return こã?クラスのæ–?­—å?表現
462             */
463            @Override
464            public String toString() {
465                    return org.opengion.fukurou.util.ToString.title( this.getClass().getName() )
466                                    .println( "VERSION"                     ,VERSION                )
467                                    .println( "height"                      ,height                 )
468                                    .println( "width"                       ,width                  )
469                                    .println( "selectedIndex"       ,selectedIndex  )
470                                    .println( "Other..."    ,getAttributes().getAttribute() )
471                                    .fixForm().toString() ;
472            }
473    }