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    }