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 java.io.IOException;
021 import java.io.ObjectInputStream;
022 import java.io.ObjectOutputStream;
023 import java.util.ArrayList;
024 import java.util.List;
025 import java.util.Locale;
026
027 import org.opengion.fukurou.util.StringUtil;
028 import org.opengion.fukurou.util.TagBuffer;
029 import org.opengion.fukurou.util.XHTMLTag;
030 import org.opengion.hayabusa.common.HybsSystem;
031 import org.opengion.hayabusa.common.HybsSystemException;
032 import org.opengion.hayabusa.db.DBTableModel;
033 import org.opengion.hayabusa.db.DBTableModelUtil;
034
035 /** タブ形å¼ã?リンクを表示ã™ã‚‹ã‚¿ã‚°ã§ã™ã?
036 *
037 * ã“ã?ã‚¿ã‚°å½¢å¼ã?実æ?ã¯ã€ãƒªãƒ³ã‚¯ã®ãƒªã‚¹ãƒˆã§ã‚ã‚‹ãŸã‚ã€å®Ÿã?ç”»é¢ã®è¡¨ç¤ºã¯ã‚¿ãƒ¼ã‚²ãƒ?ƒˆã‚’指定ã—ã¦
038 * 別フレーãƒ?§è¡Œã†å¿?¦ãŒã‚りã¾ã™ã?
039 *
040 * タブã?æŒ?®šæ–¹æ³•ã«ã¤ã?¦ã¯ã€listType属æ?ã®æŒ?®šã«ã‚ˆã‚Šã€ã‚¯ã‚¨ãƒªç™ºè¡?DB)ã«ã‚ˆã‚Šå‹•çš„ã«ç”Ÿæ?ã™ã‚‹
041 * パターンã¨ã€ã‚¿ã‚°æŒ?®?TAG)ã«ã‚ˆã‚Šã€?™çš?«ç”Ÿæ?ã™ã‚‹ãƒ‘ターンãŒã‚りã¾ã™ã?
042 * listType属æ?ã«ä½•ã‚‚æŒ?®šã•れã¦ã?ªã??åˆã?ã€Body部åˆ?«è¨˜è¿°ã•れãŸå?容ã«ã‚ˆã‚Šã€è?動判定ã•れã¾ã™ã?
043 * ("SELECT"ã§å§‹ã¾ã£ã¦ã?‚‹å ´åˆã?DBã€ãれ以外ã?TAGã¨ã—ã¦å‡¦ç?
044 *
045 * â‘?istType属æ?ã?DB"ã®å ´å?
046 * 検索ã•れãŸå„カラãƒ??ã€ãã®é ?•ªã«ã‚ˆã‚Šæ¬¡ã®æ„味をæŒã¡ã¾ã™ã?
047 * [第1カラãƒ? タブã?åå‰ : リンク時ã?ã‚ーæƒ??ã€å¾Œè¿°ã®openTabName属æ?ã®ã‚ーã¨ã—ã¦ã‚‚使用 ※å¿??
048 * [第2カラãƒ? タブã?表示åç§° : タブã?表示åç§° æŒ?®šãŒãªã??åˆã?ã€ç¬¬1カラãƒ?Œè¡¨ç¤ºåç§°ã¨ãªã‚Šã¾ã™ã?
049 * [第3カラãƒ? タブã?リンクå…?RL : タブã?リンクå…?RL æŒ?®šãŒãªã??åˆã?ã€href属æ?ã®å€¤ãŒé©ç”¨ã•れã¾ã™ã?
050 * [第4カラãƒ? タブã?クラス属æ? : 個別ã®ã‚¿ãƒ–ã«ä»˜åŠ ã•れるクラス属æ? æŒ?®šãŒãªã??åˆã?ã€unselClass属æ?ã®å€¤ãŒé©ç”¨ã•れã¾ã™ã?
051 * [第5カラãƒ? タブã?ãƒãƒ¼ãƒ«ã‚º : タブã?ãƒãƒ¼ãƒ«ã‚ºã‚’指定ã—ã¾ã™ã?ユーザーãƒãƒ¼ãƒ«ã‚ºã¨ä¸??ã—ãªã?Œ‡å®šã—ãŸå?åˆã?ã€ã‚¿ãƒ–ãŒè¡¨ç¤ºã•れãªããªã‚Šã¾ã™ã?
052 * [第6カラãƒ? タブã?é¸æŠžå¯å¦ : タブã?é¸æŠžå¯å¦ã‚?true'or'false'ã§æŒ?®šã—ã¾ã™ã?falseを指定ã—ãŸå?åˆã?ã€ã‚¿ãƒ–ãŒè¡¨ç¤ºã•れãªããªã‚Šã¾ã™ã?
053 * (ãƒãƒ¼ãƒ«ã‚ºã§é¸æŠžä¸å¯ã«ãªã£ã¦ã?‚‹å ´åˆã?ã€ã“ã®å€¤ã¯ç„¡è¦–ã•れã¾ã?
054 * å?‚«ãƒ©ãƒ??値ã¯[カラãƒ?]=[値]ã®å½¢ã§ã€ãƒªãƒ³ã‚¯å…ˆã?JSPã«å¼•æ•°ã¨ã—ã¦æ¸¡ã•れã¾ã™ã?
055 * ã¾ãŸã?リンク先ã?JSPã«ã¤ã?¦ã¯ã€href属æ?ã§æŒ?®šã—ã¾ã™ã?
056 *
057 * â‘¡listType属æ?ã?TAG"ã®å ´å?
058 * tabListタグを記述ã—ã?個別ã«ã‚¿ãƒ–を定義ã—ã¾ã™ã?
059 * 制御å¯èƒ½ãªé ?›®ã¯ã€â‘ DBã®å ´åˆã¨åŒç‰ã§ã™ã?
060 * タブã?åå‰ã‚’定義ã™ã‚‹name属æ?ã¯ã€tabListã‚¿ã‚°ã§å¿?šå®šç¾©ã™ã‚‹å¿?¦ãŒã‚りã¾ã™ã?
061 * lbl属æ?ãŒæŒ‡å®šã•れã¦ã?ªã??åˆã?ã€name属æ?ã®ãƒ©ãƒ™ãƒ«åç§°ã‚’å–å¾—ã—ã¾ã™ã?
062 * タブã?リンクå…?SPåŠã?ã€ã‚¯ãƒ©ã‚¹å±žæ?ã«ã¤ã?¦ã¯ã€tabListã‚¿ã‚°ã§æŒ?®šãŒãªã??åˆã?tabListã‚¿ã‚°ã®å€¤ãŒé©ç”¨ã•れã¾ã™ã?
063 *
064 * [共通è¨å®š]
065 * åˆæœŸè¨å®šã§ã¯ã€ç¬¬1番目ã®"有効ãª"タブãŒè‡ªå‹•çš„ã«é–‹ã‹ã‚Œã¾ã™ã?(="true")
066 * å?‚¿ãƒ–ã?表示方法ã§ã€?¸æŠžä¸å¯èƒ½ãªã‚¿ãƒ–ãŒå˜åœ¨ã—ã¦ã?‚‹å ´åˆã?ã€ãれらをèªã¿é£›ã?ã—ãŸä¸Šã§ã€?有効ãª"タブを
067 * 検索ã—ã¾ã™ã?
068 * ã¾ãŸã?自動ã§é–‹ãタブã?ã€openTabName属æ?ã§æŒ?®šå¯èƒ½ã§ã‚りã€ã“れã«å¤‰æ•°ã‚’定義ã™ã‚‹ã“ã¨ã§ã€?
069 * ç”»é¢ãƒªãƒãƒ¼ãƒ‰æ™‚ã‚‚ã?é–‹ã„ã¦ã?Ÿã‚¿ãƒ–ã‚’å†åº¦é¸æŠžã•れãŸçŠ¶æ…‹ã§è¡¨ç¤ºã™ã‚‹ã“ã¨ãŒå¯èƒ½ã§ã™ã?
070 *
071 * é¸æŠžã—ãŸã‚¿ãƒ–åŠã³éžé¸æŠžã?タブã?æž?·šã‚„ã€èƒŒæ™¯è‰²ç‰ã‚’変更ã™ã‚‹å ´åˆã?ã€custom.cssã§ã‚¯ãƒ©ã‚¹ã‚’定義ã—ã?
072 * 変更ã—ã¦ä¸‹ã•ã??
073 *
074 * タブã?表示方å?水平方å?or 垂直方å?ã«ã¤ã?¦ã¯ã€orientation属æ?ã§å¤‰æ›´ã™ã‚‹ã“ã¨ãŒå¯èƒ½ã§ã™ã?
075 * (åˆæœŸå€¤ã¯ã€æ°´å¹³æ–¹å?
076 * 水平方å‘ã«ã—ãŸå ´åˆã?ã€listCount属æ?ã«ã‚ˆã‚Šå¼·åˆ¶çš?«ä¸?®šæ•°ã®ã‚¿ãƒ–を表示ã™ã‚‹æ¯Žã«ã€æ”¹è¡Œã‚’挿入ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã?
077 *
078 * ã“ã?タグを使用ã™ã‚‹å ´åˆã?ã€headã‚¿ã‚°ã§å¿?šuseTabLink="true"を指定ã—ã¦JavaScriptã‚’ãƒãƒ¼ãƒ‰ã—ã¦ä¸‹ã•ã??
079 *
080 * å?±žæ?ã¯ã€{@XXXX} 変数ãŒä½¿ç”¨ã§ãã¾ã™ã?
081 * ã“れã¯ã€ServletRequest ã‹ã‚‰ã€XXXX ã‚’ã‚ーã«å€¤ã‚’å–りå?ã?ã“ã?変数ã«å‰²ã‚Šå½“ã¦ã¾ã™ã?
082 * ã¤ã¾ã‚Šã?ã“ã?XXXXã‚’ã‚ーã«ãƒªã‚¯ã‚¨ã‚¹ãƒˆã™ã‚Œã?ã€ã“ã®å¤‰æ•°ã«å€¤ã‚’ã‚»ãƒ?ƒˆã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã?
083 *
084 * @og.formSample
085 * â—å½¢å¼ï¼?lt;og:tabLink href="…" … />
086 * â—body?šã‚ã‚?EVAL_BODY_BUFFERED:BODYを評価ã—ã?{@XXXX} ã‚’è§£æžã—ã¾ã?
087 *
088 * â—Tag定義??
089 * <og:tabLink
090 * listType ã€TAG】タブã?ä¸?¦§ã‚’ã©ã“ã‹ã‚‰å–å¾—ã™ã‚‹ã‹ã‚’指定ã—ã¾ã?åˆæœŸå€¤:AUTO)
091 * href ã€TAG】リンク先ã?JSPを指定ã—ã¾ã?åˆæœŸå€¤:result.jsp)
092 * target ã€TAG】リンクã®ã‚¿ãƒ¼ã‚²ãƒ?ƒˆã‚’指定ã—ã¾ã?åˆæœŸå€¤:RESULT)
093 * openTab ã€TAG】リンク表示ã«ã‚¿ãƒ–リンクをè?å‹•ã§é–‹ãã‹ã©ã?‹[true/false]を指定ã—ã¾ã?åˆæœŸå€¤:true[=é–‹ã])
094 * openTabName ã€TAG】最åˆã«é–‹ãタブリンクã®åå‰ã‚’指定ã—ã¾ã?
095 * constKeys ã€TAG】次画é¢ã«æ¸¡ã™å®šæ•°ãƒ‘ラメーターã®ã‚ーを指定ã—ã¾ã?
096 * constVals ã€TAG】次画é¢ã«æ¸¡ã™å®šæ•°ãƒ‘ラメーターã®å€¤ã‚’指定ã—ã¾ã?
097 * listCount ã€TAGã€?行辺りã«è¡¨ç¤ºã™ã‚‹ã‚¿ãƒ–ã?数を指定ã—ã¾ã?åˆæœŸå€¤:10)
098 * selClass ã€TAGã€‘é¸æŠžã‚¿ãƒ–ã?クラスを指定ã—ã¾ã?åˆæœŸå€¤:selTab)
099 * unselClass ã€TAG】éžé¸æŠžã‚¿ãƒ–ã?クラスを指定ã—ã¾ã?åˆæœŸå€¤:unselTab)
100 * orientation ã€TAG】タブã?æ–¹å‘ã?横åž?Horizontal)ã‹ç¸¦åž?Vertical)を指定ã—ã¾ã?åˆæœŸå€¤:横åž?
101 * width ã€TAG】タブリンクã®å¹?‚’ % ã€px ã€ã¾ãŸã? "auto" ã§æŒ?®šã—ã¾ã?
102 * height ã€TAG】タブã?高ã•ã‚’ã?% ã€px ã€ã¾ãŸã? "auto" ã§æŒ?®šã—ã¾ã?
103 * debug ã€TAG】デãƒãƒƒã‚°æƒ??ã‚’å?力ã™ã‚‹ã‹ã©ã?‹[true/false]を指定ã—ã¾ã?åˆæœŸå€¤:false)
104 * > ... Body ...
105 * </og:tabLink>
106 *
107 * â—使用ä¾?
108 * â‘?Bã‹ã‚‰ã‚¿ãƒ–リストをå–å¾—ã™ã‚‹å?å?
109 *
110 * Body部åˆ?«è¨˜è¿°ã•れãŸã‚¯ã‚¨ãƒªã‚ˆã‚Šã‚¿ãƒ–ä¸?¦§ã‚’生æˆã—ã¾ã™ã?
111 *
112 * <og:tabLink
113 * listType = "DB" タブã?ä¸?¦§ã‚’ã©ã“ã‹ã‚‰å–å¾—ã™ã‚‹ã‹
114 * href = "result.jsp" リンク先ã?JSP
115 * target = "RESULT" リンクターゲãƒ?ƒˆ
116 * openTab = "[true/false]" タブ表示後ã«ã‚¿ãƒ–を自動ã§é–‹ã
117 * openTabName = "{@PN} 自動ã§é–‹ãタブã?åå‰
118 * constKeys = "KEY1" 次画é¢ã«å›ºå®šã§æ¸¡ã™ã‚ーä¸?¦§
119 * constVals = "{@VAL1}" 次画é¢ã«å›ºå®šã§æ¸¡ã™å?ä¸?¦§
120 * listCount = "10" 1行辺りã«è¡¨ç¤ºã™ã‚‹ã‚¿ãƒ–ã?æ•°
121 * selClass = "selTab" é¸æŠžã‚¿ãƒ–ã?クラス
122 * unselClass = "unselTab" éžé¸æŠžã‚¿ãƒ–ã?クラス
123 * width = "100px" タブリンクã®å¹?
124 * height = "50px" タブリンクã®é«˜ã•
125 * >
126 * select PN,HINM,'tabClass','query.jsp','ADMIN','false' from XX01 where PN = '{@PN}' order by PN
127 * </og:tabLink>
128 *
129 * â‘¡tabListã‚¿ã‚°ã‹ã‚‰ã‚¿ãƒ–リストを生æ?ã™ã‚‹å ´å?
130 *
131 * tabListタグよりタブä¸?¦§ã‚’生æˆã—ã¾ã™ã?
132 *
133 * <og:tabLink
134 * listType = "DB" タブã?ä¸?¦§ã‚’ã©ã“ã‹ã‚‰å–å¾—ã™ã‚‹ã‹
135 * href = "result.jsp" リンク先ã?JSP
136 * target = "RESULT" リンクターゲãƒ?ƒˆ
137 * openTab = "[true/false]" タブ表示後ã«ã‚¿ãƒ–を自動ã§é–‹ã
138 * openTabName = "{@PN} 自動ã§é–‹ãタブã?åå‰
139 * constKeys = "KEY1" 次画é¢ã«å›ºå®šã§æ¸¡ã™ã‚ーä¸?¦§
140 * constVals = "{@VAL1}" 次画é¢ã«å›ºå®šã§æ¸¡ã™å?ä¸?¦§
141 * listCount = "10" 1行辺りã«è¡¨ç¤ºã™ã‚‹ã‚¿ãƒ–ã?æ•°
142 * selClass = "selTab" é¸æŠžã‚¿ãƒ–ã?クラス
143 * unselClass = "unselTab" éžé¸æŠžã‚¿ãƒ–ã?クラス
144 * width = "100px" タブリンクã®å¹?
145 * height = "50px" タブリンクã®é«˜ã•
146 * >
147 * <og:tabList name="TAB1" href="result1.jsp" keys="PN,CDK" vals="ABC,V" />
148 * <og:tabList name="TAB2" href="result2.jsp" keys="PN,CDK" vals="BCD,W" />
149 * <og:tabList name="TAB3" href="result3.jsp" keys="PN,CDK" vals="CDE,X" />
150 * </og:tabLink>
151 *
152 * @og.group ç”»é¢è¡¨ç¤º
153 *
154 * @version 0.9.0 2008/09/26
155 * @author Nakamura
156 * @since JDK1.4,
157 */
158 public class TabLinkTag extends CommonTagSupport {
159 private static final String VERSION = "5.1.8.0 (2010/07/01)";
160 private static final long serialVersionUID = 518020100701L;
161
162 /** リストã?ulã‚¿ã‚°ã®class属æ? */
163 private static final String UL_TAG_START = "<ul class=\"tabList\">";
164 private static final String UL_TAG_END = "</ul>";
165
166 /** タブ表示をå?れ替ãˆã‚‹ãŸã‚ã®JavaScript関数 */
167 private static final String CHANGE_TAB_SCRIPT = "changeTab";
168 private static final String INITIAL_TAB_SCRIPT = "initialTabSelect";
169 // "<script type=\"text/javascript\">addEvent(window,\"load\", initialTabSelect);</script>";
170
171 /** 自動ã§é–‹ãタブã«ä»˜åŠ ã•れるID */
172 private static final String FIRST_TAB_ID = "firstTab";
173
174 /** リストå–得タイプã?Enum */
175 private static enum LIST_TYPE { AUTO, DB, TAG };
176
177 /** å†?ƒ¨å¤‰æ•° */
178 private String query = null;
179 private transient List<TabData> tabData = new ArrayList<TabData>();
180
181 /** ã‚¿ã‚°ã§è¨å®šã™ã‚‹å±žæ? */
182 private LIST_TYPE type = LIST_TYPE.AUTO;
183 private String href = "result.jsp";
184 private String target = "RESULT";
185 private boolean openTab = true;
186 private String openTabName = null;
187 private String[] constKeys = null;
188 private String[] constVals = null;
189 private int listCount = 10;
190 private String selClass = "selTab";
191 private String unselClass = "unselTab";
192 private boolean isHorizontal = true;
193 private String width = "auto";
194 private String height = "auto";
195
196 /**
197 * Taglibã®é–‹å§‹ã‚¿ã‚°ãŒè¦‹ã¤ã‹ã£ãŸã¨ãã«å‡¦ç?™ã‚?doStartTag() ã‚?オーãƒã?ライドã—ã¾ã™ã?
198 *
199 * @return 後続å?ç??æŒ?¤º( EVAL_BODY_BUFFERED )
200 */
201 @Override
202 public int doStartTag() {
203 return( EVAL_BODY_BUFFERED ); // Body を評価ã™ã‚‹
204 }
205
206 /**
207 * Taglibã®ã‚¿ã‚°æœ¬ä½“を処ç?™ã‚?doAfterBody() ã‚?オーãƒã?ライドã—ã¾ã™ã?
208 *
209 * @return 後続å?ç??æŒ?¤º(SKIP_BODY)
210 */
211 @Override
212 public int doAfterBody() {
213 query = getBodyString().trim();
214 return ( SKIP_BODY );
215 }
216
217 /**
218 * Taglibã®çµ‚äº?‚¿ã‚°ãŒè¦‹ã¤ã‹ã£ãŸã¨ãã«å‡¦ç?™ã‚?doEndTag() ã‚?オーãƒã?ライドã—ã¾ã™ã?
219 *
220 * @og.rev 4.3.5.0 (2008/02/01) 処ç?Šã³å†?ƒ¨æ§‹é?を大å¹?«è¦‹ç›´ã?
221 *
222 * @return 後続å?ç??æŒ?¤º
223 */
224 @Override
225 public int doEndTag() {
226 debugPrint();
227 int rtnCode = EVAL_PAGE;
228
229 // 種別ã®è‡ªå‹•判定å?ç?
230 if( type == LIST_TYPE.AUTO ) {
231 if( query == null || query.length() == 0 ) {
232 type = LIST_TYPE.TAG;
233 }
234 else {
235 if( query.toUpperCase( Locale.JAPAN ).indexOf( "SELECT" ) >= 0 ) {
236 type = LIST_TYPE.DB;
237 }
238 else {
239 type = LIST_TYPE.TAG;
240 }
241 }
242 }
243
244 if( type == LIST_TYPE.DB ) {
245 makeTabsFromQuery();
246 }
247 else if( type == LIST_TYPE.TAG ) {
248 makeTabsFromTag();
249 }
250
251 // リンクä¸?¦§ãŒä½•ã‚‚è¨å®šã•れã¦ã?ªã??åˆã?ã€å?ç?—ãªã?
252 // if( tabData.size() > 0 ) {
253 if( ! tabData.isEmpty() ) {
254 makeTag();
255 }
256
257 return( rtnCode );
258 }
259
260 /**
261 * タグリブオブジェクトをリリースã—ã¾ã™ã?
262 * ã‚ャãƒ?‚·ãƒ¥ã•れã¦å†åˆ©ç”¨ã•れるã?ã§ã€ãƒ•ィールドã?åˆæœŸè¨å®šã‚’行ã„ã¾ã™ã?
263 */
264 @Override
265 protected void release2() {
266 super.release2();
267 query = null;
268 tabData = new ArrayList<TabData>();
269 type = LIST_TYPE.AUTO;
270 href = "result.jsp";
271 target = "RESULT";
272 openTab = true;
273 openTabName = null;
274 constKeys = null;
275 constVals = null;
276 listCount = 10;
277 selClass = "selTab";
278 unselClass = "unselTab";
279 isHorizontal = true;
280 width = "auto";
281 height = "auto";
282 }
283
284 /**
285 * DBã‹ã‚‰ã‚¿ãƒ–リンクã®ä¸?¦§ã‚’作æ?ã—ã¾ã™ã?
286 * DBTableModelãŒä½œæ?ã•れãªã?行数ã?ã®å ´å?ã¯ã€ãƒªãƒ³ã‚¯ä¸?¦§ã¯ç”Ÿæ?ã•れã¾ã›ã‚“ã€?
287 */
288 private void makeTabsFromQuery() {
289 DBTableModel table = DBTableModelUtil.makeDBTable( query, new String[0], getResource(), getApplicationInfo() );
290 if( table == null || table.getRowCount() == 0 ) {
291 return;
292 }
293
294 boolean isSetLabel = false;
295 boolean isSetHref = false;
296 boolean isSetClazz = false;
297 boolean isSetRoles = false;
298 boolean isSetVisible = false;
299 if( table.getColumnCount() > 1 ) { isSetLabel = true; }
300 if( table.getColumnCount() > 2 ) { isSetHref = true; }
301 if( table.getColumnCount() > 3 ) { isSetClazz = true; }
302 if( table.getColumnCount() > 4 ) { isSetRoles = true; }
303 if( table.getColumnCount() > 5 ) { isSetVisible = true; }
304
305 int rowCount = table.getRowCount();
306 String key = table.getColumnName( 0 );
307 for( int row=0; row<rowCount; row++ ) {
308 String value = table.getValue( row, 0 );
309 String label = ( isSetLabel ? StringUtil.nval( table.getValue( row, 1 ), value ) : value );
310 String newHref = ( isSetHref ? StringUtil.nval( table.getValue( row, 2 ), href ) : href );
311 String clazz = ( isSetClazz ? StringUtil.nval( table.getValue( row, 3 ), unselClass ) : unselClass );
312 boolean visible = ( isSetRoles ? getUser().isAccess( table.getValue( row, 4 ) ) : true );
313 if( visible ) {
314 visible = ( isSetVisible ? Boolean.valueOf( table.getValue( row, 5 ) ) : true );
315 }
316
317 // 第1カラãƒ??カラãƒ?ã¨ãã?値ã¯ãƒªãƒ³ã‚¯ã®å¼•æ•°ã«å«ã‚ã‚‹
318 newHref = XHTMLTag.addUrlEncode( newHref, XHTMLTag.urlEncode( key, value ) );
319
320 if( visible ) { // visible=falseã®å ´åˆã?表示ã—ãªã?
321 tabData.add( new TabData( newHref, value, label, clazz, visible ) );
322 }
323 }
324 }
325
326 /**
327 * タブリストã‹ã‚‰ã‚¿ãƒ–リンクã®ä¸?¦§ã‚’作æ?ã—ã¾ã™ã?
328 * (予ã‚addTagメソãƒ?ƒ‰ã«ã‚ˆã‚Šã€ãƒªãƒ³ã‚¯ä¸?¦§ãŒç™»éŒ²ã•れã¦ã?‚‹ãŸã‚ã€ã“ã“ã§ã¯ä½•も処ç?—ã¾ã›ã‚“)
329 *
330 * @see #addTag( String, String, String, String, boolean, String[], String[] )
331 */
332 private void makeTabsFromTag() {
333 // 何もã‚りã¾ã›ã‚“ã€?PMD エラー回é¿)
334 }
335
336 /**
337 * åã‚¿ã‚°ã§ã‚るタブリストタグã‹ã‚‰ã‚¿ãƒ–æƒ…å ±ã‚’ã‚»ãƒ?ƒˆã—ã¾ã™ã?
338 *
339 * @param hr ç”»é¢URL
340 * @param name タブã?åå‰
341 * @param label タブã?表示åç§°
342 * @param clz éžé¸æŠžçŠ¶æ…‹ã?タブã«ä»˜åŠ ã™ã‚‹classå?
343 * @param visible タブãŒé¸æŠžå¯èƒ½(ä¸èº«ã‚’表示ã§ãã‚‹ã‹ã©ã?‹)
344 * @param keys リンク先ã?JSPã«æ¸¡ã™ã‚ーä¸?¦§
345 * @param vals リンク先ã?JSPã«æ¸¡ã™å?ä¸?¦§
346 */
347 protected void addTag( final String hr, final String name, final String label, final String clz
348 ,final boolean visible, final String[] keys, final String[] vals ) {
349 String newHref = StringUtil.nval( hr, href );
350 if( keys != null && keys.length > 0 ) {
351 newHref = XHTMLTag.addUrlEncode( newHref, XHTMLTag.urlEncode( keys, vals ) );
352 }
353
354 if( visible ) { // visible=falseã®å ´åˆã?表示ã—ãªã?
355 tabData.add( new TabData( newHref, name, StringUtil.nval( label, getLabel( name ) ), StringUtil.nval( clz, unselClass ), visible ) );
356 }
357 }
358
359 /**
360 * リンクä¸?¦§ã‹ã‚‰HTMLタグを作æ?ã—ã¾ã™ã?
361 *
362 * @og.rev 5.0.2.0 (2009/11/01) openTab属æ?ãŒfalseã®å ´åˆã§ã‚‚ã?openTabNameã«æŒ?®šã•れãŸã‚¿ãƒ–ã«è‰²ä»˜ã‘ã™ã‚‹ã€?
363 * @og.rev 5.1.4.0 (2010/03/01) FF対å¿?FirstTabã®IDä»˜åŠ ã«é–¢ã™ã‚‹ãƒã‚°ã‚’ä¿®æ£
364 */
365 private void makeTag() {
366 StringBuilder buf = new StringBuilder();
367 buf.append( HybsSystem.CR );
368
369 boolean isExistFirst = false;
370 for( int idx=0; idx<tabData.size(); idx++ ) {
371 TabData tab = tabData.get( idx );
372
373 if( idx % listCount == 0 ) {
374 if( idx > 0 ) {
375 buf.append( UL_TAG_END ).append( HybsSystem.CR );
376 }
377 buf.append( UL_TAG_START ).append( HybsSystem.CR );
378 }
379
380 // openTabNameãŒå®šç¾©ã•れã¦ã?ªã??åˆã?ã€?ç•ªç›®ã®æœ‰åйãªã‚¿ãƒ–ã‚’é–‹ã
381 // 5.1.4.0 (2010/03/01) ãƒã‚°ä¿®æ£
382 if( !isExistFirst && tab.visible
383 && ( openTabName == null || openTabName.length() == 0 || openTabName.equals( tab.name ) ) ) {
384 buf.append( tab.makeLiTag( idx, true ) );
385 isExistFirst = true;
386 }
387 else {
388 buf.append( tab.makeLiTag( idx, false ) );
389 }
390 }
391 buf.append( UL_TAG_END ).append( HybsSystem.CR );
392
393 // タブを自動ã§é–‹ããŸã‚ã®JavaScriptタグを発è¡?
394 // 5.1.4.0 (2010/03/01) FF対�
395 if( openTab || ( openTabName != null && openTabName.length() > 0 ) ) {
396 buf.append( "<script type=\"text/javascript\">addEvent(window,\"load\", function() { " + INITIAL_TAB_SCRIPT + "(" );
397 buf.append( openTab );
398 buf.append( "); } );</script>" );
399 }
400
401 jspPrint( buf.toString() );
402 }
403
404 /**
405 * Tabãƒ??ã‚¿ を管ç?—ã¦ã?‚‹ å†?ƒ¨ã‚¯ãƒ©ã‚¹
406 *
407 * タブã?æƒ??を管ç?™ã‚‹ãŸã‚ã?簡易的ãªã€å?部クラスã§ã™ã?
408 */
409 private final class TabData {
410 // 引数ã¨ã—ã¦åˆæœŸè¨å®šã•れる変数
411 private final String href;
412 private final String name;
413 private final String label;
414 private final String clazz;
415 // ç¾çжã®å®Ÿè£?§ã¯ã€visible=falseã¯æ¸¡ã£ã¦ãã¾ã›ã‚“ãŒã?å°?¥çš?«disableã®çŠ¶æ…‹ã§
416 // 表示ã—ãŸã??åˆç‰ã«å¯¾å¿œã™ã‚‹ãŸã‚残ã—ã¦ãŠãã¾ã™ã?
417 private final boolean visible;
418
419 /**
420 * コンストラクタ
421 *
422 * @param hr ç”»é¢URL
423 * @param nm タブã?åå‰
424 * @param lbl タブã?表示åç§°
425 * @param clz éžé¸æŠžçŠ¶æ…‹ã?タブã«ä»˜åŠ ã™ã‚‹classå?
426 * @param vsb タブãŒé¸æŠžå¯èƒ½(ä¸èº«ã‚’表示ã§ãã‚‹ã‹ã©ã?‹)
427 */
428 public TabData( final String hr, final String nm, final String lbl, final String clz, final boolean vsb ) {
429 href = hr;
430 name = nm;
431 label = lbl;
432 clazz = clz;
433 visible = vsb;
434 }
435
436 /**
437 * liã‚¿ã‚°ã®éƒ¨åˆ??æ–?—å?を生æˆã—ã¾ã™ã?
438 *
439 * @param idx 生æ?ã—ãŸã‚¿ãƒ–ã?インãƒ?ƒƒã‚¯ã‚¹ç•ªå·
440 * @param isFirst å§‹ã‚ã®æœ‰åйãªã‚¿ãƒ–ã‹ã©ã?‹
441 * @return liã‚¿ã‚°æ–?—å?
442 */
443 private String makeLiTag( final int idx, final boolean isFirst ) {
444 StringBuilder buf = new StringBuilder();
445 buf.append( "<li class=\"" ).append( clazz ).append( "\"" );
446 buf.append( " style=\"" );
447 buf.append( " width: " ).append( width ).append( ";" );
448 buf.append( " height: " ).append( height ).append( ";" );
449 // 水平方å‘ã?å ´åˆã?ã¿float:leftã‚’ä»˜åŠ ã—ã?回り込ã¿(+解除)を行ã†ã€?
450 if( isHorizontal ) {
451 buf.append( " float: left;" );
452 if( idx % listCount == 0 ) {
453 // 行ãŒå¤‰ã‚ã£ãŸã‚¿ã‚¤ãƒŸãƒ³ã‚°ã§ã€ãƒ†ã‚ストã?折り返ã—をクリア??·¦ãƒžã?ジン(+10px)を空ã‘ã‚‹
454 buf.append( " clear: left; margin-left: " );
455 // buf.append( Math.round( idx/listCount ) * 10 ).append( "px;" );
456 // 4.3.4.4 (2009/01/01) Math.roundを呼ã³å‡ºã™æ„味ãŒãªã?Ÿã‚削除
457 buf.append( (idx/listCount) * 10 ).append( "px;" );
458 }
459 }
460 buf.append( " \"" );
461 buf.append( ">" );
462 buf.append( makeLinkTag( isFirst ) );
463 buf.append( "</li>" ).append( HybsSystem.CR );
464
465 return buf.toString();
466 }
467
468 /**
469 * aã‚¿ã‚°ã®éƒ¨åˆ??æ–?—å?を生æˆã—ã¾ã™ã?
470 * タブãŒé¸æŠžä¸å¯èƒ½ãªçŠ¶æ…‹ã?å ´åˆã?ã€ã‚¿ãƒ–ã?表示æ–?—å?ã‚’ãã®ã¾ã¾è¿”ã—ã¾ã™ã?
471 *
472 * @og.rev 4.3.6.4 戻るã?タンãŒã§ãªã?•題ã¸ã®å¯¾å¿?
473 *
474 * @param isFirst å§‹ã‚ã®æœ‰åйãªã‚¿ãƒ–ã‹ã©ã?‹
475 * @return liã‚¿ã‚°æ–?—å?
476 */
477 private String makeLinkTag( final boolean isFirst ) {
478 // if( !visible ) { return label; }
479
480 String newHref = XHTMLTag.addUrlEncode( href, XHTMLTag.urlEncode( constKeys, constVals ) );
481 // 4.3.6.4 (2009/05/01)
482 // タブ画é¢ã‹ã‚‰é·ç§»ã—ãŸæ™‚ã«ã€ã‚¿ãƒ–ã?èªè¾¼ã«ã‚ˆã‚Šã€ç”»é¢IDãŒæ¶ˆãˆã¦ã—ã¾ã?
483 // 戻るã?タンãŒã§ãªã?¸å?åˆã¸ã®å¯¾å¿?
484 newHref = XHTMLTag.addUrlEncode( newHref, "GAMENID=" + getGUIInfoAttri( "KEY" ) );
485 TagBuffer tag = new TagBuffer( "a" );
486 tag.add( "href", newHref );
487 tag.add( "name", name );
488 tag.add( "target", target );
489 tag.add( "onClick", CHANGE_TAB_SCRIPT + "( this, \"" + selClass + "\" );" );
490 if ( isFirst ) {
491 tag.add( "id", FIRST_TAB_ID );
492 }
493 tag.setBody( label );
494
495 return tag.makeTag();
496 }
497 }
498
499 /**
500 * ã€TAG】タブã?ä¸?¦§ã‚’ã©ã“ã‹ã‚‰å–å¾—ã™ã‚‹ã‹ã‚’指定ã—ã¾ã?åˆæœŸå€¤:AUTO)ã€?
501 *
502 * @og.tag
503 * タブã?ä¸?¦§ã‚’ã©ã“ã‹ã‚‰å–å¾—ã™ã‚‹ã‹ã‚’指定ã—ã¾ã™ã?
504 * ç¾çжã®å®Ÿè£?§ã¯ã€ã‚¯ã‚¨ãƒªã‚’発行ã—ã¦ä¸?¦§ã‚’生æˆã™ã‚‹ã?DBã€ã¨ã€åã‚¿ã‚°ã§ã‚ã‚‹
505 * tabListã‚¿ã‚°ã‚’å?挙ã—ã¦ã‚¿ãƒ–を定義ã™ã‚‹ã€ŒTAGã€ãŒå®Ÿè£?•れã¦ã?¾ã™ã?
506 *
507 * ã¾ãŸã?「AUTOã€ã¨æŒ?®šã—ãŸå?åˆã?ã€Body部åˆ??å†?®¹ã«å¿œã˜ã¦è‡ªå‹•çš„ã«åˆ¤å®šã•れã¾ã™ã?
508 * åˆæœŸå€¤ã¯ã€?½¢AUTOã€ã§ã™ã?
509 *
510 * @param tp タブä¸?¦§å–å¾—æ–¹æ³?「AUTOã€?
511 */
512 public void setListType( final String tp ) {
513 String typeStr = nval( getRequestParameter( tp ), null );
514 try {
515 type = LIST_TYPE.valueOf( typeStr );
516 }
517 catch ( IllegalArgumentException ex ) {
518 StringBuilder errBuf = new StringBuilder( 100 );
519 errBuf.append( "listType ã¯" );
520 for ( LIST_TYPE obj : LIST_TYPE.values() ) {
521 errBuf.append( ',' );
522 errBuf.append( obj.name() );
523 }
524 errBuf.append( "ã‹ã‚‰é¸ã‚“ã§ãã ã•ã„ã€? );
525 throw new HybsSystemException( errBuf.toString(), ex );
526 }
527 }
528
529 /**
530 * ã€TAG】リンク先ã?JSPを指定ã—ã¾ã?åˆæœŸå€¤:result.jsp)ã€?
531 *
532 * @og.tag
533 * リンク先ã?JSPを指定ã—ã¾ã™ã?
534 * ã“ã?タブリンクã¯ã€ã‚ãã¾ã§ã€Œã‚¿ãƒ–ã?形をã—ãŸãƒªãƒ³ã‚¯ã€ãªã®ã§ã€?
535 * target属æ?ã¨åˆã‚ã›ã¦ã‚»ãƒ?ƒˆã™ã‚‹å¿?¦ãŒã‚りã¾ã™ã?
536 * åˆæœŸå€¤ã¯ã€?½¢result.jspã€ã§ã™ã?
537 *
538 * @param hr リンク先ã?JSP
539 */
540 public void setHref( final String hr ) {
541 href = nval( getRequestParameter( hr ), href );
542 }
543
544 /**
545 * ã€TAG】リンクã®ã‚¿ãƒ¼ã‚²ãƒ?ƒˆã‚’指定ã—ã¾ã?åˆæœŸå€¤:RESULT)ã€?
546 *
547 * @og.tag
548 * リンクã®ã‚¿ãƒ¼ã‚²ãƒ?ƒˆã‚’指定ã—ã¾ã™ã?
549 * ã“ã?タブリンクã¯ã€ã‚ãã¾ã§ã€Œã‚¿ãƒ–ã?形をã—ãŸãƒªãƒ³ã‚¯ã€ãªã®ã§ã€?
550 * target属æ?ã‚’è¨å®šã—ã€åˆ¥ã®ãƒ•レーãƒ?«å®Ÿç”»é¢ã‚’表示ã™ã‚‹ã‚ˆã†ã«ã—ã¾ã™ã?
551 * åˆæœŸå€¤ã¯ã€?½¢RESULTã€ã§ã™ã?
552 *
553 * @param tgt リンクターゲãƒ?ƒˆ
554 */
555 public void setTarget( final String tgt ) {
556 target = nval( getRequestParameter( tgt ), target );
557 }
558
559 /**
560 * ã€TAG】リンク表示ã«ã‚¿ãƒ–リンクをè?å‹•ã§é–‹ãã‹ã©ã?‹[true/false]を指定ã—ã¾ã?åˆæœŸå€¤:true[=é–‹ã])ã€?
561 *
562 * @og.tag
563 * リンク表示ã«ã‚¿ãƒ–リンクをè?å‹•ã§é–‹ãã‹ã‚’æŒ?®šã—ã¾ã™ã?
564 * openTabName属æ?ãŒæŒ‡å®šã•れã¦ã?ªã??åˆã?自動ã§é–‹ãタブã?
565 * ã€?番目ã«è¡¨ç¤ºã•れãŸã‚¿ãƒ–リンクã€ã§ã™ã?
566 * æŒ?®šã•れã¦ã?‚‹å ´åˆã?ã€ãã®åå‰ã‚’æŒã¤ã€?番目ã€ã?タブãŒè‡ªå‹•ã§é–‹ã‹ã‚Œã¾ã™ã?
567 * タブãŒé¸æŠžä¸å¯èƒ½ãªçŠ¶æ…‹ã?å ´åˆã?ã€ã?1番目ã€ã?æ¡ä»¶ã‹ã‚‰é™¤å¤–ã•れã¾ã™ã?
568 * åˆæœŸå€¤ã¯ã€ã?true(é–‹ã)ã€ã§ã™ã?
569 *
570 * @param flag タブ表示後ã«è‡ªå‹•ã§ã‚¿ãƒ–ã‚’é–‹ãã‹[true:自動ã§é–‹ã/false:é–‹ã‹ãªã„]
571 */
572 public void setOpenTab( final String flag ) {
573 openTab = nval( getRequestParameter( flag ), openTab );
574 }
575
576 /**
577 * ã€TAG】最åˆã«é–‹ãタブリンクã®åå‰ã‚’指定ã—ã¾ã™ã?
578 *
579 * @og.tag
580 * æœ??ã«é–‹ãタブリンクã®ã‚ーを指定ã—ã¾ã™ã?
581 *
582 * @param name æœ??ã«é–‹ãタブリンクã®åå‰
583 */
584 public void setOpenTabName( final String name ) {
585 openTabName = nval( getRequestParameter( name ), openTabName );
586 }
587
588 /**
589 * ã€TAG】次画é¢ã«æ¸¡ã™å®šæ•°ãƒ‘ラメーターã®ã‚ーを指定ã—ã¾ã™ã?
590 *
591 * @og.tag
592 * 次画é¢ã«æ¸¡ã™å®šæ•°ãƒ‘ラメーターã®ã‚ーを指定ã—ã¾ã™ã?
593 * ã‚ーã¯ã‚«ãƒ³ãƒžåŒºåˆ?‚Šã§è¤?•°æŒ?®šãŒå¯èƒ½ã§ã™ã?
594 * パラメーターã®å€¤ã¯ã€constVals属æ?ã®æ•°ã¨ä¸??ã—ã¦ã?‚‹å¿?¦ãŒã‚りã¾ã™ã?
595 *
596 * @param keys 定数パラメーターã®ã‚ー
597 * @see #setConstVals( String )
598 */
599 public void setConstKeys( final String keys ) {
600 constKeys = getCSVParameter( keys );
601 }
602
603 /**
604 * ã€TAG】次画é¢ã«æ¸¡ã™å®šæ•°ãƒ‘ラメーターã®å€¤ã‚’指定ã—ã¾ã™ã?
605 *
606 * @og.tag
607 * 次画é¢ã«æ¸¡ã™å®šæ•°ãƒ‘ラメーターã®å€¤ã‚’指定ã—ã¾ã™ã?
608 * 値ã¯ã‚«ãƒ³ãƒžåŒºåˆ?‚Šã§è¤?•°æŒ?®šãŒå¯èƒ½ã§ã™ã?
609 * パラメーターã®å€¤ã¯ã€constKeys属æ?ã®æ•°ã¨ä¸??ã—ã¦ã?‚‹å¿?¦ãŒã‚りã¾ã™ã?
610 *
611 * @param vals 定数パラメーターã®ã‚ー
612 * @see #setConstKeys( String )
613 */
614 public void setConstVals( final String vals ) {
615 constVals = getCSVParameter( vals );
616 }
617
618 /**
619 * ã€TAGã€?行辺りã«è¡¨ç¤ºã™ã‚‹ã‚¿ãƒ–ã?数を指定ã—ã¾ã?åˆæœŸå€¤:10)ã€?
620 *
621 * @og.tag
622 * 1行辺りã«è¡¨ç¤ºã™ã‚‹ã‚¿ãƒ–ã?数を指定ã—ã¾ã™ã?
623 * 1行辺りã?タブã?æ•°ãŒã“ã®è¨å®šã‚’è¶?ˆã‚‹ã¨ã€è?å‹•çš„ã«æŠ˜ã‚Šè¿”ã—ã¾ã™ã?
624 * ã¾ãŸã?æŠ˜ã‚Šè¿”ã—æ¯Žã«ã€å·¦ã«10pxã®ãƒžã?ジンをè¨ã‘ã¾ã™ã?
625 * åˆæœŸå€¤ã¯ã€?0ã§ã™ã?
626 * ã“ã?属æ?ã¯ã€orientationãŒHorizontal(水平方å?ã®å ´åˆã?ã¿æœ‰åйã§ã™ã?
627 *
628 * @param cnt 1行辺りã«è¡¨ç¤ºã™ã‚‹ã‚¿ãƒ–ã?æ•°
629 */
630 public void setListCount( final String cnt ) {
631 listCount = nval( getRequestParameter( cnt ), listCount );
632 }
633
634 /**
635 * ã€TAGã€‘é¸æŠžã‚¿ãƒ–ã?クラスを指定ã—ã¾ã?åˆæœŸå€¤:selTab)ã€?
636 *
637 * @og.tag
638 * タブãŒé¸æŠžã•れã¦ã?‚‹çŠ¶æ…‹ã«ã‚ã‚‹å ´åˆã?ã€ã‚¿ãƒ–部åˆ??クラスåã‚’æŒ?®šã—ã¾ã™ã?
639 * ã“ã?クラスåを変更ã™ã‚‹å ´åˆã?ã€ãã®ã‚¯ãƒ©ã‚¹ã‚’custom/custom.cssç‰ã§å†å®šç¾©ã—ã¦ä¸‹ã•ã??
640 * åˆæœŸå€¤ã¯ã€selTabã§ã™ã?
641 *
642 * @param cls é¸æŠžã‚¿ãƒ–ã?クラスå?
643 */
644 public void setSelClass( final String cls ) {
645 selClass = nval( getRequestParameter( cls ), selClass );
646 }
647
648 /**
649 * ã€TAG】éžé¸æŠžã‚¿ãƒ–ã?クラスを指定ã—ã¾ã?åˆæœŸå€¤:unselTab)ã€?
650 *
651 * @og.tag
652 * タブãŒé¸æŠžã•れã¦ã?ªã?Š¶æ…‹ã«ã‚ã‚‹å ´åˆã?ã€ã‚¿ãƒ–部åˆ??クラスåã‚’æŒ?®šã—ã¾ã™ã?
653 * ã“ã?クラスåを変更ã™ã‚‹å ´åˆã?ã€ãã®ã‚¯ãƒ©ã‚¹ã‚’custom/custom.cssç‰ã§å†å®šç¾©ã—ã¦ä¸‹ã•ã??
654 * åˆæœŸå€¤ã¯ã€unselTabã§ã™ã?
655 *
656 * @param cls é¸æŠžã‚¿ãƒ–ã?クラスå?
657 */
658 public void setUnselClass( final String cls ) {
659 unselClass = nval( getRequestParameter( cls ), unselClass );
660 }
661
662 /**
663 * ã€TAG】タブã?æ–¹å‘ã?横åž?Horizontal)ã‹ç¸¦åž?Vertical)を指定ã—ã¾ã?åˆæœŸå€¤:横åž?ã€?
664 *
665 * @og.tag
666 * タブã?ã€ä¸Šã«ã‚¿ãƒ–ãŒä¸¦ã¶æ¨ªåž‹ã¨å·¦ã«ã‚¿ãƒ–ãŒä¸¦ã¶ç¸¦åž‹ãŒã‚りã¾ã™ã?
667 * ã“ã?属æ?ã§ã¯ã€æ¨ªåž‹ã?ã€Horizontal ã€ç¸¦åž‹ã?ã€Vertical を指定ã—ã¾ã™ã?
668 * æŒ?®šã?ã€æ–‡å—å?ã®æœ??ã®ä¸?–‡å—を見ã¦ã?‚‹ã?‘ã§ã™ã?ã§ã€Hã‹Vã§ã‚‚æ§‹ã„ã¾ã›ã‚“ã€?
669 *
670 * 縦åž?Vertical)ã«ã—ãŸå ´åˆã?å?‚¿ãƒ–è¦ç´??ã€ãƒ•レーãƒ?‚µã‚¤ã‚ºã®å¹?«åˆã‚ã›ã¦
671 * æœ?¤§ã§è¡¨ç¤ºã•れã¾ã™ã?å¹?‚’固定ã™ã‚‹å?åˆã?ã€width属æ?を指定ã—ã¦ä¸‹ã•ã??
672 *
673 * åˆæœŸå€¤ã¯ã€æ¨ªåž?Horizontal) ã§ã™ã?
674 *
675 * @param ori タブã?æ–¹å‘ã?横åž?Horizontal)ã‹ç¸¦åž?Vertical)を指å®?
676 */
677 public void setOrientation( final String ori ) {
678 String ori2 = nval( getRequestParameter( ori ),null );
679 if( ori2 != null && ori2.length() > 0 ) {
680 char ch = ori2.toUpperCase(Locale.JAPAN).charAt( 0 );
681 if( ch == 'H' ) { isHorizontal = true; }
682 else if( ch == 'V' ) { isHorizontal = false; }
683 else {
684 String errMsg = "orientation ã®æŒ?®šã?ã€H(orizontal) ã¾ãŸã?ã€V(ertical) ã§ã™ã?"
685 + " orientation=" + ori2 ; // 5.1.8.0 (2010/07/01) errMsg ä¿®æ£
686 throw new HybsSystemException( errMsg );
687 }
688 }
689 }
690
691 /**
692 * ã€TAG】タブリンクã®å¹?‚’ % ã€px ã€ã¾ãŸã? "auto" ã§æŒ?®šã—ã¾ã™ã?
693 *
694 * @og.tag
695 * åˆæœŸå€¤ã¯ã€?auto"(自動è¨å®? ã§ã™ã?
696 * autoã®å ´åˆã?横型表示ã§ã¯ã€æ–‡å—ã?å¹?«åˆã‚ã›ã¦è‡ªå‹•çš„ã«èª¿æ•´ã•れã€?
697 * 縦型表示ã®å ´åˆã?ã€ãƒ•レーãƒ?‚µã‚¤ã‚ºã«åˆã‚ã›ã¦æ‹¡å¤§ã—ã¦è¡¨ç¤ºã•れã¾ã™ã?
698 *
699 * @param wh å¹?(% ã€px ã€ã¾ãŸã? "auto" )
700 */
701 public void setWidth( final String wh ) {
702 width = nval( getRequestParameter( wh ),width );
703 }
704
705 /**
706 * ã€TAG】タブã?高ã•ã‚’ã?% ã€px ã€ã¾ãŸã? "auto" ã§æŒ?®šã—ã¾ã™ã?
707 *
708 * @og.tag
709 * タブã?高ã•ã‚’ã?% ã€px ã€ã¾ãŸã? "auto" ã§æŒ?®šã—ã¾ã?
710 * åˆæœŸå€¤ã¯ã€?auto"(自動è¨å®? ã§ã™ã?
711 *
712 * @param ht 高㕠(% ã€px ã€ã¾ãŸã? "auto" )
713 */
714 public void setHeight( final String ht ) {
715 height = nval( getRequestParameter( ht ),height );
716 }
717
718 /**
719 * シリアライズ用ã®ã‚«ã‚¹ã‚¿ãƒ?‚·ãƒªã‚¢ãƒ©ã‚¤ã‚ºæ›¸ãè¾¼ã¿ãƒ¡ã‚½ãƒ?ƒ‰
720 *
721 * @serialData ä¸?ƒ¨ã®ã‚ªãƒ–ジェクトã?ã€ã‚·ãƒªã‚¢ãƒ©ã‚¤ã‚ºã•れã¾ã›ã‚“ã€?
722 *
723 * @param strm ObjectOutputStreamオブジェク�
724 * @throws IOException 入出力エラーãŒç™ºç”Ÿã—ãŸå?å?
725 */
726 private void writeObject( final ObjectOutputStream strm ) throws IOException {
727 strm.defaultWriteObject();
728 }
729
730 /**
731 * シリアライズ用ã®ã‚«ã‚¹ã‚¿ãƒ?‚·ãƒªã‚¢ãƒ©ã‚¤ã‚ºèªã¿è¾¼ã¿ãƒ¡ã‚½ãƒ?ƒ‰
732 *
733 * ã“ã“ã§ã¯ã€transient 宣è¨?•れãŸå†?ƒ¨å¤‰æ•°ã®å†??åˆæœŸåŒ–ãŒå¿?¦ãªãƒ•ィールドã?ã¿è¨å®šã—ã¾ã™ã?
734 *
735 * @og.rev 5.1.8.0 (2010/07/01) tabData ã®åˆæœŸåŒ–å?ç?追åŠ?
736 * @serialData ä¸?ƒ¨ã®ã‚ªãƒ–ジェクトã?ã€ã‚·ãƒªã‚¢ãƒ©ã‚¤ã‚ºã•れã¾ã›ã‚“ã€?
737 *
738 * @param strm ObjectInputStreamオブジェク�
739 * @see #release2()
740 * @throws IOException シリアライズã«é–¢ã™ã‚‹å…¥å‡ºåŠ›ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ãŸå?å?
741 * @throws ClassNotFoundException クラスを見ã¤ã‘ã‚‹ã“ã¨ãŒã§ããªã‹ã£ãŸå?å?
742 */
743 private void readObject( final ObjectInputStream strm ) throws IOException, ClassNotFoundException {
744 strm.defaultReadObject();
745 tabData = new ArrayList<TabData>();
746 }
747
748 /**
749 * ã“ã?オブジェクトã?æ–?—å?表ç¾ã‚’è¿”ã—ã¾ã™ã?
750 * 基本çš?«ãƒ?ƒãƒ?‚°ç›®çš?«ä½¿ç”¨ã—ã¾ã™ã?
751 *
752 * @return ã“ã?ã‚¯ãƒ©ã‚¹ã®æ–?—å?表ç¾
753 */
754 @Override
755 public String toString() {
756 return org.opengion.fukurou.util.ToString.title(this.getClass().getName() )
757 .println( "VERSION" , VERSION )
758 .println( "listType" , type.toString() )
759 .println( "href" , href )
760 .println( "target" , target )
761 .println( "openTab" , openTab )
762 .println( "openTabName" , openTabName )
763 .println( "constKeys" , constKeys )
764 .println( "constVals" , constVals )
765 .println( "listCount" , listCount )
766 .println( "selClass" , selClass )
767 .println( "unselClass" , unselClass )
768 .println( "isHorizontal" , isHorizontal )
769 .println( "width" , width )
770 .println( "height" , height )
771 .println( "Other...", getAttributes().getAttribute() ).fixForm().toString();
772 }
773 }