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 org.opengion.hayabusa.common.HybsSystem; 019import org.opengion.hayabusa.common.HybsSystemException; 020import org.opengion.fukurou.util.StringUtil; 021import org.opengion.fukurou.util.TagBuffer; 022 023/** 024 * 配置図/座席表を表す特殊系のビューです。 025 * 026 * itd タグは、ガントヘッダー部の TDタグの繰返しに使用されます。 027 * この繰返しは、ganttParam タグの minDuration で指定された間隔で行われます。 028 * (例えば、0.5 を指定すれば、半日単位で処理されます。) 029 * itd タグの colspan 属性を指定した場合は、itd 自身が、td タグに colspan を 030 * 追加すると共に、繰返し自身を、その指定数だけに抑制します。 031 * 具体的には、colspan="2" とすると、2回に一回しか、itd タグが呼び出されなく 032 * なります。 033 * 034 * @og.formSample 035 * ●形式:<og:iMatrix ... /> 036 * ●body:なし 037 * ●前提:headタグで、adjustEvent="Matrix" を指定してください。 038 * 039 * ●Tag定義: 040 * <og:iMatrix 041 * mode 【TAG】[Layout:レイアウト編集/Value:設定値の編集](初期値:Layout) 042 * countPro 【TAG】データノードの属性数( 行, 列, 名称, 値, 色, 編集可否, ステータス )(初期値:7) 043 * (SQL文のカラム数(非表示項目を除く)) 044 * inputWidth 【TAG】編集時の入力欄幅(px)(初期値:50px) 045 * cellWidth 【TAG】セル幅(px) (初期値:75px) 046 * cellHeight 【TAG】セル高さ(px) (初期値:30px) 047 * showStatus 【TAG】ステータスの出力を行うかどうか[[true:表示する/false:表示しない]](初期値:false) 048 * countStatus 【TAG】ステータスの種類数(1:会議、2:来客、3:出張、4:外出、5:休暇、6:他)(初期値:6) 049 * writable 【TAG】画面編集フラグを[true:可/false:不可](初期値:false) 050 * editColor 【TAG】セル背景色の編集可否[true:編集可/false:編集不可](初期値:false) 051 * separator 【TAG】セル名称と設定値の間の区切り文字(初期値:":") 052 * paramVal 【TAG】セルの設定値はパラメータより渡す(初期値:"") 053 * paramColor 【TAG】セルの背景色はパラメータより渡す(初期値:"") 054 * notEditBgColor 【TAG】編集不可のセルの背景色(初期値:gray) 055 * debug 【TAG】デバッグ情報を出力するかどうか[true/false]を指定します(初期値:false) 056 * /> 057 * 058 * ●使用例 059 * Select 文は、行, 列, 名称, 値, 色, 編集可否, ステータス の順で検索します。 060 * <og:query > 061 * select 行番号,列番号,セル名称,セル設定値,セル背景色,セルの編集可否,セルのステータス 062 * from レイアウトテーブル 063 * where ロケーションID = 'XXXX' 064 * order by 行番号,列番号 065 * </og:query> 066 * 067 * viewタグによるHTML出力 は、この通りにしてください。 068 * <og:view 069 * viewFormType = "HTMLDynamic" 070 * useScrollBar = "false" 071 * useHilightRow = "false" 072 * noMessage = "true" 073 * pageSize = "0" 074 * /> 075 * 076 * <og:iMatrix 077 * mode = "Layout/Value" 078 * countPro = "7" 079 * inputWidth = "80px" 080 * cellWidth = "100px" 081 * cellHeight = "30px" 082 * showStatus = "true/false" 083 * countStatus = "6" 084 * writable = "true/false" 085 * editColor = "true/false" 086 * separator = ":" 087 * paramVal = "{@XXX}" 088 * paramColor = "{@XXX}" 089 * notEditBgColor = "#XXXXXX" 090 * /> 091 * 092 * @og.rev 5.6.3.2 (2013/04/12) 新規作成 093 * @og.group 画面部品 094 * 095 * @version 5.0 096 * @author Kazuhiko Hasegawa 097 * @since JDK6.0, 098 */ 099public class ViewIMatrixTag extends CommonTagSupport { 100 //* このプログラムのVERSION文字列を設定します。 {@value} */ 101 private static final String VERSION = "5.6.3.2 (2013/04/12)" ; 102 103 private static final long serialVersionUID = 563220130412L ; 104 105 /** mode 引数に渡す事の出来る モードリスト */ 106 private static final String[] MODE_LIST = new String[] { "Layout" , "Value" }; 107 108 private TagBuffer tag = new TagBuffer( "iMatrix" ) ; 109 110 /** 111 * Taglibの終了タグが見つかったときに処理する doEndTag() を オーバーライドします。 112 * 113 * @return 後続処理の指示 114 */ 115 @Override 116 public int doEndTag() { 117 debugPrint(); // 4.0.0 (2005/02/28) 118 119 jspPrint( tag.makeTag() ); 120 121 return EVAL_PAGE ; // ページの残りを評価する。 122 } 123 124 /** 125 * タグリブオブジェクトをリリースします。 126 * キャッシュされて再利用されるので、フィールドの初期設定を行います。 127 * 128 */ 129 @Override 130 protected void release2() { 131 super.release2(); 132 tag = new TagBuffer( "iMatrix" ); 133 } 134 135 /** 136 * 【TAG】配置図/座席表の編集モード(Layout:レイアウト編集/Value:設定値の編集)を指定します(初期値:Layout)。 137 * 138 * @og.tag 139 * mode は、Layout:レイアウト編集を行うのか、Value:設定値の編集を行うかを指定します。 140 * Layout:レイアウト編集(CELLNAMEとFGCELLEDITの値を編集します。) 141 * Value :設定値の編集(VALUEとCOLORの値を編集します。) 142 * (adjustMatrix.jsの)初期値は、Layout:レイアウト編集 です。 143 * 144 * @param mode 編集モード(Layout:レイアウト編集/Value:設定値の編集) 145 */ 146 public void setMode( final String mode ) { 147 String tmpMode = StringUtil.nval( getRequestParameter( mode ),null ); 148 149 if( !check( tmpMode, MODE_LIST ) ) { 150 String errMsg = "指定のモード(mode)は指定できません。モード指定エラー" 151 + HybsSystem.CR 152 + "mode=[" + tmpMode + "] " 153 + HybsSystem.CR 154 + StringUtil.array2csv( MODE_LIST ) ; 155 throw new HybsSystemException( errMsg ); 156 } 157 158 tag.add( "mode",tmpMode ); 159 } 160 161 /** 162 * 【TAG】データノードの属性数( 行, 列, 名称, 値, 色, 編集可否, ステータス )を指定します(初期値:7)。 163 * 164 * @og.tag 165 * SQL文のカラム数(非表示項目を除く)を指定します。 166 * SQL文は、先頭から、「行, 列, 名称, 値, 色, 編集可否, ステータス」の順に検索する必要があります。 167 * これ以外に、表示項目になるカラムを指定する場合に、表示カラム数を設定します。 168 * 必要分だけ(行, 列, 名称, 値, 色, 編集可否, ステータス)の場合は、"7" を指定します。 169 * (adjustMatrix.jsの)初期値は、"7" です。 170 * 171 * @param countPro データノードの属性数 172 */ 173 public void setCountPro( final String countPro ) { 174 tag.add( "countPro",StringUtil.nval( getRequestParameter( countPro ),null ) ); 175 } 176 177 /** 178 * 【TAG】編集時の入力欄幅(px)を指定します(初期値:50px)。 179 * 180 * @og.tag 181 * 編集時の入力欄幅(px)を指定します。 182 * (adjustMatrix.jsの)初期値は、"50px" です。 183 * 184 * @param inputWidth 編集時の入力欄幅(px) 185 */ 186 public void setInputWidth( final String inputWidth ) { 187 tag.add( "inputWidth",StringUtil.nval( getRequestParameter( inputWidth ),null ) ); 188 } 189 190 /** 191 * 【TAG】セル幅(px)を指定します(初期値:75px)。 192 * 193 * @og.tag 194 * セル幅(px)を指定します。 195 * (adjustMatrix.jsの)初期値は、"75px" です。 196 * 197 * @param cellWidth セル幅(px) 198 */ 199 public void setCellWidth( final String cellWidth ) { 200 tag.add( "cellWidth",StringUtil.nval( getRequestParameter( cellWidth ),null ) ); 201 } 202 203 /** 204 * 【TAG】セル高さ(px)を指定します(初期値:30px)。 205 * 206 * @og.tag 207 * セル高さ(px)を指定します。 208 * (adjustMatrix.jsの)初期値は、"30px" です。 209 * 210 * @param cellHeight セル高さ(px) 211 */ 212 public void setCellHeight( final String cellHeight ) { 213 tag.add( "cellHeight",StringUtil.nval( getRequestParameter( cellHeight ),null ) ); 214 } 215 216 /** 217 * 【TAG】ステータスの出力を行うかどうか[true:表示する/false:表示しない]を指定します(初期値:false)。 218 * 219 * @og.tag 220 * ステータスの出力を行う場合は、../image/status_番号.png イメージを画面に表示します。 221 * 番号が、ステータス番号になります。 222 * (adjustMatrix.jsの)初期値は、false:表示しない です。 223 * 224 * @param showStatus ステータスの出力可否[true/false] 225 */ 226 public void setShowStatus( final String showStatus ) { 227 tag.add( "showStatus",StringUtil.nval( getRequestParameter( showStatus ),null ) ); 228 } 229 230 /** 231 * 【TAG】ステータスの種類数(1:会議、2:来客、3:出張、4:外出、5:休暇、6:他)を指定します(初期値:6)。 232 * 233 * @og.tag 234 * ステータスの種類数(1:会議、2:来客、3:出張、4:外出、5:休暇、6:他)は、編集ポップアップの作成に使います。 235 * 上記の場合、6種類になるため、countStatus="6" とします。 236 * 内部的には、status_0.png があります。 237 * (adjustMatrix.jsの)初期値は、"6" です。 238 * 239 * @param countStatus ステータスの種類数 240 */ 241 public void setCountStatus( final String countStatus ) { 242 tag.add( "countStatus",StringUtil.nval( getRequestParameter( countStatus ),null ) ); 243 } 244 245 /** 246 * 【TAG】画面編集を許可するかどうか[true:可/false:不可]を指定します(初期値:false)。 247 * 248 * @og.tag 249 * true:画面編集可/false:画面編集不可を指定します。 250 * ここでは、mode=[Layout/Value] に関係なく、false にすると編集不可になります。 251 * (adjustMatrix.jsの)初期値は、false:編集不可 です。 252 * 253 * @param writable 画面編集可否[true/false] 254 */ 255 public void setWritable( final String writable ) { 256 tag.add( "writable",StringUtil.nval( getRequestParameter( writable ),null ) ); 257 } 258 259 /** 260 * 【TAG】セル背景色の編集可否[true:編集可/false:編集不可]を指定します(初期値:false)。 261 * 262 * @og.tag 263 * セル背景色の編集可否[true:編集可/false:編集不可]を指定します。 264 * これは、mode="Value" で、writable="true" の場合のみ有効です。 265 * false にすると、COLOR属性の編集ができなくなります。 266 * (adjustMatrix.jsの)初期値は、false:編集不可 です。 267 * 268 * @param editColor セル背景色の編集可否[true/false] 269 */ 270 public void setEditColor( final String editColor ) { 271 tag.add( "editColor",StringUtil.nval( getRequestParameter( editColor ),null ) ); 272 } 273 274 /** 275 * 【TAG】セル名称と設定値の間の区切り文字を指定します(初期値:":")。 276 * 277 * @og.tag 278 * 画面上には、セル名称(CELLNAME)と設定値(VALUE)が表示されます。その時の、区切り文字を指定します。 279 * (adjustMatrix.jsの)初期値は、":" です。 280 * 281 * @param separator 区切り文字 282 */ 283 public void setSeparator( final String separator ) { 284 tag.add( "separator",StringUtil.nval( getRequestParameter( separator ),null ) ); 285 } 286 287 /** 288 * 【TAG】セルの設定値(VALUE)を指定します(初期値:"")。 289 * 290 * @og.tag 291 * セルの設定値(VALUE)を指定します。 292 * 293 * @param paramVal セルの設定値 294 */ 295 public void setParamVal( final String paramVal ) { 296 tag.add( "paramVal",StringUtil.nval( getRequestParameter( paramVal ),null ) ); 297 } 298 299 /** 300 * 【TAG】セルの背景色(COLOR)を指定します(初期値:"")。 301 * 302 * @og.tag 303 * セルの背景色を指定します。 304 * 305 * @param paramColor セルの背景色 306 */ 307 public void setParamColor( final String paramColor ) { 308 tag.add( "paramColor",StringUtil.nval( getRequestParameter( paramColor ),null ) ); 309 } 310 311 /** 312 * 【TAG】編集不可のセルの背景色を指定します(初期値:gray)。 313 * 314 * @og.tag 315 * 編集不可のセルの背景色を指定します。 316 * (adjustMatrix.jsの)初期値は、"gray" です。 317 * 318 * @param notEditBgColor 編集不可のセルの背景色 319 */ 320 public void setNotEditBgColor( final String notEditBgColor ) { 321 tag.add( "notEditBgColor",StringUtil.nval( getRequestParameter( notEditBgColor ),null ) ); 322 } 323 324 /** 325 * タグの名称を、返します。 326 * 自分自身のクラス名より、自動的に取り出せないため、このメソッドをオーバーライドします。 327 * 328 * @return タグの名称 329 */ 330 @Override 331 protected String getTagName() { 332 return "iMatrix" ; 333 } 334 335 /** 336 * このオブジェクトの文字列表現を返します。 337 * 基本的にデバッグ目的に使用します。 338 * 339 * @return このクラスの文字列表現 340 */ 341 @Override 342 public String toString() { 343 return org.opengion.fukurou.util.ToString.title( this.getClass().getName() ) 344 .println( "VERSION" ,VERSION ) 345 .println( "tag" ,tag.makeTag() ) 346 .println( "Other..." ,getAttributes().getAttribute() ) 347 .fixForm().toString() ; 348 } 349}