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 * @og.rev 5.8.1.0 (2014/11/07) HTML5対応ã?javaScriptで、BODYがなã�?�¨入れ子になってしまã�??
114 * @return 後続å?ç�??æŒ?¤º
115 */
116 @Override
117 public int doEndTag() {
118 debugPrint(); // 4.0.0 (2005/02/28)
119
120 tag.setBody( "<!-- -->" ); // 5.8.1.0 (2014/11/07) HTML5対応ã?
121 jspPrint( tag.makeTag() );
122
123 return(EVAL_PAGE); // ペã?ジの残りを評価するã€?
124 }
125
126 /**
127 * タグリブオブジェクトをリリースしますã?
128 * キャãƒ?‚·ュされて再利用されるã?で、フィールドã?初期設定を行いますã?
129 *
130 */
131 @Override
132 protected void release2() {
133 super.release2();
134 tag = new TagBuffer( "iMatrix" );
135 }
136
137 /**
138 * 【TAG】é?置図?�座席表の編é›?ƒ¢ーãƒ?Layout:レイアウト編é›?Value:設定å?の編é›?を指定しまã�?初期値:Layout)ã€?
139 *
140 * @og.tag
141 * mode は、Layout:レイアウト編é›?‚’行うのかã?Value:設定å?の編é›?‚’行うかをæŒ?®šしますã?
142 * Layout:レイアウト編é›?CELLNAMEとFGCELLEDITの値を編é›?�—ますã?)
143 * Value :設定å?の編é›?VALUEとCOLORの値を編é›?�—ますã?)
144 * (adjustMatrix.jsの)初期値は、Layout:レイアウト編é›?ですã?
145 *
146 * @param mode 編é›?ƒ¢ーãƒ?Layout:レイアウト編é›?Value:設定å?の編é›?
147 */
148 public void setMode( final String mode ) {
149 String tmpMode = StringUtil.nval( getRequestParameter( mode ),null );
150
151 if( !check( tmpMode, MODE_LIST ) ) {
152 String errMsg = "æŒ?®šã?モーãƒ?mode)はæŒ?®šできません。モード指定エラー"
153 + HybsSystem.CR
154 + "mode=[" + tmpMode + "] "
155 + HybsSystem.CR
156 + StringUtil.array2csv( MODE_LIST ) ;
157 throw new HybsSystemException( errMsg );
158 }
159
160 tag.add( "mode",tmpMode );
161 }
162
163 /**
164 * 【TAG】データノã?ドã?属æ?数( è¡? åˆ? 名称, 値, 色, 編é›?�¯否, スãƒ??タス )を指定しまã�?初期値:7)ã€?
165 *
166 * @og.tag
167 * SQLæ–??カラãƒ?•°(非表示é ?›®を除ã�?を指定しますã?
168 * SQLæ–??、å?頭から、ã?è¡? åˆ? 名称, 値, 色, 編é›?�¯否, スãƒ??タス」ã?é ?�«検索するå¿?¦�がありますã?
169 * これ以外に、表示é ?›®になるカラãƒ?‚’æŒ?®šするå?合に、表示カラãƒ?•°を設定しますã?
170 * å¿?¦�å?ã�?�‘?ˆè¡? åˆ? 名称, 値, 色, 編é›?�¯否, スãƒ??タス?‰ã?場合ã?ã€?7" を指定しますã?
171 * (adjustMatrix.jsの)初期値はã€?7" ですã?
172 *
173 * @param countPro ãƒ??タノã?ドã?属æ?数
174 */
175 public void setCountPro( final String countPro ) {
176 tag.add( "countPro",StringUtil.nval( getRequestParameter( countPro ),null ) );
177 }
178
179 /**
180 * 【TAG】編é›?™‚の入力æ¬?¹?px)を指定しまã�?初期値:50px)ã€?
181 *
182 * @og.tag
183 * 編é›?™‚の入力æ¬?¹?px)を指定しますã?
184 * (adjustMatrix.jsの)初期値はã€?50px" ですã?
185 *
186 * @param inputWidth 編é›?™‚の入力æ¬?¹?px)
187 */
188 public void setInputWidth( final String inputWidth ) {
189 tag.add( "inputWidth",StringUtil.nval( getRequestParameter( inputWidth ),null ) );
190 }
191
192 /**
193 * 【TAG】セルå¹?px)を指定しまã�?初期値:75px)ã€?
194 *
195 * @og.tag
196 * セルå¹?px)を指定しますã?
197 * (adjustMatrix.jsの)初期値はã€?75px" ですã?
198 *
199 * @param cellWidth セルå¹?px)
200 */
201 public void setCellWidth( final String cellWidth ) {
202 tag.add( "cellWidth",StringUtil.nval( getRequestParameter( cellWidth ),null ) );
203 }
204
205 /**
206 * 【TAG】セル高さ(px)を指定しまã�?初期値:30px)ã€?
207 *
208 * @og.tag
209 * セル高さ(px)を指定しますã?
210 * (adjustMatrix.jsの)初期値はã€?30px" ですã?
211 *
212 * @param cellHeight セル高さ(px)
213 */
214 public void setCellHeight( final String cellHeight ) {
215 tag.add( "cellHeight",StringUtil.nval( getRequestParameter( cellHeight ),null ) );
216 }
217
218 /**
219 * 【TAG】スãƒ??タスの出力を行うかどã�?�‹[true:表示する/false:表示しない]を指定しまã�?初期値:false)ã€?
220 *
221 * @og.tag
222 * スãƒ??タスの出力を行う場合ã?ã€?./image/status_番号.png イメージを画面に表示しますã?
223 * 番号がã?スãƒ??タス番号になりますã?
224 * (adjustMatrix.jsの)初期値は、false:表示しなã�?ですã?
225 *
226 * @param showStatus スãƒ??タスの出力可否[true/false]
227 */
228 public void setShowStatus( final String showStatus ) {
229 tag.add( "showStatus",StringUtil.nval( getRequestParameter( showStatus ),null ) );
230 }
231
232 /**
233 * 【TAG】スãƒ??タスの種類数??:会議ã€?:来客ã€?:出張ã€?:外å?ã€?:休暇ã€?:他)をæŒ?®šしまã�?初期値:6)ã€?
234 *
235 * @og.tag
236 * スãƒ??タスの種類数??:会議ã€?:来客ã€?:出張ã€?:外å?ã€?:休暇ã€?:他)ã?、編é›??ãƒ??アãƒ??の作æ?に使ã�?�¾すã?
237 * 上記ã?場合ã??–種類になるためã?countStatus="6" としますã?
238 * å†?ƒ¨çš?�«は、status_0.png がありますã?
239 * (adjustMatrix.jsの)初期値はã€?6" ですã?
240 *
241 * @param countStatus スãƒ??タスの種類数
242 */
243 public void setCountStatus( final String countStatus ) {
244 tag.add( "countStatus",StringUtil.nval( getRequestParameter( countStatus ),null ) );
245 }
246
247 /**
248 * 【TAG】画面編é›?‚’許可するかどã�?�‹[true:可/false:不可]を指定しまã�?初期値:false)ã€?
249 *
250 * @og.tag
251 * true:画面編é›?�¯/false:画面編é›?¸�可を指定しますã?
252 * ここでは、mode=[Layout/Value] に関係なくã?false にすると編é›?¸�可になりますã?
253 * (adjustMatrix.jsの)初期値は、false:編é›?¸�可 ですã?
254 *
255 * @param writable 画面編é›?�¯否[true/false]
256 */
257 public void setWritable( final String writable ) {
258 tag.add( "writable",StringUtil.nval( getRequestParameter( writable ),null ) );
259 }
260
261 /**
262 * 【TAG】セル背景色の編é›?�¯否[true:編é›?�¯/false:編é›?¸�可]を指定しまã�?初期値:false)ã€?
263 *
264 * @og.tag
265 * セル背景色の編é›?�¯否[true:編é›?�¯/false:編é›?¸�可]を指定しますã?
266 * これは、mode="Value" で、writable="true" の場合ã?み有効ですã?
267 * false にすると、COLOR属æ?の編é›?�Œできなくなりますã?
268 * (adjustMatrix.jsの)初期値は、false:編é›?¸�可 ですã?
269 *
270 * @param editColor セル背景色の編é›?�¯否[true/false]
271 */
272 public void setEditColor( final String editColor ) {
273 tag.add( "editColor",StringUtil.nval( getRequestParameter( editColor ),null ) );
274 }
275
276 /**
277 * 【TAG】セル名称と設定å?の間ã?区åˆ?‚Šæ–?—をæŒ?®šしまã�?初期値:":")ã€?
278 *
279 * @og.tag
280 * 画面上には、セル名称(CELLNAME)と設定å?(VALUE)が表示されますã?そã?時ã?、区åˆ?‚Šæ–?—をæŒ?®šしますã?
281 * (adjustMatrix.jsの)初期値はã€?:" ですã?
282 *
283 * @param separator 区åˆ?‚Šæ–??
284 */
285 public void setSeparator( final String separator ) {
286 tag.add( "separator",StringUtil.nval( getRequestParameter( separator ),null ) );
287 }
288
289 /**
290 * 【TAG】セルの設定å?(VALUE)を指定しまã�?初期値:"")ã€?
291 *
292 * @og.tag
293 * セルの設定å?(VALUE)を指定しますã?
294 *
295 * @param paramVal セルの設定å?
296 */
297 public void setParamVal( final String paramVal ) {
298 tag.add( "paramVal",StringUtil.nval( getRequestParameter( paramVal ),null ) );
299 }
300
301 /**
302 * 【TAG】セルの背景色(COLOR)を指定しまã�?初期値:"")ã€?
303 *
304 * @og.tag
305 * セルの背景色を指定しますã?
306 *
307 * @param paramColor セルの背景色
308 */
309 public void setParamColor( final String paramColor ) {
310 tag.add( "paramColor",StringUtil.nval( getRequestParameter( paramColor ),null ) );
311 }
312
313 /**
314 * 【TAG】編é›?¸�可のセルの背景色を指定しまã�?初期値:gray)ã€?
315 *
316 * @og.tag
317 * 編é›?¸�可のセルの背景色を指定しますã?
318 * (adjustMatrix.jsの)初期値はã€?gray" ですã?
319 *
320 * @param notEditBgColor 編é›?¸�可のセルの背景色
321 */
322 public void setNotEditBgColor( final String notEditBgColor ) {
323 tag.add( "notEditBgColor",StringUtil.nval( getRequestParameter( notEditBgColor ),null ) );
324 }
325
326 /**
327 * タグの名称をã?返しますã?
328 * 自åˆ??身のクラス名よりã?自動的に取り出せなã�?�Ÿめã?こã?メソãƒ?ƒ‰をオーバã?ライドしますã?
329 *
330 * @return タグの名称
331 */
332 @Override
333 protected String getTagName() {
334 return "iMatrix" ;
335 }
336
337 /**
338 * こã?オブジェクトã?æ–?—å?表現を返しますã?
339 * 基本çš?�«ãƒ?ƒ�ãƒ?‚°目çš?�«使用しますã?
340 *
341 * @return こã?クラスのæ–?—å?表現
342 */
343 @Override
344 public String toString() {
345 return org.opengion.fukurou.util.ToString.title( this.getClass().getName() )
346 .println( "VERSION" ,VERSION )
347 .println( "tag" ,tag.makeTag() )
348 .println( "Other..." ,getAttributes().getAttribute() )
349 .fixForm().toString() ;
350 }
351 }