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     = &quot;true&quot;</b>
076     *     &gt;
077     *         &lt;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     *        /&gt;
085     *     &lt;/og:view &gt;
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では通常のリクエスト変数({&#064;カラãƒ?��})として値を取得することが可能ですã?
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では通常のリクエスト変数({&#064;カラãƒ?��})として値を取得することが可能ですã?
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    }