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    }