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
024 import org.opengion.hayabusa.html.ViewAjaxTreeTableParam;
025
026 /**
027 * viewタグの viewFormType ã�?HTMLAjaxTreeTable の場合にパラメータを設定しますã?
028 *
029 * ãƒ?ƒªービューを表示する、ViewForm_HTMLAjaxTreeTable クラスに対して、各種パラメータã‚?
030 * 設定しますã?
031 * パラメータが設定されてã�?�ªã�??合ã?、ViewAjaxTreeTableParam の初期値が使用されますã?
032 * (パラメータを使用するには、viewタグのuseParam 属æ?をtrueに設定するå¿?¦�がありますã?)
033 *
034 * ここで定義された子データを取得するためã?JSPは、別に作æ?するå¿?¦�がありますã?
035 *
036 * またã?levelClmに設定されたカラãƒ??、レベルと展開を表示するための画像イメージが表示されますã?
037 * 展開レベルに応じて階層を視覚的に表示する場合ã?、levelClmに設定されたカラãƒ??レンãƒ?ƒ©ーã‚?
038 * 定義して下さã�??
039 * (ä¾?LVLのコードリソースとしてã€?â†? 2â†?- 3â†?-- ç?
040 *
041 * å�?±žæ?は、{@XXXX} 変数が使用できますã?
042 * これは、ServletRequest から、XXXX をキーに値を取りå?ã�?こã?変数に割り当てますã?
043 * つまりã?こã?XXXXをキーにリクエストすれã?、この変数に値をセãƒ?ƒˆすることができますã?
044 *
045 * http://localhost/query.jsp?KEY1=VLA1&KEY2=VAL2
046 *
047 * のようなリクエストで、{@KEY1} とすればã€?VAL1 がセãƒ?ƒˆされますã?
048 *
049 * @og.formSample
050 * ●形式ï¼?lt;og:ajaxTreeParam keys="YYY,XXX,ZZZ" childJsp="getChildTag.jsp" />
051 * ●body?šなã�?
052 *
053 * ●Tag定義??
054 * <og:ajaxTreeParam
055 * childSearchKeys 【TAG】子データを取得するためã?JSPに渡す引数のカラãƒ?��をセãƒ?ƒˆしまã�?初期値:"")
056 * childSearchJsp 【TAG】子データを取得するためã?JSPをセãƒ?ƒˆしまã�?初期値:"getChildTag.jsp")
057 * levelClm 【TAG】階層レベルとして処ç�?展開を制御するための画像イメージを表示)するカラãƒ?��をセãƒ?ƒˆしまã�?初期値:"LVL")
058 * imgCollapsed 【TAG】折りたたまれた状態を表現するための画像ファイル名をセãƒ?ƒˆしまã�?初期値:"/jsp/image/collapsed.gif")
059 * imgExpanded 【TAG】展開された状態を表現するための画像ファイル名をセãƒ?ƒˆしまã�?初期値:"/jsp/image/expanded.gif")
060 * imgNoSub 【TAG】展開後子データが存在しなã�?ж態を表現するための画像ファイル名をセãƒ?ƒˆしまã�?初期値:"/jsp/image/nosub.gif")
061 * expandAll 【TAG】å?期状態で全展開を行うかをæŒ?®šしまã�?初期値:false=全展開しなã�?
062 * childViewStartNo 【TAG】子データを表示するためのStartNoを指定しまã�?初期値:-1)
063 * expCtrlClm 【TAG】å?期å?展開した際にæœ?¸‹位ã?要ç´??状æ…?展開æ¸?or 下位あã‚?を制御するためのカラãƒ?‚’æŒ?®šしまã�?初期値:EXPAND_CONTROL)
064 * debug 【TAG】デバッグæƒ??をå?力するかどã�?�‹[true/false]を指定しまã�?初期値:false)
065 * />
066 *
067 * ●使用ä¾?
068 * ViewFormTag の viewFormType がã?HTMLAjaxTreeTable の場合に使用しますã?
069 * useParam 属æ?を設定しておかなã�?�¨、使用されませんã€?
070 * <og:view
071 * viewFormType = "HTMLAjaxTreeTable"
072 * command = "{@command}"
073 * startNo = "0"
074 * pageSize = "20"
075 * <b>useParam = "true"</b>
076 * >
077 * <og:ajaxTreeParam
078 * childSearchkeys = "YYY,XXX,ZZZ"
079 * childSearchJsp = "getChildTag.jsp"
080 * levelClm = "LVL"
081 * imgCollapsed = "collapsed.gif"
082 * imgExpanded = "expanded.gif"
083 * imgNoSub = "nosub.gif"
084 * />
085 * </og:view >
086 *
087 * @og.group 画面表示
088 *
089 * @version 4.0
090 * @author Hiroki Nakamura
091 * @since JDK5.0,
092 */
093 public class ViewAjaxTreeParamTag extends ViewParamTag {
094 //* こã?プログラãƒ??VERSIONæ–?—å?を設定しますã? {@value} */
095 private static final String VERSION = "4.3.5.0 (2008/02/01)" ;
096
097 private static final long serialVersionUID = 435020080201L ;
098
099 /**
100 * 【TAG】子データを取得するためã?JSPに渡す引数のカラãƒ?��をセãƒ?ƒˆしまã�?初期値:"")ã€?
101 *
102 * @og.tag
103 * 子データを取得するためã?JSPに渡す引数のカラãƒ?��をセãƒ?ƒˆしますã?
104 * 親ãƒ??タから子データを展開する際に、ここで設定されたキーの値をDBTableModelから
105 * 取得し、子データ検索用のJSPに渡しますã?
106 * 子データ検索用のJSPでは通常のリクエスト変数({@カラãƒ?��})として値を取得することが可能ですã?
107 *
108 * @param keys 引数として渡すカラãƒ?��
109 */
110 public void setChildSearchKeys( final String keys ) {
111 putParam( ViewAjaxTreeTableParam.CHILD_SEARCH_KEYS,
112 nval( getRequestParameter( keys ),"" ) );
113 }
114
115 /**
116 * 【TAG】子データを取得するためã?JSPをセãƒ?ƒˆしまã�?初期値:"getChildTag.jsp")ã€?
117 *
118 * @og.tag
119 * 子データを取得するためã?JSPをセãƒ?ƒˆしますã?
120 * こã?JSPで子データを取得し、viewタグでHTML出力した結果をパースしã?子データとして
121 * 親ãƒ??タの直下に要ç´?‚’挿入しますã?
122 * 子データ検索用のJSPでは通常のリクエスト変数({@カラãƒ?��})として値を取得することが可能ですã?
123 *
124 * @param jsp JSPファイルå�?
125 */
126 public void setChildSearchJsp( final String jsp ) {
127 putParam( ViewAjaxTreeTableParam.CHILD_SEARCH_JSP,
128 nval( getRequestParameter( jsp ),"getChildTag.jsp" ) );
129 }
130
131 /**
132 * 【TAG】階層レベルとして処ç�?展開を制御するための画像イメージを表示)するカラãƒ?��をセãƒ?ƒˆしまã�?初期値:"LVL")ã€?
133 *
134 * @og.tag
135 * 階層レベルとして処ç�?展開を制御するための画像イメージを表示)するカラãƒ?��をセãƒ?ƒˆしますã?
136 * 子データを取得した際に、ここでæŒ?®šされたカラãƒ??、親レベルに対して自動的に+1されますã?
137 *
138 * @param clm レベルカラãƒ?
139 */
140 public void setLevelClm( final String clm ) {
141 putParam( ViewAjaxTreeTableParam.LVL_CLM_KEY,
142 nval( getRequestParameter( clm ),"LVL" ) );
143 }
144
145 /**
146 * 【TAG】折りたたまれた状態を表現するための画像ファイル名をセãƒ?ƒˆしまã�?初期値:"/jsp/image/collapsed.gif")ã€?
147 *
148 * @og.tag
149 * 折りたたまれた状態を表現するための画像ファイル名をセãƒ?ƒˆしますã?
150 * 「折りたたまれた状態ã?とは、未展開の状態ã?及ã?展開後に折りたたんだ状態ã?両方を指しますã?
151 *
152 * @param img 画像ファイルå�?
153 */
154 public void setImgCollapsed( final String img ) {
155 putParam( ViewAjaxTreeTableParam.IMG_COLLAPSED,
156 nval( getRequestParameter( img ),"collapsed.gif" ) );
157 }
158
159 /**
160 * 【TAG】展開された状態を表現するための画像ファイル名をセãƒ?ƒˆしまã�?初期値:"/jsp/image/expanded.gif")ã€?
161 *
162 * @og.tag
163 * 展開された状態を表現するための画像ファイル名をセãƒ?ƒˆしますã?
164 *
165 * @param img 画像ファイルå�?
166 */
167 public void setImgExpanded( final String img ) {
168 putParam( ViewAjaxTreeTableParam.IMG_EXPANDED,
169 nval( getRequestParameter( img ),"expanded.gif" ) );
170 }
171
172 /**
173 * 【TAG】展開後子データが存在しなã�?ж態を表現するための画像ファイル名をセãƒ?ƒˆしまã�?初期値:"/jsp/image/nosub.gif")ã€?
174 *
175 * @og.tag
176 * 展開後子データが存在しなã�?ж態を表現するための画像ファイル名をセãƒ?ƒˆしますã?
177 *
178 * @param img 画像ファイルå�?
179 */
180 public void setImgNoSub( final String img ) {
181 putParam( ViewAjaxTreeTableParam.IMG_NO_SUB,
182 nval( getRequestParameter( img ),"nosub.gif" ) );
183 }
184
185 /**
186 * 【TAG】å?期状態で全展開を行うかをæŒ?®šしまã�?初期値:false=全展開しなã�?ã€?
187 *
188 * @og.tag
189 * 初期状態で全展開を行うかをæŒ?®šしますã?DBTableModel上ã?ãƒ??タが展開済みのãƒ??タ
190 * であると仮定し、å?展開を行った状態で表示しますã?
191 * ※ こã?属æ?をtrueにæŒ?®šしても子データ取得用のJSPがå?帰çš?�«呼び出される訳では
192 * ありません。子データの取得ã?、予めqueryで行っておくå¿?¦�がありますã?
193 *
194 * @og.rev 4.3.3.0 (2008/10/01) 新規作æ?
195 *
196 * @param flg 初期状態で全展開を行うã�?
197 */
198 public void setExpandAll( final String flg ) {
199 putParam( ViewAjaxTreeTableParam.EXPAND_ALL,
200 nval( getRequestParameter( flg ),"false" ) );
201 }
202
203 /**
204 * 【TAG】子データを表示するためのStartNoを指定しまã�?初期値:-1)ã€?
205 *
206 * @og.tag
207 * 子データを取得するためã?JSPå†?�§使用しますã?
208 * 子データを取得し、å?のDBTableModelにマã?ジした後ã?子データのみを表示するためã€?
209 * ここでstartNoを指定して差åˆ?ƒ‡ータを表示しますã?
210 *
211 * @og.rev 4.3.3.0 (2008/10/01) 新規作æ?
212 *
213 * @param no 子データを表示するためのStartNo
214 */
215 public void setChildViewStartNo( final String no ) {
216 putParam( ViewAjaxTreeTableParam.CHILD_VIEW_START_NO,
217 nval( getRequestParameter( no ),"-1" ) );
218 }
219
220 /**
221 * 【TAG】å?期å?展開した際にæœ?¸‹位ã?要ç´??状æ…?展開æ¸?or 下位あã‚?を制御するためのカラãƒ?‚’æŒ?®šしまã�?初期値:EXPAND_CONTROL)ã€?
222 *
223 * @og.tag
224 * 初期全展開した際にæœ?¸‹位ã?要ç´??状æ…?展開æ¸?or 下位あã‚?を制御するためのカラãƒ?‚’æŒ?®šしますã?
225 * ここでæŒ?®šされたカラãƒ??値により、å?展開された結果のæœ?¸‹位ã?要ç´??状態指定することができますã?
226 * こã?機è?を利用することで、第3レベルまで存在するãƒ??タのå†??第2レベルまでを展開しておくã€?
227 * とã�?�†ことを実現することができますã?
228 * ここでæŒ?®šしたカラãƒ?�Œ持つ値の意味は以下ã?通りですã?
229 * '0' or 'false' 展開æ¸?(初期値)
230 * '1' or 'true' 未展開 ※展開ボタンを押すことで更に下位展開が可能
231 *
232 * なおã?こã?機è?は、å?展開æ™?expandAll="true")のみ有効でありã€??常の第1レベル展開の場合ã?ã€?
233 * こã?カラãƒ??無視されますã?
234 *
235 * @og.rev 4.3.5.0 (2008/02/01) 新規作æ?
236 *
237 * @param key 全展開時にæœ?¸‹位ã?要ç´??状態を制御するためのカラãƒ?
238 */
239 public void setExpCtrlClm( final String key ) {
240 putParam( ViewAjaxTreeTableParam.EXPAND_CONTROL_CLM_KEY,
241 nval( getRequestParameter( key ),"EXPAND_CONTROL" ) );
242 }
243
244 /**
245 * タグの名称をã?返しますã?
246 * 自åˆ??身のクラス名よりã?自動的に取り出せなã�?�Ÿめã?こã?メソãƒ?ƒ‰をオーバã?ライドしますã?
247 *
248 * @og.rev 4.3.1.0 (2008/09/03) 新規追åŠ?
249 *
250 * @return タグの名称
251 */
252 @Override
253 protected String getTagName() {
254 return "ajaxTreeParam" ;
255 }
256
257 /**
258 * シリアライズ用のカスタãƒ?‚·リアライズ書き込みメソãƒ?ƒ‰
259 *
260 * @og.rev 4.3.1.0 (2008/09/03) 新規追åŠ?
261 * @serialData ä¸?ƒ¨のオブジェクトã?、シリアライズされませんã€?
262 *
263 * @param strm ObjectOutputStreamオブジェクãƒ?
264 * @throws IOException 入出力エラーが発生したå?å�?
265 */
266 private void writeObject( final ObjectOutputStream strm ) throws IOException {
267 strm.defaultWriteObject();
268 }
269
270 /**
271 * シリアライズ用のカスタãƒ?‚·リアライズ読み込みメソãƒ?ƒ‰
272 *
273 * ここでは、transient 宣è¨?�•れたå†?ƒ¨変数のå†??初期化がå¿?¦�なフィールドã?み設定しますã?
274 *
275 * @og.rev 4.3.1.0 (2008/09/03) 新規追åŠ?
276 * @serialData ä¸?ƒ¨のオブジェクトã?、シリアライズされませんã€?
277 *
278 * @param strm ObjectInputStreamオブジェクãƒ?
279 * @see #release2()
280 * @throws IOException シリアライズに関する入出力エラーが発生したå?å�?
281 * @throws ClassNotFoundException クラスを見つけることができなかったå?å�?
282 */
283 private void readObject( final ObjectInputStream strm ) throws IOException , ClassNotFoundException {
284 strm.defaultReadObject();
285 }
286 }