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.HybsSystemException;
019 import org.opengion.hayabusa.html.TableFormatter;
020
021 /**
022 * ガントチャー?タスク配置?用の繰り返しタグのフォーマットに使用します?
023 *
024 * itd タグは、ガント??ー部の TDタグの繰返しに使用されます?
025 * こ?繰返しは、ganttParam タグの minDuration で?された間隔で行われます?
026 * (例えば?.5 を指定すれ?、半日単位で処?れます?)
027 * itd タグの colspan 属?を指定した?合?、itd 自身が?td タグに colspan ?
028 * 追?ると共に、繰返し自身を?そ??数?に抑制します?
029 * 具体的には、colspan="2" とすると?回に?しか、itd タグが呼び出されな?
030 * なります?
031 *
032 * @og.formSample
033 * ●形式?lt;og:itd> ... Body ... </og:itd>
034 * ●body?あ?EVAL_BODY_BUFFERED:BODYを評価し?{@XXXX} を解析しま?
035 *
036 * ●Tag定義??
037 * <og:itd
038 * debug 【TAG】デバッグ??を?力するかど?[true/false]を指定しま?初期値:false)
039 * > ... Body ...
040 * </og:itd>
041 *
042 * ●使用?
043 * <og:thead rowspan="1">
044 * <tr>
045 * <og:itd>M/d</og:itd>
046 * </tr>
047 * </og:thead>
048 * <og:tbody rowspan="1" >
049 * <tr>
050 * <og:itd>
051 * <span class="cGntBar[!FGTASK]"
052 * title="[NMMCN]&amp;#13;&amp;#10;[NMKT]"
053 * val1 ="[GVZOOM]"
054 * val2 ="[CDJGS]"
055 * val3 ="[WC]"
056 * val4 ="[NOMCN]"
057 * val5 ="[CDKT]"
058 * val6 ="[FGTASK]"
059 * val7 ="[DYSTART]"
060 * val8 ="[DYDELAY]"
061 * val9 ="[DURATION]" >&nbsp;</span>
062 * </og:itd>
063 * </tr>
064 * </og:tbody>
065 *
066 * @og.rev 3.5.4.8 (2004/02/23) 新規作?
067 * @og.group 画面部?
068 *
069 * @version 4.0
070 * @author Kazuhiko Hasegawa
071 * @since JDK5.0,
072 */
073 public class ItdTag extends CommonTagSupport {
074 //* こ?プログラ??VERSION??を設定します? {@value} */
075 private static final String VERSION = "4.0.0.0 (2005/08/31)" ;
076
077 private static final long serialVersionUID = 400020050831L ;
078
079 private String itdBody = null;
080
081 /**
082 * Taglibの開始タグが見つかったときに処??doStartTag() ?オーバ?ライドします?
083 *
084 * @return 後続????( EVAL_BODY_BUFFERED )
085 */
086 @Override
087 public int doStartTag() {
088 return( EVAL_BODY_BUFFERED ); // Body を評価する? extends BodyTagSupport ?
089 }
090
091 /**
092 * Taglibのタグ本体を処??doAfterBody() ?オーバ?ライドします?
093 *
094 * @return 後続????(SKIP_BODY)
095 */
096 @Override
097 public int doAfterBody() {
098 itdBody = getBodyString();
099
100 return(SKIP_BODY); // Body を評価しな?
101 }
102
103 /**
104 * Taglibの終?グが見つかったときに処??doEndTag() ?オーバ?ライドします?
105 *
106 * @return 後続????
107 */
108 @Override
109 public int doEndTag() {
110 debugPrint(); // 4.0.0 (2005/02/28)
111 TFormatTag tFormat = (TFormatTag)findAncestorWithClass( this, TFormatTag.class );
112 if( tFormat != null ) {
113 tFormat.setItdBody( itdBody );
114 jspPrint( TableFormatter.HYBS_ITD_MARKER );
115 }
116 else {
117 // String errMsg = "<b>こ?タグは、TheadTag か?TBodyTagの??(要?に記述してください?/b>";
118 String errMsg = "<b><b>" + getTagName() + "タグは、TheadTag か?TBodyTagの??(要?に記述してください?/b>";
119 throw new HybsSystemException( errMsg );
120 }
121
122 return(EVAL_PAGE); // ペ?ジの残りを評価する?
123 }
124
125 /**
126 * タグリブオブジェクトをリリースします?
127 * キャ?ュされて再利用される?で、フィールド?初期設定を行います?
128 *
129 */
130 @Override
131 protected void release2() {
132 super.release2();
133 itdBody = null;
134 }
135
136 /**
137 * こ?オブジェクト???表現を返します?
138 * 基本???目?使用します?
139 *
140 * @return こ?クラスの??表現
141 */
142 @Override
143 public String toString() {
144 return org.opengion.fukurou.util.ToString.title( this.getClass().getName() )
145 .println( "VERSION" ,VERSION )
146 .println( "itdBody" ,itdBody )
147 .println( "Other..." ,getAttributes().getAttribute() )
148 .fixForm().toString() ;
149 }
150 }