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 */ 016package org.opengion.hayabusa.taglib; 017 018import static org.opengion.fukurou.util.StringUtil.nval; 019import org.opengion.hayabusa.html.ViewAjaxTreeTableParam; 020 021/** 022 * viewタグの viewFormType が HTMLAjaxTreeTable の場合にパラメータを設定します。 023 * 024 * ツリービューを表示する、ViewForm_HTMLAjaxTreeTable クラスに対して、各種パラメータを 025 * 設定します。 026 * パラメータが設定されていない場合は、ViewAjaxTreeTableParam の初期値が使用されます。 027 * (パラメータを使用するには、viewタグのuseParam 属性をtrueに設定する必要があります。) 028 * 029 * ここで定義された子データを取得するためのJSPは、別に作成する必要があります。 030 * 031 * また、levelClmに設定されたカラムは、レベルと展開を表示するための画像イメージが表示されます。 032 * 展開レベルに応じて階層を視覚的に表示する場合は、levelClmに設定されたカラムのレンデラーを 033 * 定義して下さい。 034 * (例:LVLのコードリソースとして、1→- 2→-- 3→--- 等) 035 * 036 * 各属性は、{@XXXX} 変数が使用できます。 037 * これは、ServletRequest から、XXXX をキーに値を取り出し、この変数に割り当てます。 038 * つまり、このXXXXをキーにリクエストすれば、この変数に値をセットすることができます。 039 * 040 * http://localhost/query.jsp?KEY1=VLA1&KEY2=VAL2 041 * 042 * のようなリクエストで、{@KEY1} とすれば、 VAL1 がセットされます。 043 * 044 * @og.formSample 045 * ●形式:<og:ajaxTreeParam keys="YYY,XXX,ZZZ" childJsp="getChildTag.jsp" /> 046 * ●body:なし 047 * 048 * ●Tag定義: 049 * <og:ajaxTreeParam 050 * childSearchKeys 【TAG】子データを取得するためのJSPに渡す引数のカラム名をセットします(初期値:"") 051 * childSearchJsp 【TAG】子データを取得するためのJSPをセットします(初期値:"getChildTag.jsp") 052 * levelClm 【TAG】階層レベルとして処理(展開を制御するための画像イメージを表示)するカラム名をセットします(初期値:"LVL") 053 * imgCollapsed 【TAG】折りたたまれた状態を表現するための画像ファイル名をセットします(初期値:"/jsp/image/collapsed.gif") 054 * imgExpanded 【TAG】展開された状態を表現するための画像ファイル名をセットします(初期値:"/jsp/image/expanded.gif") 055 * imgNoSub 【TAG】展開後子データが存在しない状態を表現するための画像ファイル名をセットします(初期値:"/jsp/image/nosub.gif") 056 * expandAll 【TAG】初期状態で全展開を行うかを指定します(初期値:false=全展開しない) 057 * childViewStartNo 【TAG】子データを表示するためのStartNoを指定します(初期値:-1) 058 * expCtrlClm 【TAG】初期全展開した際に最下位の要素の状態(展開済 or 下位あり)を制御するためのカラムを指定します(初期値:EXPAND_CONTROL) 059 * debug 【TAG】デバッグ情報を出力するかどうか[true/false]を指定します(初期値:false) 060 * /> 061 * 062 * ●使用例 063 * ViewFormTag の viewFormType が、HTMLAjaxTreeTable の場合に使用します。 064 * useParam 属性を設定しておかないと、使用されません。 065 * <og:view 066 * viewFormType = "HTMLAjaxTreeTable" 067 * command = "{@command}" 068 * startNo = "0" 069 * pageSize = "20" 070 * <b>useParam = "true"</b> 071 * > 072 * <og:ajaxTreeParam 073 * childSearchkeys = "YYY,XXX,ZZZ" 074 * childSearchJsp = "getChildTag.jsp" 075 * levelClm = "LVL" 076 * imgCollapsed = "collapsed.gif" 077 * imgExpanded = "expanded.gif" 078 * imgNoSub = "nosub.gif" 079 * /> 080 * </og:view > 081 * 082 * @og.group 画面表示 083 * 084 * @version 4.0 085 * @author Hiroki Nakamura 086 * @since JDK5.0, 087 */ 088public class ViewAjaxTreeParamTag extends ViewParamImpl { 089 /** このプログラムのVERSION文字列を設定します。 {@value} */ 090 private static final String VERSION = "6.4.2.0 (2016/01/29)" ; 091 private static final long serialVersionUID = 642020160129L ; 092 093 /** 094 * デフォルトコンストラクター 095 * 096 * @og.rev 6.4.2.0 (2016/01/29) PMD refactoring. Each class should declare at least one constructor. 097 */ 098 public ViewAjaxTreeParamTag() { super(); } // これも、自動的に呼ばれるが、空のメソッドを作成すると警告されるので、明示的にしておきます。 099 100 /** 101 * 【TAG】子データを取得するためのJSPに渡す引数のカラム名をセットします(初期値:"")。 102 * 103 * @og.tag 104 * 子データを取得するためのJSPに渡す引数のカラム名をセットします。 105 * 親データから子データを展開する際に、ここで設定されたキーの値をDBTableModelから 106 * 取得し、子データ検索用のJSPに渡します。 107 * 子データ検索用のJSPでは通常のリクエスト変数({@カラム名})として値を取得することが可能です。 108 * 109 * @param keys 子データ検索カラム 110 */ 111 public void setChildSearchKeys( final String keys ) { 112 putParam( ViewAjaxTreeTableParam.CHILD_SEARCH_KEYS, 113 nval( getRequestParameter( keys ),"" ) ); 114 } 115 116 /** 117 * 【TAG】子データを取得するためのJSPをセットします(初期値:"getChildTag.jsp")。 118 * 119 * @og.tag 120 * 子データを取得するためのJSPをセットします。 121 * このJSPで子データを取得し、viewタグでHTML出力した結果をパースし、子データとして 122 * 親データの直下に要素を挿入します。 123 * 子データ検索用のJSPでは通常のリクエスト変数({@カラム名})として値を取得することが可能です。 124 * 125 * @param jsp JSPファイル名 126 */ 127 public void setChildSearchJsp( final String jsp ) { 128 putParam( ViewAjaxTreeTableParam.CHILD_SEARCH_JSP, 129 nval( getRequestParameter( jsp ),"getChildTag.jsp" ) ); 130 } 131 132 /** 133 * 【TAG】階層レベルとして処理(展開を制御するための画像イメージを表示)するカラム名をセットします(初期値:"LVL")。 134 * 135 * @og.tag 136 * 階層レベルとして処理(展開を制御するための画像イメージを表示)するカラム名をセットします。 137 * 子データを取得した際に、ここで指定されたカラムは、親レベルに対して自動的に+1されます。 138 * 139 * @param clm レベルカラム 140 */ 141 public void setLevelClm( final String clm ) { 142 putParam( ViewAjaxTreeTableParam.LVL_CLM_KEY, 143 nval( getRequestParameter( clm ),"LVL" ) ); 144 } 145 146 /** 147 * 【TAG】折りたたまれた状態を表現するための画像ファイル名をセットします(初期値:"/jsp/image/collapsed.gif")。 148 * 149 * @og.tag 150 * 折りたたまれた状態を表現するための画像ファイル名をセットします。 151 * 「折りたたまれた状態」とは、未展開の状態、及び展開後に折りたたんだ状態の両方を指します。 152 * 153 * @param img 画像ファイル名 154 */ 155 public void setImgCollapsed( final String img ) { 156 putParam( ViewAjaxTreeTableParam.IMG_COLLAPSED, 157 nval( getRequestParameter( img ),"collapsed.gif" ) ); 158 } 159 160 /** 161 * 【TAG】展開された状態を表現するための画像ファイル名をセットします(初期値:"/jsp/image/expanded.gif")。 162 * 163 * @og.tag 164 * 展開された状態を表現するための画像ファイル名をセットします。 165 * 166 * @param img 画像ファイル名 167 */ 168 public void setImgExpanded( final String img ) { 169 putParam( ViewAjaxTreeTableParam.IMG_EXPANDED, 170 nval( getRequestParameter( img ),"expanded.gif" ) ); 171 } 172 173 /** 174 * 【TAG】展開後子データが存在しない状態を表現するための画像ファイル名をセットします(初期値:"/jsp/image/nosub.gif")。 175 * 176 * @og.tag 177 * 展開後子データが存在しない状態を表現するための画像ファイル名をセットします。 178 * 179 * @param img 画像ファイル名 180 */ 181 public void setImgNoSub( final String img ) { 182 putParam( ViewAjaxTreeTableParam.IMG_NO_SUB, 183 nval( getRequestParameter( img ),"nosub.gif" ) ); 184 } 185 186 /** 187 * 【TAG】初期状態で全展開を行うかを指定します(初期値:false=全展開しない)。 188 * 189 * @og.tag 190 * 初期状態で全展開を行うかを指定します。DBTableModel上のデータが展開済みのデータ 191 * であると仮定し、全展開を行った状態で表示します。 192 * ※ この属性をtrueに指定しても子データ取得用のJSPが再帰的に呼び出される訳では 193 * ありません。子データの取得は、予めqueryで行っておく必要があります。 194 * 195 * @og.rev 4.3.3.0 (2008/10/01) 新規作成 196 * 197 * @param flag 全展開を行うか [true:行う/false:行わない] 198 */ 199 public void setExpandAll( final String flag ) { 200 putParam( ViewAjaxTreeTableParam.EXPAND_ALL, 201 nval( getRequestParameter( flag ),"false" ) ); 202 } 203 204 /** 205 * 【TAG】子データを表示するためのStartNoを指定します(初期値:-1)。 206 * 207 * @og.tag 208 * 子データを取得するためのJSP内で使用します。 209 * 子データを取得し、元のDBTableModelにマージした後、子データのみを表示するため、 210 * ここでstartNoを指定して差分データを表示します。 211 * 212 * @og.rev 4.3.3.0 (2008/10/01) 新規作成 213 * 214 * @param no 子データ表示開始番号 215 */ 216 public void setChildViewStartNo( final String no ) { 217 putParam( ViewAjaxTreeTableParam.CHILD_VIEW_START_NO, 218 nval( getRequestParameter( no ),"-1" ) ); 219 } 220 221 /** 222 * 【TAG】初期全展開した際に最下位の要素の状態(展開済 or 下位あり)を制御するためのカラムを指定します(初期値:EXPAND_CONTROL)。 223 * 224 * @og.tag 225 * 初期全展開した際に最下位の要素の状態(展開済 or 下位あり)を制御するためのカラムを指定します。 226 * ここで指定されたカラムの値により、全展開された結果の最下位の要素の状態指定することができます。 227 * この機能を利用することで、第3レベルまで存在するデータの内、第2レベルまでを展開しておく、 228 * ということを実現することができます。 229 * ここで指定したカラムが持つ値の意味は以下の通りです。 230 * '0' or 'false' 展開済 (初期値) 231 * '1' or 'true' 未展開 ※展開ボタンを押すことで更に下位展開が可能 232 * 233 * なお、この機能は、全展開時(expandAll="true")のみ有効であり、通常の第1レベル展開の場合は、 234 * このカラムは無視されます。 235 * 236 * @og.rev 4.3.5.0 (2008/02/01) 新規作成 237 * 238 * @param key 最下位展開 [0,false:展開済/1,true:未展開] 239 */ 240 public void setExpCtrlClm( final String key ) { 241 putParam( ViewAjaxTreeTableParam.EXPAND_CONTROL_CLM_KEY, 242 nval( getRequestParameter( key ),"EXPAND_CONTROL" ) ); 243 } 244 245 /** 246 * タグの名称を、返します。 247 * 自分自身のクラス名より、自動的に取り出せないため、このメソッドをオーバーライドします。 248 * 249 * @og.rev 4.3.1.0 (2008/09/03) 新規追加 250 * 251 * @return タグの名称 252 * @og.rtnNotNull 253 */ 254 @Override 255 protected String getTagName() { 256 return "ajaxTreeParam" ; 257 } 258}