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 * @return 後続????
098 */
099 @Override
100 public int doEndTag() {
101 debugPrint(); // 4.0.0 (2005/02/28)
102
103 jspPrint( tag.makeTag() );
104
105 return(EVAL_PAGE); // ペ?ジの残りを評価する?
106 }
107
108 /**
109 * タグリブオブジェクトをリリースします?
110 * キャ?ュされて再利用される?で、フィールド?初期設定を行います?
111 *
112 */
113 @Override
114 protected void release2() {
115 super.release2();
116 tag = new TagBuffer( "iHead" );
117 }
118
119 /**
120 * 【TAG】グラフ部??横?[px]で?します?
121 *
122 * @og.tag
123 * ?しな??合?残りの横??てとなります?
124 * グラフ?右側に何かを表示した??合??する?があります?
125 * 単?px)は設定不要です?それ以外?単位?設定できません?
126 *
127 * @param width グラフ部??横?
128 */
129 public void setWidth( final String width ) {
130 // JavaScript 側の都合で、px 単位?、削除します?
131 String tmpW = StringUtil.nval( getRequestParameter( width ),null ) ;
132 if( tmpW != null && tmpW.endsWith("px") ) {
133 tmpW = tmpW.substring( 0,tmpW.length()-2 );
134 }
135
136 tag.add( "width",tmpW );
137 }
138
139 /**
140 * 【TAG】左線?ヘッ????を?します(?期??最大桁?半???
141 *
142 * @og.tag
143 * 左線?ヘッ??表示する?を?します?
144 * 左線?、中間データ、また???中経過を意味します?で、その様な単語にします?
145 * なにも指定しな??合?、右側が最大桁以下を?捨てした値となり?左側はそ?半?の値です?
146 * leftValに関しては?.4,0.4のように?の値をカンマ区?で書く事が可能です?
147 *
148 * @param leftVal 左線?ヘッ?????
149 */
150 public void setLeftVal( final String leftVal ) {
151 tag.add( "leftVal",StringUtil.nval( getRequestParameter( leftVal ),null ) );
152 }
153
154 /**
155 * 【TAG】左線?ヘッ??(及び線)?位置を左からの割?少数)で?します?
156 *
157 * @og.tag
158 * グラフ??体を1として、左からの割合で?します?(左?.3で右?.9など??
159 * leftLocに関しては?.4,0.4のように?の値をカンマ区?で書く事が可能です?
160 *
161 * @param leftLoc 左線?ヘッ??(及び線)?位置の割?少数)
162 */
163 public void setLeftLoc( final String leftLoc ) {
164 tag.add( "leftLoc",StringUtil.nval( getRequestParameter( leftLoc ),null ) );
165 }
166
167 /**
168 * 【TAG】左線?スタイルを指定しま?初期値=dotted gray 1px)?
169 *
170 * @og.tag
171 * グラフに引かれる左線?スタイルを指定します?
172 * 初期値は、dotted gray 1px です?
173 *
174 * @param leftBorderStyle 左線?ヘッ??(及び線)?位置の割?少数)
175 */
176 public void setLeftBorderStyle( final String leftBorderStyle ) {
177 tag.add( "leftBorderStyle",StringUtil.nval( getRequestParameter( leftBorderStyle ),null ) );
178 }
179
180 /**
181 * 【TAG】左線?ヘッ?????上下位置をピクセル単位で?しま???数で下方??
182 *
183 * @og.tag
184 * 左右の?が重なる可能性がある?合に利用します?
185 * 10と?すると?0マイナスされて?が上方向にずれます?
186 * ??数を指定すると、文字が下方向にずれます?
187 * 単?px)は設定不要です?それ以外?単位?設定できません?
188 *
189 * @param adjustLeft ??上下位置??
190 */
191 public void setAdjustLeft( final String adjustLeft ) {
192 // JavaScript 側の都合で、px 単位?、削除します?
193 String tmpA = StringUtil.nval( getRequestParameter( adjustLeft ),null ) ;
194 if( tmpA != null && tmpA.endsWith("px") ) {
195 tmpA = tmpA.substring( 0,tmpA.length()-2 );
196 }
197
198 tag.add( "adjustLeft",tmpA );
199 }
200
201 /**
202 * 【TAG】右線?ヘッ????を?します(?期??最大??
203 *
204 * @og.tag
205 * 右線?ヘッ??表示する?を?します?
206 * 右線?、最終データ、また?、最大??タを意味します?で、その様な単語にします?
207 * なにも指定しな??合?、右側が最大桁以下を?捨てした値となり?左側はそ?半?の値です?
208 *
209 * @param rightVal 左線?ヘッ?????
210 */
211 public void setRightVal( final String rightVal ) {
212 tag.add( "rightVal",StringUtil.nval( getRequestParameter( rightVal ),null ) );
213 }
214
215 /**
216 * 【TAG】右線?ヘッ??(及び線)?位置を左からの割?少数)で?します?
217 *
218 * @og.tag
219 * グラフ??体を1として、左からの割合で?します?(左?.3で右?.9など??
220 *
221 * @param rightLoc 右線?ヘッ??(及び線)?位置の割?少数)
222 */
223 public void setRightLoc( final String rightLoc ) {
224 tag.add( "rightLoc",StringUtil.nval( getRequestParameter( rightLoc ),null ) );
225 }
226
227 /**
228 * 【TAG】右線?スタイルを指定しま?初期値=dotted gray 1px)?
229 *
230 * @og.tag
231 * グラフに引かれる右線?スタイルを指定します?
232 * 初期値は、dotted gray 1px です?
233 *
234 * @param rightBorderStyle 左線?ヘッ??(及び線)?位置の割?少数)
235 */
236 public void setRightBorderStyle( final String rightBorderStyle ) {
237 tag.add( "rightBorderStyle",StringUtil.nval( getRequestParameter( rightBorderStyle ),null ) );
238 }
239
240 /**
241 * 【TAG】右線?ヘッ?????上下位置をピクセル単位で?しま???数で下方??
242 *
243 * @og.tag
244 * 左右の?が重なる可能性がある?合に利用します?
245 * 10と?すると?0マイナスされて?が上方向にずれます?
246 * ??数を指定すると、文字が下方向にずれます?
247 * 単?px)は設定不要です?それ以外?単位?設定できません?
248 *
249 * @param adjustRight ??上下位置??
250 */
251 public void setAdjustRight( final String adjustRight ) {
252 // JavaScript 側の都合で、px 単位?、削除します?
253 String tmpA = StringUtil.nval( getRequestParameter( adjustRight ),null ) ;
254 if( tmpA != null && tmpA.endsWith("px") ) {
255 tmpA = tmpA.substring( 0,tmpA.length()-2 );
256 }
257
258 tag.add( "adjustRight",tmpA );
259 }
260
261 /**
262 * タグの名称を?返します?
263 * 自??身のクラス名より?自動的に取り出せな?め?こ?メソ?をオーバ?ライドします?
264 *
265 * @return タグの名称
266 */
267 @Override
268 protected String getTagName() {
269 return "iHead" ;
270 }
271
272 /**
273 * こ?オブジェクト???表現を返します?
274 * 基本???目?使用します?
275 *
276 * @return こ?クラスの??表現
277 */
278 @Override
279 public String toString() {
280 return org.opengion.fukurou.util.ToString.title( this.getClass().getName() )
281 .println( "VERSION" ,VERSION )
282 .println( "tag" ,tag.makeTag() )
283 .println( "Other..." ,getAttributes().getAttribute() )
284 .fixForm().toString() ;
285 }
286 }