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 import org.opengion.hayabusa.common.HybsSystemException; 020 021 /** 022 * タブ形å¼ã?リンクを表示ã™ã‚‹å ´åˆã«ã€ã‚¿ãƒ–ãã®ã‚‚ã?を表示ã™ã‚‹ã‚¿ã‚°ã§ã™ã? 023 * 024 * tabLinkタグを親タグã¨ã—ã?listType="TAG"を指定ã—ãŸå?åˆã«ã€ã“ã®ã‚¿ã‚°ã‚’使用ã—㦠025 * タブを個別ã«å®šç¾©ã—ã¾ã™ã? 026 * 027 * ã‚¿ã‚°ã®ä½¿ç”¨æ–¹æ³•ã«ã¤ã?¦ã¯ã€tabLinkã‚¿ã‚°ã®ãƒ‰ã‚ュメントをå‚ç?ã—ã¦ä¸‹ã•ã?? 028 * 029 * å?±žæ?ã¯ã€{@XXXX} 変数ãŒä½¿ç”¨ã§ãã¾ã™ã? 030 * ã“れã¯ã€ServletRequest ã‹ã‚‰ã€XXXXã‚’ã‚ーã«å€¤ã‚’å–りå?ã?ã“ã?変数ã«å‰²ã‚Šå½“ã¦ã¾ã™ã? 031 * ã¤ã¾ã‚Šã?ã“ã?XXXXã‚’ã‚ーã«ãƒªã‚¯ã‚¨ã‚¹ãƒˆã™ã‚Œã?ã€ã“ã®å¤‰æ•°ã«å€¤ã‚’ã‚»ãƒ?ƒˆã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã? 032 * 033 * @og.formSample 034 * â—å½¢å¼ï¼?lt;og:tabLink href="…" > <og:tabList name="TAB1" … /> … </og:tabLink > 035 * â—body?šãªã? 036 * 037 * â—Tag定義?? 038 * <og:tabList 039 * name â—‹ã?TAG】è¦ç´?«å¯¾ã—ã¦å›ºæœ‰ã?åå‰ã‚’ã¤ã‘ã¾ã?å¿??)ã€? 040 * lbl ã€TAG】ラベルリソースã®ãƒ©ãƒ™ãƒ«IDを指定ã—ã¾ã? 041 * href ã€TAG】リンク先ã?JSPを指定ã—ã¾ã?åˆæœŸå€¤:result.jsp) 042 * term ã€TAG】å?ç?™ã‚‹æ¡ä»¶ã‚’指定ã—ã¾ã?åˆæœŸå€¤:null) 043 * termList ã€TAG】å?ç?™ã‚‹æ¡ä»¶ã‚’å«ã‚?‚ˆã?ªæ–?—å?を指定ã—ã¾ã? 044 * delTerm ã€TAG】å?ç?—ãªã?‚¿ãƒ–ã‚’é¸æŠžã™ã‚‹æ¡ä»¶ã‚’指定ã—ã¾ã?åˆæœŸå€¤:null) 045 * delTermList ã€TAG】å?ç?—ãªã?¡ä»¶ã‚’å«ã‚?‚ˆã?ªæ–?—å?を指定ã—ã¾ã? 046 * unselClass ã€TAG】éžé¸æŠžã‚¿ãƒ–ã?クラスを指定ã—ã¾ã?åˆæœŸå€¤:unselTab) 047 * keys ã€TAG】リンク先ã?JSPã«å¼•æ•°ã¨ã—ã¦æ¸¡ã™ã‚ーをCSVå½¢å¼ã§æŒ?®šã—ã¾ã? 048 * vals ã€TAG】リンク先ã?JSPã«å¼•æ•°ã¨ã—ã¦æ¸¡ã™å?ã‚’CSVå½¢å¼ã§æŒ?®šã—ã¾ã? 049 * roles ã€TAG】ãƒãƒ¼ãƒ«ã‚’ã‚»ãƒ?ƒˆã—ã¾ã? 050 * debug ã€TAG】デãƒãƒƒã‚°æƒ??ã‚’å?力ã™ã‚‹ã‹ã©ã?‹[true/false]を指定ã—ã¾ã?åˆæœŸå€¤:false) 051 * /> 052 * 053 * â—使用ä¾? 054 * tabListã‚¿ã‚°ã‹ã‚‰ã‚¿ãƒ–リストを生æ?ã™ã‚‹å ´å? 055 * <og:tabLink 056 * listType = "DB" タブã?ä¸?¦§ã‚’ã©ã“ã‹ã‚‰å–å¾—ã™ã‚‹ã‹ 057 * href = "result.jsp" リンク先ã?JSP 058 * target = "RESULT" リンクターゲãƒ?ƒˆ 059 * openTab = "[true/false]" タブ表示後ã«ã‚¿ãƒ–を自動ã§é–‹ã 060 * openTabName = "{@PN} 自動ã§é–‹ãタブã?åå‰ 061 * constKeys = "KEY1" 次画é¢ã«å›ºå®šã§æ¸¡ã™ã‚ーä¸?¦§ 062 * constVals = "{@VAL1}" 次画é¢ã«å›ºå®šã§æ¸¡ã™å?ä¸?¦§ 063 * listCount = "10" 1行辺りã«è¡¨ç¤ºã™ã‚‹ã‚¿ãƒ–ã?æ•° 064 * selClass = "selTab" é¸æŠžã‚¿ãƒ–ã?クラス 065 * unselClass = "unselTab" éžé¸æŠžã‚¿ãƒ–ã?クラス 066 * width = "100px" タブリンクã®å¹? 067 * height = "50px" タブリンクã®é«˜ã• 068 * > 069 * <og:tabList name="TAB1" href="result1.jsp" keys="PN,CDK" vals="ABC,V" /> 070 * <og:tabList name="TAB2" href="result2.jsp" keys="PN,CDK" vals="BCD,W" /> 071 * <og:tabList name="TAB3" href="result3.jsp" keys="PN,CDK" vals="CDE,X" /> 072 * </og:tabLink> 073 * 074 * @og.group ç”»é¢è¡¨ç¤º 075 * 076 * @version 4.3.5.0 (2008/02/01) 077 * @author Nakamura 078 * @since JDK1.4, 079 */ 080 public class TabListTag extends CommonTagSupport { 081 //* ã“ã?プãƒã‚°ãƒ©ãƒ??VERSIONæ–?—å?ã‚’è¨å®šã—ã¾ã™ã? {@value} */ 082 private static final String VERSION = "4.3.5.0 (2009/02/01)" ; 083 084 private static final long serialVersionUID = 435020090201L ; 085 086 private String name = null; 087 private String href = null; 088 private String unselClass = null; 089 090 private String[] keys = null; 091 private String[] vals = null; 092 093 private String term = null; 094 private String termList = null; 095 private String delTerm = null; 096 private String delTermList = null; 097 private boolean visible = false; 098 private TabLinkTag tabLink = null; 099 100 /** 101 * Taglibã®é–‹å§‹ã‚¿ã‚°ãŒè¦‹ã¤ã‹ã£ãŸã¨ãã«å‡¦ç?™ã‚?doStartTag() ã‚?オーãƒã?ライドã—ã¾ã™ã? 102 * 103 * @return 後続å?ç??æŒ?¤º( SKIP_BODY ) 104 */ 105 @Override 106 public int doStartTag() { 107 tabLink = (TabLinkTag)findAncestorWithClass( this,TabLinkTag.class ); 108 if( tabLink == null ) { 109 String errMsg = "tabLink ã‚¿ã‚°ã® BODY部ã§ä½¿ç”¨ã—ã¦ãã ã•ã„ã€?; 110 throw new HybsSystemException( errMsg ); 111 } 112 return( SKIP_BODY ); // Body を評価ã™ã‚‹ã€? extends BodyTagSupport æ™? 113 } 114 115 /** 116 * Taglibã®çµ‚äº?‚¿ã‚°ãŒè¦‹ã¤ã‹ã£ãŸã¨ãã«å‡¦ç?™ã‚?doEndTag() ã‚?オーãƒã?ライドã—ã¾ã™ã? 117 * 118 * @return 後続å?ç??æŒ?¤º 119 */ 120 @Override 121 public int doEndTag() { 122 debugPrint(); 123 124 visible = getUser().isAccess( get( "roles" ) ); 125 126 // delTermãŒå„ªå…? 127 if( visible ) { 128 visible = ( delTermList == null || delTerm == null || delTermList.indexOf( delTerm ) < 0 ); 129 } 130 131 // delTermã§è¡¨ç¤ºå¯¾è±¡ã¨ãªã£ãŸå?åˆã«ã€termã‚’å?ç? 132 if( visible ) { 133 visible = ( termList == null || term == null || termList.indexOf( term ) >= 0 ); 134 } 135 136 tabLink.addTag( href, name, getMsglbl(), unselClass, visible, keys, vals ); 137 138 return( EVAL_PAGE ); 139 } 140 141 /** 142 * タグリブオブジェクトをリリースã—ã¾ã™ã? 143 * ã‚ャãƒ?‚·ãƒ¥ã•れã¦å†åˆ©ç”¨ã•れるã?ã§ã€ãƒ•ィールドã?åˆæœŸè¨å®šã‚’行ã„ã¾ã™ã? 144 */ 145 @Override 146 protected void release2() { 147 super.release2(); 148 name = null; 149 href = null; 150 term = null; 151 termList = null; 152 delTerm = null; 153 delTermList = null; 154 unselClass = null; 155 keys = null; 156 vals = null; 157 visible = false; 158 tabLink = null; 159 } 160 161 /** 162 * ã€TAG】è¦ç´?«å¯¾ã—ã¦å›ºæœ‰ã?åå‰ã‚’ã¤ã‘ã¾ã™ã? 163 * 164 * @og.tag 165 * è¦ç´?«å¯¾ã—ã¦å›ºæœ‰ã?åå‰ã‚’ã¤ã‘ã¾ã™ã? 166 * ã“ã“ã§è¨å®šã•れãŸåç§°ã¯ã€è?å‹•ã§ã‚¿ãƒ–を表示ã™ã‚‹ãŸã‚ã®openTabName属æ?判定ã«ã‚‚使用ã•れã¾ã™ã? 167 * 168 * @param nm タブå 169 */ 170 public void setName( final String nm ) { 171 name = nval( getRequestParameter( nm ), name ); 172 } 173 174 /** 175 * ã€TAG】リンク先ã?JSPを指定ã—ã¾ã?åˆæœŸå€¤:result.jsp)ã€? 176 * 177 * @og.tag 178 * リンク先ã?JSPを指定ã—ã¾ã™ã? 179 * ã“ã“ã§æŒ?®šã—ãªã??åˆã?ã€tagLinkã‚¿ã‚°ã®å€¤ãŒé©ç”¨ã•れã¾ã™ã? 180 * 181 * @param hr リンク先ã?JSP 182 */ 183 public void setHref( final String hr ) { 184 href = nval( getRequestParameter( hr ), href ); 185 } 186 187 /** 188 * ã€TAG】å?ç?™ã‚‹æ¡ä»¶ã‚’指定ã—ã¾ã?åˆæœŸå€¤:null)ã€? 189 * 190 * @og.tag 191 * termListã§ä¸Žãˆã‚‰ã‚ŒãŸæ–‡å—å?ã«ã€termæ–?—å?(大æ–??å°æ–‡å—ã?区別ã‚り)ã? 192 * å«ã¾ã‚Œã¦ã?‚Œã°ã€OPENé¸æŠžã‚¿ãƒ–ã¨ã—ã¦å‡¦ç?—ã¾ã™ã? 193 * OPENé¸æŠžã‚¿ãƒ–ã§ãªã?‚¿ãƒ–ã?ã€å?期å?OPENã«ãªã‚‰ãªã? ã‘ã§ã€ã‚¿ãƒ–ãã®ã‚‚ã?ã¯è¡¨ç¤ºã•れã¾ã™ã? 194 * OPENé¸æŠžã¨DELETEé¸æŠžãŒç«¶åˆã—ãŸå?åˆã?ã€DELETEé¸æŠžãŒå„ªå…ˆã•れã¾ã™ã? 195 * åˆæœŸå€¤ã¯ã€?null ã§ã™ã? 196 * 197 * @param flag 処ç?™ã‚‹æ¡ä»¶æ–?—å? 198 */ 199 public void setTerm( final String flag ) { 200 term = nval( getRequestParameter( flag ),term ); 201 } 202 203 /** 204 * ã€TAG】å?ç?™ã‚‹æ¡ä»¶ã‚’å«ã‚?‚ˆã?ªæ–?—å?を指定ã—ã¾ã™ã? 205 * 206 * @og.tag 207 * termListã§ä¸Žãˆã‚‰ã‚ŒãŸæ–‡å—å?ã«ã€termæ–?—å?(大æ–??å°æ–‡å—ã?区別ã‚り)ã? 208 * å«ã¾ã‚Œã¦ã?‚Œã°ã€OPENé¸æŠžã‚¿ãƒ–ã¨ã—ã¦å‡¦ç?—ã¾ã™ã? 209 * 例ãˆã°ã€?A","B","C" ã¨ã?†æ–?—å?ãŒã?term ã§æŒ?®šã•れ㟠210 * å ´åˆã«å‡¦ç?™ã‚‹ã‚ˆã?«ã—ãŸã??åˆã?ã€?A|B|C" ã‚’ã‚»ãƒ?ƒˆã—ã¾ã™ã? 211 * åˆæœŸå€¤ã¯ã€?null ã§ã™ã? 212 * 判定ã?ã€æ–‡å—å?ã‚’å«ã‚?‹ã©ã?‹ãªã®ã§ã€?¼‘æ–‡å—ã?ã¿ã®å ´åˆã?ã€?|"区åˆ?‚Šã«ã™ã‚‹ 213 * å¿?¦ã?ã‚りã¾ã›ã‚“ã€? 214 * OPENé¸æŠžã¨DELETEé¸æŠžãŒç«¶åˆã—ãŸå?åˆã?ã€DELETEé¸æŠžãŒå„ªå…ˆã•れã¾ã™ã? 215 * 216 * @param list 処ç?™ã‚‹æ¡ä»¶(indexOf ã«ã‚ˆã‚‹å«ã‚?å«ã¾ãªã?ˆ¤å®? 217 */ 218 public void setTermList( final String list ) { 219 termList = nval( getRequestParameter( list ),termList ); 220 } 221 222 /** 223 * ã€TAG】å?ç?—ãªã?‚¿ãƒ–ã‚’é¸æŠžã™ã‚‹æ¡ä»¶ã‚’指定ã—ã¾ã?åˆæœŸå€¤:null)ã€? 224 * 225 * @og.tag 226 * delTermListã§ä¸Žãˆã‚‰ã‚ŒãŸæ–‡å—å?ã«ã€delTermæ–?—å?(大æ–??å°æ–‡å—ã?区別ã‚り)ã? 227 * å«ã¾ã‚Œã¦ã?‚Œã°ã€DELETEé¸æŠžã‚¿ãƒ–ã¨ã—ã¦å‡¦ç?—ã¾ã™ã? 228 * DELETEé¸æŠžã‚¿ãƒ–ã?ã€ã‚¿ãƒ–ãã®ã‚‚ã?ãŒè¡¨ç¤ºã•れã¾ã›ã‚“ã€? 229 * ãŸã ã—ã?タブã?selectIndex ã¯ã€DELETEã•れãŸã‚¿ãƒ–ã‚‚å«ã‚ã¦ã€ã‚«ã‚¦ãƒ³ãƒˆã•れã¾ã™ã?ã§ã€? 230 * JSPã§ã®è¨å®šæ™‚ã®é ?•ªãŒã‚¤ãƒ³ãƒ?ƒƒã‚¯ã‚¹ç•ªå·ã«ãªã‚Šã¾ã™ã? 231 * OPENé¸æŠžã¨DELETEé¸æŠžãŒç«¶åˆã—ãŸå?åˆã?ã€DELETEé¸æŠžãŒå„ªå…ˆã•れã¾ã™ã? 232 * åˆæœŸå€¤ã¯ã€?null ã§ã™ã? 233 * 234 * @param flag DELETEé¸æŠžã‚¿ãƒ–æ–‡å—å? 235 */ 236 public void setDelTerm( final String flag ) { 237 delTerm = nval( getRequestParameter( flag ),delTerm ); 238 } 239 240 /** 241 * ã€TAG】å?ç?—ãªã?¡ä»¶ã‚’å«ã‚?‚ˆã?ªæ–?—å?を指定ã—ã¾ã™ã? 242 * 243 * @og.tag 244 * delTermListã§ä¸Žãˆã‚‰ã‚ŒãŸæ–‡å—å?ã«ã€delTermæ–?—å?(大æ–??å°æ–‡å—ã?区別ã‚り)ã? 245 * å«ã¾ã‚Œã¦ã?‚Œã°ã€DELETEé¸æŠžã‚¿ãƒ–ã¨ã—ã¦å‡¦ç?—ã¾ã™ã? 246 * 例ãˆã°ã€?A","B","C" ã¨ã?†æ–?—å?ãŒã?delTerm ã§æŒ?®šã•れ㟠247 * å ´åˆã«å‡¦ç?—ãªã?‚ˆã?«ã—ãŸã??åˆã?ã€?A|B|C" ã‚’ã‚»ãƒ?ƒˆã—ã¾ã™ã? 248 * åˆæœŸå€¤ã¯ã€?null ã§ã™ã? 249 * 判定ã?ã€æ–‡å—å?ã‚’å«ã‚?‹ã©ã?‹ãªã®ã§ã€?¼‘æ–‡å—ã?ã¿ã®å ´åˆã?ã€?|"区åˆ?‚Šã«ã™ã‚‹ 250 * å¿?¦ã?ã‚りã¾ã›ã‚“ã€? 251 * OPENé¸æŠžã¨DELETEé¸æŠžãŒç«¶åˆã—ãŸå?åˆã?ã€DELETEé¸æŠžãŒå„ªå…ˆã•れã¾ã™ã? 252 * 253 * @param list DELETEé¸æŠžã‚¿ãƒ–æ¡ä»¶æ–?—å?(indexOf ã«ã‚ˆã‚‹å«ã‚?å«ã¾ãªã?ˆ¤å®? 254 */ 255 public void setDelTermList( final String list ) { 256 delTermList = nval( getRequestParameter( list ),delTermList ); 257 } 258 259 /** 260 * ã€TAG】éžé¸æŠžã‚¿ãƒ–ã?クラスを指定ã—ã¾ã?åˆæœŸå€¤:unselTab)ã€? 261 * 262 * @og.tag 263 * タブãŒé¸æŠžã•れã¦ã?ªã?Š¶æ…‹ã«ã‚ã‚‹å ´åˆã?ã€ã‚¿ãƒ–部åˆ??クラスåã‚’æŒ?®šã—ã¾ã™ã? 264 * ã“ã?クラスåを変更ã™ã‚‹å ´åˆã?ã€ãã®ã‚¯ãƒ©ã‚¹ã‚’custom/custom.cssç‰ã§å†å®šç¾©ã—ã¦ä¸‹ã•ã?? 265 * tabListã‚¿ã‚°ã§æŒ?®šã•れãŸå€¤ã¯ã€tabLinkã‚¿ã‚°ã§æŒ?®šã•れãŸã‚‚ã?より優先ã•れã¾ã™ã? 266 * åˆæœŸå€¤ã¯ã€unselTabã§ã™ã? 267 * 268 * @param cls é¸æŠžã‚¿ãƒ–ã?クラスå? 269 */ 270 public void setUnselClass( final String cls ) { 271 unselClass = nval( getRequestParameter( cls ), unselClass ); 272 } 273 274 /** 275 * ã€TAG】リンク先ã?JSPã«å¼•æ•°ã¨ã—ã¦æ¸¡ã™ã‚ーをCSVå½¢å¼ã§æŒ?®šã—ã¾ã™ã? 276 * 277 * @og.tag 278 * リンク先ã?JSPã«å¼•æ•°ã¨ã—ã¦æ¸¡ã™ã‚ーをCSVå½¢å¼ã§æŒ?®šã—ã¾ã™ã? 279 * 280 * @param key ã‚ー(CSVå½¢å¼? 281 */ 282 public void setKeys( final String key ) { 283 keys = getCSVParameter( key ); 284 } 285 286 /** 287 * ã€TAG】リンク先ã?JSPã«å¼•æ•°ã¨ã—ã¦æ¸¡ã™å?ã‚’CSVå½¢å¼ã§æŒ?®šã—ã¾ã™ã? 288 * 289 * @og.tag 290 * リンク先ã?JSPã«å¼•æ•°ã¨ã—ã¦æ¸¡ã™å?ã‚’CSVå½¢å¼ã§æŒ?®šã—ã¾ã™ã? 291 * 292 * @param val 値(CSVå½¢å¼? 293 */ 294 public void setVals( final String val ) { 295 vals = getCSVParameter( val ); 296 } 297 298 /** 299 * ã€TAG】ãƒãƒ¼ãƒ«ã‚’ã‚»ãƒ?ƒˆã—ã¾ã™ã? 300 * 301 * @og.tag 302 * ã“ã“ã§æŒ?®šã—ãŸã‚«ãƒ©ãƒ?ƒãƒ¼ãƒ«ã‚’å?ã«ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼æ¯Žã?アクセス許å¯ãŒãƒã‚§ãƒ?‚¯ã•れã¾ã™ã? 303 * アクセス許å¯ã•れãªã?¨ã€è¡¨ç¤ºã•れã¾ã›ã‚“ã€? 304 * ã“ã?ãƒãƒ¼ãƒ«ã‚’指定ã—ãªã??åˆã?ã€ã‚«ãƒ©ãƒ?ƒªã‚½ãƒ¼ã‚¹ã®ãƒãƒ¼ãƒ«ãŒä½¿ç”¨ã•れã¾ã™ã? 305 * 306 * @param roles パラメータ 307 */ 308 public void setRoles( final String roles ) { 309 set( "roles",getRequestParameter( roles ) ); 310 } 311 312 /** 313 * ã“ã?オブジェクトã?æ–?—å?表ç¾ã‚’è¿”ã—ã¾ã™ã? 314 * 基本çš?«ãƒ?ƒãƒ?‚°ç›®çš?«ä½¿ç”¨ã—ã¾ã™ã? 315 * 316 * @return ã“ã?ã‚¯ãƒ©ã‚¹ã®æ–?—å?è¡¨ç¾ 317 */ 318 @Override 319 public String toString() { 320 return org.opengion.fukurou.util.ToString.title( this.getClass().getName() ) 321 .println( "VERSION" ,VERSION ) 322 .println( "name" ,name ) 323 .println( "href" ,href ) 324 .println( "term" ,term ) 325 .println( "termList" ,termList ) 326 .println( "delTerm" ,delTerm ) 327 .println( "delTermList" ,delTermList) 328 .println( "Other..." ,getAttributes().getAttribute() ) 329 .fixForm().toString() ; 330 } 331 }