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.fukurou.util.StringUtil;
020 import org.opengion.fukurou.util.TagBuffer;
021
022 /**
023 * 明細棒グラフで、バー部のヘッãƒ??にã€??捗率を示す線を表示しますã?
024 *
025 * iHead タグは、ガントã? ヘッãƒ??部に使用されますã?
026 * 進捗率を示す線ã?ã€?¼’本あり、デフォルトでは、中間点とæœ?¤§値になりますã?
027 * グラフã?右に、何かを表示する場合ã?、å¹?width)を指定するå¿?¦�がありますã?
028 *
029 * @og.formSample
030 * ●形式ï¼?lt;og:iHead ... />
031 * ●body?šなã�?
032 * ●前提:headタグで、adjustEvent="Bar" を指定してくださいã€?
033 *
034 * ●Tag定義??
035 * <og:iHead
036 * width 【TAG】グラフ部åˆ??横å¹?‚’[px]でæŒ?®šしますã?
037 * leftVal 【TAG】左線ã?ヘッãƒ?ƒ¨åˆ??æ–?—をæŒ?®šします(å?期å??š最大桁ã?半å???
038 * leftLoc 【TAG】左線ã?ヘッãƒ?ƒ¨æ–?—(及び線)ã?位置を左からの割合でæŒ?®šしますã?
039 * leftBorderStyle 【TAG】左線ã?スタイルを指定しまã�?初期値=dotted gray 1px)ã€?
040 * adjustLeft 【TAG】左線ã?ヘッãƒ?ƒ¨åˆ??æ–?—ã?上下位置をピクセル単位でæŒ?®šしまã�?è²??数で下方å�?ã€?
041 * rightVal 【TAG】右線ã?ヘッãƒ?ƒ¨åˆ??æ–?—をæŒ?®šします(å?期å??š最大æ¡?¼?
042 * rightLoc 【TAG】右線ã?ヘッãƒ?ƒ¨æ–?—(及び線)ã?位置を左からの割合でæŒ?®šしますã?
043 * rightBorderStyle 【TAG】右線ã?スタイルを指定しまã�?初期値=dotted gray 1px)ã€?
044 * adjustRight 【TAG】右線ã?ヘッãƒ?ƒ¨åˆ??æ–?—ã?上下位置をピクセル単位でæŒ?®šしまã�?è²??数で下方å�?ã€?
045 * debug 【TAG】デバッグæƒ??をå?力するかどã�?�‹[true/false]を指定しまã�?初期値:false)
046 * />
047 *
048 * ●使用ä¾?
049 * <og:view
050 * viewFormType = "HTMLCustomTable"
051 * command = "{@command}"
052 * writable = "false"
053 * useScrollBar = "false"
054 * headerSkipCount="10"
055 * >
056 * <og:thead rowspan="2">
057 * <tr>
058 * <td rowspan="2">[NOORDER]</td>
059 * <td rowspan="2">
060 * <og:iHead width="150px"
061 * leftVal ="now" leftLoc ="0.8" leftBorderStyle ="solid red 1px" adjustLeft ="15px"
062 * rightVal="Target" rightLoc="1.0" rightBorderStyle="dashed red 2px" adjustRight="-15px"
063 * />
064 * <td rowspan="2">[SINTYOKU]</td>
065 * </tr>
066 * </og:thead>
067 * <og:tbody rowspan="2">
068 * <td rowspan="2">[NOORDER]</td>
069 * <td rowspan="2">
070 * <iBar id="B0_[I]" type="0" value="[SINTYOKU]" baseVal="[KNORDER]" />
071 * <iBar id="B1_[I]" type="1" value="[KNORDER_G]" color="[COLOR]" text="[KNORDER]" />
072 * <br/>
073 * <iBar id="B2_[I]" type="1" value="[KNJISK_G],[KNMIKM_G]" color="black,green" />
074 * <iBar id="B3_[I]" type="2" value="[KNJISK_G],[KNMIKM_G]" baseVal="[KNORDER_G]" color="green" />
075 * <td rowspan="2">[SINTYOKU]</td>
076 * </og:tbody>
077 * </og:view>
078 *
079 * @og.rev 5.6.3.2 (2013/04/12) 新規作æ?
080 * @og.group 画面部å“?
081 *
082 * @version 5.0
083 * @author Kazuhiko Hasegawa
084 * @since JDK6.0,
085 */
086 public class ViewIHeadTag extends CommonTagSupport {
087 /** こã?プログラãƒ??VERSIONæ–?—å?を設定しますã? {@value} */
088 private static final String VERSION = "5.6.3.2 (2013/04/12)" ;
089
090 private static final long serialVersionUID = 563220130412L ;
091
092 private TagBuffer tag = new TagBuffer( "iHead" ) ;
093
094 /**
095 * Taglibの終äº?‚¿グが見つかったときに処ç�?�™ã‚?doEndTag() ã‚?オーバã?ライドしますã?
096 *
097 * @og.rev 5.8.1.0 (2014/11/07) HTML5対応ã?javaScriptで、BODYがなã�?�¨入れ子になってしまã�??
098 * @return 後続å?ç�??æŒ?¤º
099 */
100 @Override
101 public int doEndTag() {
102 debugPrint(); // 4.0.0 (2005/02/28)
103
104 tag.setBody( "<!-- -->" ); // 5.8.1.0 (2014/11/07) HTML5対応ã?
105 jspPrint( tag.makeTag() );
106
107 return(EVAL_PAGE); // ペã?ジの残りを評価するã€?
108 }
109
110 /**
111 * タグリブオブジェクトをリリースしますã?
112 * キャãƒ?‚·ュされて再利用されるã?で、フィールドã?初期設定を行いますã?
113 *
114 */
115 @Override
116 protected void release2() {
117 super.release2();
118 tag = new TagBuffer( "iHead" );
119 }
120
121 /**
122 * 【TAG】グラフ部åˆ??横å¹?‚’[px]でæŒ?®šしますã?
123 *
124 * @og.tag
125 * æŒ?®šしなã�??合ã?残りの横å¹??てとなりますã?
126 * グラフã?右側に何かを表示したã�??合ã?æŒ?®šするå¿?¦�がありますã?
127 * 単ä½?px)は設定不要ですã?それ以外ã?単位ã?設定できませんã€?
128 *
129 * @param width グラフ部åˆ??横å¹?
130 */
131 public void setWidth( final String width ) {
132 // JavaScript 側の都合で、px 単位ã?、削除しますã?
133 String tmpW = StringUtil.nval( getRequestParameter( width ),null ) ;
134 if( tmpW != null && tmpW.endsWith("px") ) {
135 tmpW = tmpW.substring( 0,tmpW.length()-2 );
136 }
137
138 tag.add( "width",tmpW );
139 }
140
141 /**
142 * 【TAG】左線ã?ヘッãƒ?ƒ¨åˆ??æ–?—をæŒ?®šします(å?期å??š最大桁ã?半å??‰ã?
143 *
144 * @og.tag
145 * 左線ã?ヘッãƒ?ƒ¨åˆ?�«表示するæ–?—をæŒ?®šしますã?
146 * 左線ã?、中間データ、またã?ã€??中経過を意味しますã?で、その様な単語にしますã?
147 * なにも指定しなã�??合ã?、右側が最大桁以下をåˆ?‚Š捨てした値となりã?左側はそã?半å?の値ですã?
148 * leftValに関してはã€?.4,0.4のようにè¤?•°の値をカンマ区åˆ?‚Šで書く事が可能ですã?
149 *
150 * @param leftVal 左線ã?ヘッãƒ?ƒ¨åˆ??æ–??
151 */
152 public void setLeftVal( final String leftVal ) {
153 tag.add( "leftVal",StringUtil.nval( getRequestParameter( leftVal ),null ) );
154 }
155
156 /**
157 * 【TAG】左線ã?ヘッãƒ?ƒ¨æ–?—(及び線)ã?位置を左からの割å�?少数)でæŒ?®šしますã?
158 *
159 * @og.tag
160 * グラフå¹??体を1として、左からの割合でæŒ?®šしますã?(左ã�?.3で右ã�?.9など??
161 * leftLocに関してはã€?.4,0.4のようにè¤?•°の値をカンマ区åˆ?‚Šで書く事が可能ですã?
162 *
163 * @param leftLoc 左線ã?ヘッãƒ?ƒ¨æ–?—(及び線)ã?位置の割å�?少数)
164 */
165 public void setLeftLoc( final String leftLoc ) {
166 tag.add( "leftLoc",StringUtil.nval( getRequestParameter( leftLoc ),null ) );
167 }
168
169 /**
170 * 【TAG】左線ã?スタイルを指定しまã�?初期値=dotted gray 1px)ã€?
171 *
172 * @og.tag
173 * グラフに引かれる左線ã?スタイルを指定しますã?
174 * 初期値は、dotted gray 1px ですã?
175 *
176 * @param leftBorderStyle 左線ã?ヘッãƒ?ƒ¨æ–?—(及び線)ã?位置の割å�?少数)
177 */
178 public void setLeftBorderStyle( final String leftBorderStyle ) {
179 tag.add( "leftBorderStyle",StringUtil.nval( getRequestParameter( leftBorderStyle ),null ) );
180 }
181
182 /**
183 * 【TAG】左線ã?ヘッãƒ?ƒ¨åˆ??æ–?—ã?上下位置をピクセル単位でæŒ?®šしまã�?è²??数で下方å�?ã€?
184 *
185 * @og.tag
186 * 左右のæ–?—が重なる可能性があるå?合に利用しますã?
187 * 10とæŒ?®šするとã€?0マイナスされてæ–?—が上方向にずれますã?
188 * è²??数を指定すると、文字が下方向にずれますã?
189 * 単ä½?px)は設定不要ですã?それ以外ã?単位ã?設定できませんã€?
190 *
191 * @param adjustLeft æ–?—ã?上下位置æŒ?®?
192 */
193 public void setAdjustLeft( final String adjustLeft ) {
194 // JavaScript 側の都合で、px 単位ã?、削除しますã?
195 String tmpA = StringUtil.nval( getRequestParameter( adjustLeft ),null ) ;
196 if( tmpA != null && tmpA.endsWith("px") ) {
197 tmpA = tmpA.substring( 0,tmpA.length()-2 );
198 }
199
200 tag.add( "adjustLeft",tmpA );
201 }
202
203 /**
204 * 【TAG】右線ã?ヘッãƒ?ƒ¨åˆ??æ–?—をæŒ?®šします(å?期å??š最大æ¡?¼‰ã?
205 *
206 * @og.tag
207 * 右線ã?ヘッãƒ?ƒ¨åˆ?�«表示するæ–?—をæŒ?®šしますã?
208 * 右線ã?、最終データ、またã?、最大ãƒ??タを意味しますã?で、その様な単語にしますã?
209 * なにも指定しなã�??合ã?、右側が最大桁以下をåˆ?‚Š捨てした値となりã?左側はそã?半å?の値ですã?
210 *
211 * @param rightVal 左線ã?ヘッãƒ?ƒ¨åˆ??æ–??
212 */
213 public void setRightVal( final String rightVal ) {
214 tag.add( "rightVal",StringUtil.nval( getRequestParameter( rightVal ),null ) );
215 }
216
217 /**
218 * 【TAG】右線ã?ヘッãƒ?ƒ¨æ–?—(及び線)ã?位置を左からの割å�?少数)でæŒ?®šしますã?
219 *
220 * @og.tag
221 * グラフå¹??体を1として、左からの割合でæŒ?®šしますã?(左ã�?.3で右ã�?.9など??
222 *
223 * @param rightLoc 右線ã?ヘッãƒ?ƒ¨æ–?—(及び線)ã?位置の割å�?少数)
224 */
225 public void setRightLoc( final String rightLoc ) {
226 tag.add( "rightLoc",StringUtil.nval( getRequestParameter( rightLoc ),null ) );
227 }
228
229 /**
230 * 【TAG】右線ã?スタイルを指定しまã�?初期値=dotted gray 1px)ã€?
231 *
232 * @og.tag
233 * グラフに引かれる右線ã?スタイルを指定しますã?
234 * 初期値は、dotted gray 1px ですã?
235 *
236 * @param rightBorderStyle 左線ã?ヘッãƒ?ƒ¨æ–?—(及び線)ã?位置の割å�?少数)
237 */
238 public void setRightBorderStyle( final String rightBorderStyle ) {
239 tag.add( "rightBorderStyle",StringUtil.nval( getRequestParameter( rightBorderStyle ),null ) );
240 }
241
242 /**
243 * 【TAG】右線ã?ヘッãƒ?ƒ¨åˆ??æ–?—ã?上下位置をピクセル単位でæŒ?®šしまã�?è²??数で下方å�?ã€?
244 *
245 * @og.tag
246 * 左右のæ–?—が重なる可能性があるå?合に利用しますã?
247 * 10とæŒ?®šするとã€?0マイナスされてæ–?—が上方向にずれますã?
248 * è²??数を指定すると、文字が下方向にずれますã?
249 * 単ä½?px)は設定不要ですã?それ以外ã?単位ã?設定できませんã€?
250 *
251 * @param adjustRight æ–?—ã?上下位置æŒ?®?
252 */
253 public void setAdjustRight( final String adjustRight ) {
254 // JavaScript 側の都合で、px 単位ã?、削除しますã?
255 String tmpA = StringUtil.nval( getRequestParameter( adjustRight ),null ) ;
256 if( tmpA != null && tmpA.endsWith("px") ) {
257 tmpA = tmpA.substring( 0,tmpA.length()-2 );
258 }
259
260 tag.add( "adjustRight",tmpA );
261 }
262
263 /**
264 * タグの名称をã?返しますã?
265 * 自åˆ??身のクラス名よりã?自動的に取り出せなã�?�Ÿめã?こã?メソãƒ?ƒ‰をオーバã?ライドしますã?
266 *
267 * @return タグの名称
268 */
269 @Override
270 protected String getTagName() {
271 return "iHead" ;
272 }
273
274 /**
275 * こã?オブジェクトã?æ–?—å?表現を返しますã?
276 * 基本çš?�«ãƒ?ƒ�ãƒ?‚°目çš?�«使用しますã?
277 *
278 * @return こã?クラスのæ–?—å?表現
279 */
280 @Override
281 public String toString() {
282 return org.opengion.fukurou.util.ToString.title( this.getClass().getName() )
283 .println( "VERSION" ,VERSION )
284 .println( "tag" ,tag.makeTag() )
285 .println( "Other..." ,getAttributes().getAttribute() )
286 .fixForm().toString() ;
287 }
288 }