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 import org.opengion.hayabusa.common.HybsSystemException;
020 import org.opengion.fukurou.util.StringUtil;
021 import org.opengion.fukurou.util.TagBuffer;
022
023 /**
024 * 配置図?�座席表を表す特殊系のビューですã?
025 *
026 * itd タグは、ガントã?ãƒ?ƒ€ー部の TDタグの繰返しに使用されますã?
027 * こã?繰返しは、ganttParam タグの minDuration でæŒ?®šされた間隔で行われますã?
028 * (例えばã€?.5 を指定すれã?、半日単位で処ç�?�•れますã?)
029 * itd タグの colspan 属æ?を指定したå?合ã?、itd 自身がã?td タグに colspan ã‚?
030 * 追åŠ?�™ると共に、繰返し自身をã?そã?æŒ?®š数ã�?�‘に抑制しますã?
031 * 具体的には、colspan="2" とするとã€?¼’回にä¸?›žしか、itd タグが呼び出されなã�?
032 * なりますã?
033 *
034 * @og.formSample
035 * ●形式ï¼?lt;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】スãƒ??タスの種類数??:会議ã€?:来客ã€?:出張ã€?:外å?ã€?:休暇ã€?:他ï¼?初期値: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 */
099 public 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】スãƒ??タスの種類数??:会議ã€?:来客ã€?:出張ã€?:外å?ã€?:休暇ã€?:他)をæŒ?®šしまã�?初期値:6)ã€?
232 *
233 * @og.tag
234 * スãƒ??タスの種類数??:会議ã€?:来客ã€?:出張ã€?:外å?ã€?:休暇ã€?:他)ã?、編é›??ãƒ??アãƒ??の作æ?に使ã�?�¾すã?
235 * 上記ã?場合ã??–種類になるためã?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 }