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?šã‚ã‚?tab)
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             * ã“ã?メソãƒ?ƒ‰å‘¼ã³å‡ºã—ã?ã€å„タブã‹ã‚‰ï¼‘回ã®ã¿æœ‰åйã¨ã—ã¾ã™ã?
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    }