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 020 import static org.opengion.fukurou.util.StringUtil.nval; 021 022 import java.util.concurrent.atomic.AtomicInteger; // 5.5.2.6 (2012/05/25) findbugs対å¿? 023 024 /** 025 * Queryç”»é¢ã®æ‹¡å¼µæ¤œç´¢é ˜åŸŸã‚’指定用ã®ã‚¿ã‚°ã§ã™ã? 026 * 027 * 通常ã¯å±žæ?を何もセãƒ?ƒˆã›ãšã«Queryç”»é¢ã®éš?—メニューã«åˆ©ç”¨ã—ã¾ã™ã? 028 * queryButtonã‚¿ã‚°ãŒå˜åœ¨ã—ãªã??åˆã?ボタンをå?力ã—ãŸã„å ´æ‰?«IDã‚’ã‚»ãƒ?ƒˆã—ãŸspanã‚¿ã‚°ã‚? 029 * é…ç½®ã—ã?ãã?IDã‚’ã“ã®ã‚¿ã‚°ã®buttonId属æ?ã§æŒ?®šã—ã¦ä¸‹ã•ã?? 030 * ã‚¿ã‚°ã®å‹•ãã¨ã—ã¦ã¯ã«ã¯bodyå†?«æ›¸ã?Ÿå†?®¹ã‚’buttonIdã§æŒ?®šã—ãŸé?域ã«å‹•çš„ã«ä½œæ?ã—㟠031 * ボタン(åˆæœŸå€¤ã¯ã‚·ã‚¹ãƒ?ƒ パラメータã®ç”»åƒ?ã§ON/OFF制御å¯èƒ½ã¨ã—ã¾ã™ã? 032 * ãªãŠã?body部åˆ?«ã¯og:firldsetタグも利用å¯èƒ½ã§ã™ã? 033 * 034 * @og.formSample 035 * <pre> 036 * â—å½¢å¼ï¼? 037 * ・<og:hideMenu 038 * [ id = "uniqHideId" ] ã‚¿ã‚°ã§å›²ã‚れãŸéƒ¨åˆ?«ä»˜ã‘ã‚‹ID 039 * [ buttonId = "targetId" ] ボタンをå?力ã™ã‚‹å?æ‰??IDを指å®? 040 * [ defaultNone = "[true|false]" ] åˆæœŸçŠ¶æ…‹ã?é–‹é–‰æŒ?®? 041 * [ openButton = "open.png" ] é–‹ã(??ボタンã®ç”»åƒ? 042 * [ closeButton = "close.png" ] é–‰ã˜ã‚???ボタンã®ç”»åƒ? 043 * [ lbl = "MSG0076" ] ç”»åƒã?alt属æ?ã«ä»˜ã‘るメãƒ?‚»ãƒ¼ã‚¸(åˆæœŸå€¤:MSG0076) 044 * > 045 * â—body?šã‚ã‚?EVAL_BODY_INCLUDE:BODYをインクルードã—ã€{@XXXX} ã¯è§£æžã—ã¾ã›ã‚“) 046 * 047 * â—Tag定義?? 048 * <og:hideMenu 049 * id ã€TAG】ã“ã®ã‚¿ã‚°ã®BODY部åˆ?«IDを指定ã—ã¾ã? 050 * buttonId ã€TAG】画åƒã?タン出力å?ã®IDを指定ã—ã¾ã? 051 * defaultNone ã€TAG】å?期状態ã?é–‹é–‰æŒ?®š[[true:é–‰ã˜ã¦ã?‚‹/false:é–‹ã„ã¦ã?‚‹]を指定ã—ã¾ã?åˆæœŸå€¤:true) 052 * openButton ã€TAG】開ãã?タンã®ç”»åƒã‚’æŒ?®šã—ã¾ã? 053 * closeButton ã€TAG】閉ã˜ã‚‹ãƒœã‚¿ãƒ³ã®ç”»åƒã‚’æŒ?®šã—ã¾ã? 054 * lbl ã€TAG】ラベルリソースã®ãƒ©ãƒ™ãƒ«IDを指定ã—ã¾ã? 055 * debug ã€TAG】デãƒãƒƒã‚°æƒ??ã‚’å?力ã™ã‚‹ã‹ã©ã?‹[true/false]を指定ã—ã¾ã?åˆæœŸå€¤:false) 056 * > ... Body ... 057 * </og:hideMenu> 058 * 059 * â—使用ä¾? 060 * 例ï¼?通常ã®QUERYç”»é¢ã§ã®åˆ©ç”¨ 061 * <og:hideMenu> 062 * <table><tr> 063 * <og:column name="CLM"/> 064 * </tr></table> 065 * </og:hideMenu> 066 * 067 * 例ï¼?queryButtonã‚¿ã‚°ãŒå˜åœ¨ã—ãªã?жæ³ã§ã®åˆ©ç”¨(buttonIdã®æ˜Žç¤ºçš?ªæŒ?®? 068 * <span id="hideButtonSet"> </span> 069 * <og:hideMenu> 070 * ...... 071 * </og:hideMenu> 072 * </pre> 073 * @og.rev 4.3.6.0 (2009/04/01) æ–°è¦ä½œæ? 074 * @og.group ç”»é¢éƒ¨å“? 075 * 076 * @version 4.0 077 * @author Takahashi Masakazu 078 * @since JDK5.0, 079 */ 080 public class HideMenuTag extends CommonTagSupport { 081 //* ã“ã?プãƒã‚°ãƒ©ãƒ??VERSIONæ–?—å?ã‚’è¨å®šã—ã¾ã™ã? {@value} */ 082 private static final String VERSION = "5.7.1.2 (2013/12/20)" ; 083 084 private static final long serialVersionUID = 571220131220L ; 085 086 // private static volatile int uniqID = 1 ; // ユニã?クID作æ?用 087 private static final AtomicInteger uniqID = new AtomicInteger(1); // 5.5.2.6 (2012/05/25) findbugs対å¿? 088 089 private String id = null; // ã“ã?é ˜åŸŸã«ä»˜ã‘ã‚‹id 090 private String buttonId = "query-button-append"; // ボタンをå?力ã™ã‚‹å?æ‰??id 091 private boolean defaultNone = true; // é–‹é–‰åˆæœŸçжæ…? 092 093 private String openButton = HybsSystem.sys( "JSP" ) + "/image/" + HybsSystem.sys( "HIDE_OPEN_BUTTON" ); // é–‹ãボタン 094 private String closeButton = HybsSystem.sys( "JSP" ) + "/image/" + HybsSystem.sys( "HIDE_CLOSE_BUTTON" ); // é–‰ã˜ã‚‹ã?タン 095 private String hideClass = null; // 5.5.4.4 (2012/07/20) 096 097 /** 098 * Taglibã®é–‹å§‹ã‚¿ã‚°ãŒè¦‹ã¤ã‹ã£ãŸã¨ãã«å‡¦ç?™ã‚?doStartTag() ã‚?オーãƒã?ライドã—ã¾ã™ã? 099 * 100 * @og.rev 5.5.2.6 (2012/05/25) findbugs対応ã?staticフィールドã¸ã®æ›¸ãè¾¼ã¿ã«ã€AtomicInteger を利用ã—ã¾ã™ã? 101 * @og.rev 5.5.3.2 (2012/06/08) ç”»åƒã«alt属æ?を追åŠ?—ã¾ã™ã? 102 * @og.rev 5.5.4.4 (2012/07/20) hideClassを外部ã‹ã‚‰æŒ?®šå¯èƒ½ã«ã—ã¾ã? 103 * @og.rev 5.7.1.2 (2013/12/20) msg â‡?msglbl 変更 104 * 105 * @return 後続å?ç??æŒ?¤º( EVAL_BODY_INCLUDE ) 106 */ 107 @Override 108 public int doStartTag() { 109 String IMG = null; // imgã‚¿ã‚° 110 // String hideClass = "hideMenu" + String.valueOf( uniqID++ ); // ユニã?クã?Œã€JSå´ãŒã‚¯ãƒ©ã‚¹ã§åˆ¶å¾¡ã™ã‚‹ãŸã‚ã€? 111 // String hideClass = "hideMenu" + ( uniqID++ ); // ユニã?クã?Œã€JSå´ãŒã‚¯ãƒ©ã‚¹ã§åˆ¶å¾¡ã™ã‚‹ãŸã‚ã€? 112 // String hideClass = "hideMenu" + ( uniqID.getAndIncrement() ); // 5.5.2.6 (2012/05/25) findbugs対å¿? 113 if( hideClass == null || hideClass.length() == 0 ){ // 5.5.4.4 (2012/07/20) 外部æŒ?®šå¯¾å¿? 114 hideClass = "hideMenu" + ( uniqID.getAndIncrement() ); 115 } 116 117 118 // 5.5.3.2 (2012/06/08) ç”»åƒã«alt属æ?を追åŠ?—ã¾ã™ã? 119 String msg = getMsglbl(); 120 String msglbl = getMsglbl(); // 5.7.1.2 (2013/12/20) msg â‡?msglbl 変更 121 // if( msg == null ) { setLbl( "MSG0076" ); msg = getMsglbl(); } // åˆæœŸå€¤ã¯ã€MSG0076:拡張検索æ¡ä»¶ 122 if( msglbl == null ) { setLbl( "MSG0076" ); msglbl = getMsglbl(); } // åˆæœŸå€¤ã¯ã€MSG0076:拡張検索æ¡ä»¶ 123 124 StringBuilder buf = new StringBuilder( HybsSystem.BUFFER_MIDDLE ); 125 buf.append( "<div class=\"" ).append( hideClass ).append( "\" " ); 126 if( id != null){ buf.append( "id\"=" + id + "\" " ); } 127 if( defaultNone ){ 128 buf.append( "style=\"display: none;\"" ); 129 // IMG = " <img id=\"queryHide\" src=\"" + openButton + "\" alt=\"Expand\" border=\"0px\" "+ 130 // IMG = " <img id=\"queryHide\" src=\"" + openButton + "\" alt=\"" + msg + "\" border=\"0px\" "+ 131 IMG = " <img id=\"queryHide\" src=\"" + openButton + "\" alt=\"" + msglbl + "\" border=\"0px\" "+ 132 " onClick=\"hideClass( event, this, '" + hideClass + "', '" + openButton + "', '" + closeButton + "' )\"/> "; 133 } 134 else{ 135 // IMG = " <img id=\"queryHide\" src=\"" + closeButton + "\" alt=\"Expand\" border=\"0px\" "+ 136 // IMG = " <img id=\"queryHide\" src=\"" + closeButton + "\" alt=\"" + msg + "\" border=\"0px\" "+ 137 IMG = " <img id=\"queryHide\" src=\"" + closeButton + "\" alt=\"" + msglbl + "\" border=\"0px\" "+ 138 " onClick=\"hideClass( event, this, '" + hideClass + "', '" + openButton + "', '" + closeButton + "' )\"/> "; 139 } 140 buf.append( ">" ); 141 142 // æŒ?®šã—ãŸIDã«ãƒœã‚¿ãƒ³ç”»åƒã‚’放り込ã‚?‚¹ã‚¯ãƒªãƒ—トをå?åŠ? 143 if( buttonId != null && buttonId.length() > 0){ 144 buf.append( "<script language=\"javascript\">" ).append( HybsSystem.CR ); 145 buf.append( "$(function(){$('#" + buttonId + "').append(\"" ); 146 buf.append( IMG.replace( "\"", "\\\"" ) ); 147 buf.append( "\");})" ).append( HybsSystem.CR ); 148 buf.append( "</script>").append( HybsSystem.CR ); 149 } 150 151 jspPrint( buf.toString() ); 152 return( EVAL_BODY_INCLUDE ); // Body インクルーãƒ? extends TagSupport æ™? 153 } 154 155 /** 156 * Taglibã®çµ‚äº?‚¿ã‚°ãŒè¦‹ã¤ã‹ã£ãŸã¨ãã«å‡¦ç?™ã‚?doEndTag() ã‚?オーãƒã?ライドã—ã¾ã™ã? 157 * 158 * @return 後続å?ç??æŒ?¤º 159 */ 160 @Override 161 public int doEndTag() { 162 debugPrint(); 163 164 jspPrint( HybsSystem.CR + "</div>" ); 165 166 return(EVAL_PAGE); // ペã?ã‚¸ã®æ®‹ã‚Šã‚’評価ã™ã‚‹ã€? 167 } 168 169 /** 170 * タグリブオブジェクトをリリースã—ã¾ã™ã? 171 * ã‚ャãƒ?‚·ãƒ¥ã•れã¦å†åˆ©ç”¨ã•れるã?ã§ã€ãƒ•ィールドã?åˆæœŸè¨å®šã‚’行ã„ã¾ã™ã? 172 * 173 * @og.rev 5.5.4.4 (2012/07/20) hideClass対å¿? 174 */ 175 @Override 176 protected void release2() { 177 super.release2(); 178 id = null; 179 buttonId = "query-button-append"; 180 defaultNone = true; 181 openButton = HybsSystem.sys( "JSP" ) + "/image/" + HybsSystem.sys( "HIDE_OPEN_BUTTON" ); // é–‹ãボタン 182 closeButton = HybsSystem.sys( "JSP" ) + "/image/" + HybsSystem.sys( "HIDE_CLOSE_BUTTON" ); // é–‰ã˜ã‚‹ã?タン 183 hideClass = null; 184 } 185 186 /** 187 * ã€TAG】ã“ã®ã‚¿ã‚°ã®BODY部åˆ?«IDを指定ã—ã¾ã™ã? 188 * 189 * @og.tag 190 * é–‹é–‰ã•れる部åˆ?‚’囲ã£ã¦ã?‚‹DIVã«IDを指定ã—ã¾ã™ã? 191 * 特定ã?hideMenuã«ã‚¹ã‚¿ã‚¤ãƒ«ã‚’指定ã—ãŸã„å ´åˆç‰ã«åˆ©ç”¨ã—ã¦ä¸‹ã•ã?? 192 * 193 * @param input BODY部åˆ??ID 194 */ 195 @Override 196 public void setId( final String input) { 197 id = nval( getRequestParameter( input ), id ); 198 } 199 200 /** 201 * ã€TAG】画åƒã?タン出力å?ã®IDを指定ã—ã¾ã™ã? 202 * 203 * @og.tag 204 * åˆæœŸå€¤ã¯"query-button-append"ã§ã™ã? 205 * queryButtonã‚¿ã‚°ãŒå˜åœ¨ã™ã‚‹ç”»é¢ã§ã¯é€šå¸¸æŒ?®šã™ã‚‹å¿?¦ã?ã‚りã¾ã›ã‚“ã€? 206 * queryButtonã‚¿ã‚°ãŒå˜åœ¨ã—ãªã??åˆã?ã€åˆ¥é€”用æ„ã—ãŸspanã‚¿ã‚°ã® 207 * IDを指定ã™ã‚‹äº‹ã§ãƒœã‚¿ãƒ³ãŒè¡¨ç¤ºã•れã¾ã™ã? 208 * 209 * @param input 出力å?ã®ID 210 * 211 */ 212 public void setButtonId( final String input) { 213 buttonId = nval( getRequestParameter( input ), buttonId ); 214 } 215 216 /** 217 * ã€TAG】å?期状態ã?é–‹é–‰æŒ?®š[[true:é–‰ã˜ã¦ã?‚‹/false:é–‹ã„ã¦ã?‚‹]を指定ã—ã¾ã?åˆæœŸå€¤:true)ã€? 218 * 219 * @og.tag 220 * åˆæœŸçŠ¶æ…‹ãŒé–‹ã„ã¦ã?‚‹ã‹ã?é–‰ã˜ã¦ã?‚‹ã‹ã‚’æŒ?®šã—ã¾ã™ã? 221 * åˆæœŸå€¤ã¯é–‰ã˜ã‚?true)ã§ã™ã? 222 * 223 * @param flag é–‹é–‰æŒ?®?[true:é–‰ã˜ã¦ã?‚‹/false:é–‹ã„ã¦ã?‚‹] 224 * 225 */ 226 public void setDefaultNone( final String flag) { 227 defaultNone = nval( getRequestParameter( flag ), defaultNone ); 228 } 229 230 /** 231 * ã€TAG】開ãã?タンã®ç”»åƒã‚’æŒ?®šã—ã¾ã™ã? 232 * 233 * @og.tag 234 * ボタンã®ç”»åƒã‚’æŒ?®šã—ã¾ã™ã? 235 * 絶対パスã®å ´åˆã?ã€ã‚·ã‚¹ãƒ?ƒ ã®å…ˆé?ã‹ã‚‰ã€ç›¸å¯¾ãƒ‘スã®å ´åˆã?基底ã?å?”»é¢ã®ãƒ•ォルãƒ?¨ãªã‚Šã¾ã™ã? 236 * åˆæœŸå€¤ã¯jsp/imageフォルãƒ??ã®ã‚·ã‚¹ãƒ?ƒ パラメータHIDE_OPEN_BUTTONã®ãƒ•ァイルã§ã™ã? 237 * (/シスãƒ?ƒ ID/jsp/image/expand_u.png) 238 * 239 * @param name ç”»åƒãƒ•ァイルå? 240 * 241 */ 242 public void setOpenButton( final String name) { 243 openButton = nval( getRequestParameter( name ), openButton ); 244 } 245 246 /** 247 * ã€TAG】閉ã˜ã‚‹ãƒœã‚¿ãƒ³ã®ç”»åƒã‚’æŒ?®šã—ã¾ã™ã? 248 * 249 * @og.tag 250 * ボタンã®ç”»åƒã‚’æŒ?®šã—ã¾ã™ã? 251 * 絶対パスã®å ´åˆã?ã€ã‚·ã‚¹ãƒ?ƒ ã®å…ˆé?ã‹ã‚‰ã€ç›¸å¯¾ãƒ‘スã®å ´åˆã?基底ã?å?”»é¢ã®ãƒ•ォルãƒ?¨ãªã‚Šã¾ã™ã? 252 * åˆæœŸå€¤ã¯jsp/imageフォルãƒ??ã®ã‚·ã‚¹ãƒ?ƒ パラメータHIDE_CLOSE_BUTTONã®ãƒ•ァイルã§ã™ã? 253 * (/シスãƒ?ƒ ID/jsp/image/shrink_u.png) 254 * 255 * @param name ç”»åƒãƒ•ァイルå? 256 * 257 */ 258 public void setCloseButton( final String name) { 259 closeButton = nval( getRequestParameter( name ), closeButton ); 260 } 261 262 /** 263 * ã€TAG】開閉ã™ã‚‹classを指定ã—ã¾ã™ã? 264 * 265 * @og.tag 266 * 開閉を制御ã™ã‚‹ãŸã‚ã®class属æ?を外部ã‹ã‚‰æŒ?®šã—ã¾ã™ã? 267 * æŒ?®šã—ãªã??åˆã?自動ã§ãƒ¦ãƒ‹ã?クãªClassãŒã‚»ãƒ?ƒˆã•れã¾ã™ã? 268 * 269 * @param name クラス 270 * 271 * @og.rev 5.5.4.4 (2012/07/20) æ–°è¦è¿½åŠ? 272 */ 273 public void setHideClass( final String name) { 274 hideClass = nval( getRequestParameter( name ), hideClass ); 275 } 276 277 /** 278 * ã“ã?オブジェクトã?æ–?—å?表ç¾ã‚’è¿”ã—ã¾ã™ã? 279 * 基本çš?«ãƒ?ƒãƒ?‚°ç›®çš?«ä½¿ç”¨ã—ã¾ã™ã? 280 * 281 * @return ã“ã?ã‚¯ãƒ©ã‚¹ã®æ–?—å?è¡¨ç¾ 282 */ 283 @Override 284 public String toString() { 285 return org.opengion.fukurou.util.ToString.title( this.getClass().getName() ) 286 .println( "VERSION" ,VERSION ) 287 .println( "id" ,id ) 288 .println( "buttonId" ,buttonId ) 289 .println( "defaultNone" ,defaultNone ) 290 .println( "openButton" ,openButton ) 291 .println( "closeButton" ,closeButton ) 292 .println( "Other..." ,getAttributes().getAttribute() ) 293 .fixForm().toString() ; 294 } 295 }