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.HybsSystem;
019    import org.opengion.hayabusa.common.HybsSystemException;
020    import org.opengion.fukurou.util.StringUtil;
021    import org.opengion.fukurou.util.TagBuffer;
022    
023    /**
024     * <pre>
025     * 明細棒グラフ(横棒ã?縦棒)に使用しますã?
026     *
027     * iBar タグは、TDタグの繰返し部に記述することで、横棒ã?縦棒グラフを作æ?しますã?
028     * 使用するには、headタグで、xxxx ="true" を設定するå¿?¦�がありますã?
029     * これにより、common/option/adjustBar.js が読み込まれますã?
030     * 
031     * type は、グラフ要ç´??表示形式をæŒ?®šしますã?0?? が予ç´?ªžでã€?,1,2,6 が現時点で実è£?¸ˆみですã?
032     *    0:ラベル表示 1:横æ£?2:差åˆ?ž  6:縦æ£?
033     *
034     *<table border="1" frame="box" rules="all">
035     *  <tr><th colspan="2">横方向描画</th><th colspan="2">縦方向描画</th></tr>
036     *  <tr><td>0</td><td>ラベル表示?ˆ比率ã€??捗率など??/td><td>5</td><td>(保留  未実è£? </td></tr>
037     *  <tr><td>1</td><td>横æ£?                         </td><td>6</td><td>縦æ£?          </td></tr>
038     *  <tr><td>2</td><td>差åˆ?ž                         </td><td>7</td><td>(保留  未実è£? </td></tr>
039     *  <tr><td>3</td><td>(保留  未実è£?                </td><td>8</td><td>(保留  未実è£? </td></tr>
040     *  <tr><td>4</td><td>(保留  未実è£?                </td><td>9</td><td>(保留  未実è£? </td></tr>
041     *</table>
042     *
043     * value は、位置ã€?•·さを設定しますã?設定方法ã?、type 毎に異なりますã?
044     * baseVal は、グラフ要ç´??描画開始位置を設定しますã?
045     * type=2:差åˆ?ž  は、value ??baseVal の場合ã?、è¶?�Žをã?value ??baseValの場合ã?、不足を表しますã?
046     *<table border="1" frame="box" rules="all">
047     *  <tr><th>type</th><th>設定å?           </th><th>説æ˜?          </th></tr>
048     *  <tr><td>0   </td><td>[V1]             </td><td>xx% またã? 0.xxã€??比率を設定するã??ˆä¸?�¤のみ??br />描画位置?�baseValのå�?‚«ラãƒ??合計å? * カラãƒ?1の値</td></tr>
049     *  <tr><td>1   </td><td>[V1],[V2],…,[Vn]</td><td>棒ã?長さ=[V1],[V2],…,[Vn]å�?‚«ラãƒ??合計å?</td></tr>
050     *  <tr><td>2   </td><td>[V1],[V2],…,[Vn]</td><td>描画位置?�baseValのå�?‚«ラãƒ??合計å?<br />差åˆ?ž の長さ=valueのå�?‚«ラãƒ??合計å? - baseValのå�?‚«ラãƒ?�ˆ計å?</td></tr>
051     *  <tr><td>6   </td><td>[V1],[V2],…,[Vn]</td><td>棒ã?長さ=[V1],[V2],…,[Vn]å�?‚«ラãƒ??合計å?</td></tr>
052     *</table>
053     * 
054     * color は、棒グラフ要ç´?¼?ype="1"(横æ£?,"6"(縦æ£??‰ã?色コードを設定しますã?
055     *       こã?コードã?、予め決められた色画像を呼び出しますã?で、任意ã?色が使えるとã�?�†事ではありませんã€?
056     *<table border="1" frame="box" rules="all">
057     * <tr><th>色番号</th><th>設定å? </th><th>棒色  </th><th>ã€?/th><th>横棒サンプル</th><th>縦棒サンプル</th></tr>
058     * <tr><td> 0</td><td>blue  </td><td>� </td><td> </td><td style="background-image:url(../image/W_blue.png);">  �/td><td style="background-image:url(../image/H_blue.png);">  �/td></tr>
059     * <tr><td> 1</td><td>black </td><td>� </td><td> </td><td style="background-image:url(../image/W_black.png);">  �/td><td style="background-image:url(../image/H_black.png);">  �/td></tr>
060     * <tr><td> 2</td><td>brown </td><td>茶  </td><td> </td><td style="background-image:url(../image/W_brown.png);">  ã€?/td><td style="background-image:url(../image/H_brown.png);">  ã€?/td></tr>
061     * <tr><td> 3</td><td>green </td><td>� </td><td> </td><td style="background-image:url(../image/W_green.png);">  �/td><td style="background-image:url(../image/H_green.png);">  �/td></tr>
062     * <tr><td> 4</td><td>lightblue </td><td>è–?�’  </td><td> </td><td style="background-image:url(../image/W_lightblue.png);"> ã€?/td><td style="background-image:url(../image/H_lightblue.png);"> ã€?/td></tr>
063     * <tr><td> 5</td><td>lightgreen </td><td>è–?·? </td><td> </td><td style="background-image:url(../image/W_lightgreen.png);"> ã€?/td><td style="background-image:url(../image/H_lightgreen.png);"> ã€?/td></tr>
064     * <tr><td> 6</td><td>orange </td><td>オレンジ </td><td> </td><td style="background-image:url(../image/W_orange.png);"> ã€?/td><td style="background-image:url(../image/H_orange.png);"> ã€?/td></tr>
065     * <tr><td> 7</td><td>pink  </td><td>ピンク </td><td> </td><td style="background-image:url(../image/W_pink.png);">  ã€?/td><td style="background-image:url(../image/H_pink.png);">  ã€?/td></tr>
066     * <tr><td> 8</td><td>purple </td><td>紫  </td><td> </td><td style="background-image:url(../image/W_purple.png);"> ã€?/td><td style="background-image:url(../image/H_purple.png);"> ã€?/td></tr>
067     * <tr><td> 9</td><td>red  </td><td>赤  </td><td> </td><td style="background-image:url(../image/W_red.png);">  ã€?/td><td style="background-image:url(../image/H_red.png);">  ã€?/td></tr>
068     * <tr><td> 10</td><td>yellow </td><td>� </td><td> </td><td style="background-image:url(../image/W_yellow.png);"> �/td><td style="background-image:url(../image/H_yellow.png);"> �/td></tr>
069     * <tr><td> 11</td><td>navy  </td><td>æ¿?´º  </td><td> </td><td style="background-image:url(../image/W_navy.png);">  ã€?/td><td style="background-image:url(../image/H_navy.png);">  ã€?/td></tr>
070     * <tr><td> 12</td><td>teal  </td><td>青ç·? </td><td> </td><td style="background-image:url(../image/W_teal.png);">  ã€?/td><td style="background-image:url(../image/H_teal.png);">  ã€?/td></tr>
071     * <tr><td> 13</td><td>gray  </td><td>灰  </td><td> </td><td style="background-image:url(../image/W_gray.png);">  ã€?/td><td style="background-image:url(../image/H_gray.png);">  ã€?/td></tr>
072     * <tr><td> 14</td><td>indigo </td><td>� </td><td> </td><td style="background-image:url(../image/W_indigo.png);"> �/td><td style="background-image:url(../image/H_indigo.png);"> �/td></tr>
073     * <tr><td> 15</td><td>slategray </td><td>é‰?‰²  </td><td> </td><td style="background-image:url(../image/W_slategray.png);"> ã€?/td><td style="background-image:url(../image/H_slategray.png);"> ã€?/td></tr>
074     * <tr><td> 16</td><td>chocorlate </td><td>チョコレーãƒ?</td><td> </td><td style="background-image:url(../image/W_chocorlate.png);"> ã€?/td><td style="background-image:url(../image/H_chocorlate.png);"> ã€?/td></tr>
075     * <tr><td> 17</td><td>darkgreen </td><td>深ç·? </td><td> </td><td style="background-image:url(../image/W_darkgreen.png);"> ã€?/td><td style="background-image:url(../image/H_darkgreen.png);"> ã€?/td></tr>
076     * <tr><td> 18</td><td>violet </td><td>すみã‚?</td><td> </td><td style="background-image:url(../image/W_violet.png);"> ã€?/td><td style="background-image:url(../image/H_violet.png);"> ã€?/td></tr>
077     * <tr><td> 19</td><td>darkslategray</td><td>深é‰?‰² </td><td> </td><td style="background-image:url(../image/W_darkslategray.png);"> ã€?/td><td style="background-image:url(../image/H_darkslategray.png);"> ã€?/td></tr>
078     * <tr><td> 20</td><td>lime  </td><td>� </td><td> </td><td style="background-image:url(../image/W_lime.png);">  �/td><td style="background-image:url(../image/H_lime.png);">  �/td></tr>
079     * <tr><td> 21</td><td>aqua  </td><td>水色  </td><td> </td><td style="background-image:url(../image/W_aqua.png);">  ã€?/td><td style="background-image:url(../image/H_aqua.png);">  ã€?/td></tr>
080     * <tr><td> 22</td><td>maroon </td><td>ひわだã�?‚� </td><td> </td><td style="background-image:url(../image/W_maroon.png);"> ã€?/td><td style="background-image:url(../image/H_maroon.png);"> ã€?/td></tr>
081     * <tr><td> 23</td><td>olive </td><td>オリーãƒ?</td><td> </td><td style="background-image:url(../image/W_olive.png);">  ã€?/td><td style="background-image:url(../image/H_olive.png);">  ã€?/td></tr>
082     * <tr><td> 24</td><td>silver </td><td>� </td><td> </td><td style="background-image:url(../image/W_silver.png);"> �/td><td style="background-image:url(../image/H_silver.png);"> �/td></tr>
083     * <tr><td> 25</td><td>fuchsia </td><td>赤紫  </td><td> </td><td style="background-image:url(../image/W_fuchsia.png);"> ã€?/td><td style="background-image:url(../image/H_fuchsia.png);"> ã€?/td></tr>
084     * <tr><td> �/td><td>  </td><td>  </td><td> </td><td>        �/td><td>        �/td></tr>
085     * <tr><td> BK</td><td>black2 </td><td>� </td><td> </td><td style="background-image:url(../image/W_black2.png);"> �/td><td style="background-image:url(../image/H_black2.png);"> �/td></tr>
086     * <tr><td> WT</td><td>white2 </td><td>白  </td><td> </td><td style="background-image:url(../image/W_white2.png);"> ã€?/td><td style="background-image:url(../image/H_white2.png);"> ã€?/td></tr>
087     * <tr><td> BL</td><td>blue2 </td><td>� </td><td> </td><td style="background-image:url(../image/W_blue2.png);">  �/td><td style="background-image:url(../image/H_blue2.png);">  �/td></tr>
088     * <tr><td> RD</td><td>red2  </td><td>赤  </td><td> </td><td style="background-image:url(../image/W_red2.png);">  ã€?/td><td style="background-image:url(../image/H_red2.png);">  ã€?/td></tr>
089     * <tr><td> YL</td><td>yellow2 </td><td>� </td><td> </td><td style="background-image:url(../image/W_yellow2.png);"> �/td><td style="background-image:url(../image/H_yellow2.png);"> �/td></tr>
090     *</table>
091     *
092     * colorNo 色番号は、色コードを直接æŒ?®šするã?ではなくã?番号でæŒ?®šするå?合に使用しますã?
093     *         棒グラフ要ç´?¼?ype="1"(横æ£?,"6"(縦æ£??‰ã?色を設定しますã?
094     *         "1??5 , BK,WT,BL,RD,YL" の色番号でæŒ?®šしますã?
095     *         色番号は、与えた数字をå†?ƒ¨色数で割り算した余を使用しますã?でã€??番の場合でã‚?
096     *         繰返し使われますã?特殊な色として、BK,WT,BL,RD,YLは、番号ではなく記号でæŒ?®šできますã?
097     * 
098     * zeroBorder はã€?true" で、å?がゼロの時にもã?æœ?°�ã?バã?を表示するã€?
099     * 
100     * graphThick は、グラフã?バã?のå¹?‚’æŒ?®šしますã?
101     * 
102     * </pre>
103     *
104     * @og.formSample
105     * ●形式ï¼?lt;og:iBar  ... /&gt;
106     * ●body?šなã�?
107     * ●前提:headタグで、adjustEvent="Bar" を指定してくださいã€?
108     *
109     * ●Tag定義??
110     *   &lt;og:iBar
111     *       type               【TAG】グラフ要ç´??表示形式を設å®?0:ラベル表示 1:横æ£?2:差åˆ?ž  6:縦æ£?(å¿??)
112     *       value              【TAG】グラフ要ç´??位置ã€?•·さを設å®?typeにより設定方法が異なã‚?(å¿??)
113     *       baseVal            【TAG】グラフ要ç´??描画開始位置を設å®?type=0,2の場合å¿??)
114     *       color              【TAG】棒グラフ要ç´?¼?ype="1"(横æ£?,"6"(縦æ£??‰ã?色コードを設定するã?
115     *       colorNo            【TAGã€?1??5 , BK,WT,BL,RD,YL" の色番号を設定するã?
116     *       text               【TAG】バー上に表示するãƒ?‚­ストをæŒ?®šしますã?                                                                              
117     *       href               【TAG】リンク作æ?時ã?値を設定しますã?
118     *       target             【TAG】リンク作æ?時ã?ターゲãƒ?ƒˆ名をæŒ?®šしますã?
119     *       optionAttributes   【TAGã€?{kay:val,key:val} 形式で、属æ?を追åŠ?�—ますã?
120     *       zeroBorder         【TAG】最小ã?バã?を表示するかどã�?�‹[true/false]を指定しまã�?初期値:false)
121     *       graphThick         【TAG】グラフã?バã?のå¹?‚’æŒ?®šしますã?
122     *       paddingLeft        【TAG】ガントバーの間ã?左区åˆ?‚Šスペã?スを指定しまã�?初期値=null)
123     *       paddingRigth       【TAG】ガントバーの間ã?右区åˆ?‚Šスペã?スを指定しまã�?初期値=null)
124     *       debug              【TAG】デバッグæƒ??をå?力するかどã�?�‹[true/false]を指定しまã�?初期値:false)
125     *   /&gt;
126     *
127     * ●使用ä¾?
128     *    &lt;og:view command="{&#064;command}" /&gt;
129     *      &lt;og:tbody rowspan="1" &gt;
130     *        &lt;tr&gt;
131     *          &lt;og:td&gt;
132     *            &lt;og:iBar
133     *                  type    = "X"
134     *                  value   = "[V1],[V2],…,[Vn]"
135     *                  baseVal = "[BV1],[BV2],…,[BVn]"
136     *                  color   = "C1,C2,…,Cn"
137     *            /&gt;
138     *        &lt;/td&gt; &lt;/tr&gt;
139     *      &lt;/og:tbody&gt;
140     *    &lt;/og:view&gt;
141     *
142     * @og.rev 5.6.3.2 (2013/04/12) 新規作æ?
143     * @og.group 画面部å“?
144     *
145     * @version  5.0
146     * @author       Kazuhiko Hasegawa
147     * @since    JDK1.7,
148     */
149    public class ViewIBarTag extends CommonTagSupport {
150            //* こã?プログラãƒ??VERSIONæ–?­—å?を設定しますã?       {@value} */
151            private static final String VERSION = "5.6.4.3 (2013/05/24)" ;
152    
153            private static final long serialVersionUID = 564320130524L ;
154    
155            /** type 引数に渡す事ã?出来ã‚?タイプリスãƒ? */
156            private static final String[] TYPE_LIST = new String[] { "0" , "1" , "2" , "6" };
157    
158            private TagBuffer tag = new TagBuffer( "iBar" ) ;
159    
160            // ペã?ジå†?? iBar タグのid設定用のユニã?ク番号ã€?
161            // java.util.concurrent.atomic.AtomicInteger を使ã�?�¾でもなã�??
162            private static int tagId = 100;
163    
164            /**
165             * Taglibの終äº?‚¿グが見つかったときに処ç�?�™ã‚?doEndTag() ã‚?オーバã?ライドしますã?
166             *
167             * @return      後続å?ç�??æŒ?¤º
168             */
169            @Override
170            public int doEndTag() {
171                    debugPrint();           // 4.0.0 (2005/02/28)
172    
173                    tag.add( "id",getTagId() );
174    
175                    jspPrint( tag.makeTag() );
176    
177                    return(EVAL_PAGE);              // ペã?ジの残りを評価するã€?
178            }
179    
180            /**
181             * タグリブオブジェクトをリリースしますã?
182             * キャãƒ?‚·ュされて再利用されるã?で、フィールドã?初期設定を行いますã?
183             *
184             */
185            @Override
186            protected void release2() {
187                    super.release2();
188                    tag = new TagBuffer( "iBar" );
189            }
190    
191            /**
192             * 【TAG】グラフ要ç´??表示形式を設å®?0:ラベル表示 1:横æ£?2:差åˆ?ž  6:縦æ£?しまã�?å¿??)ã€?
193             *
194             * @og.tag
195             * type は、グラフ要ç´??表示形式をæŒ?®šしますã?0?? が予ç´?ªžでã€?,1,2,6 が現時点で実è£?¸ˆみですã?
196             * 0:ラベル表示 1:横æ£?2:差åˆ?ž  6:縦æ£?
197             *
198             * @param   type グラフ要ç´??表示形式[0:ラベル表示 1:横æ£?2:差åˆ?ž  6:縦棒]
199             */
200            public void setType( final String type ) {
201                    String tmpType = StringUtil.nval( getRequestParameter( type ),null );
202    
203                    if( tmpType == null || !check( tmpType, TYPE_LIST ) ) {
204                            String errMsg = "æŒ?®šã?表示形å¼?type)はå¿??かã?またã?、指定ã?値のみ登録可能ですã?"
205                                                            + HybsSystem.CR
206                                                            + "type=[" + tmpType + "] "
207                                                            + HybsSystem.CR
208                                                            + "登録可能な値=" + StringUtil.array2csv( TYPE_LIST ) ;
209                            throw new HybsSystemException( errMsg );
210                    }
211    
212                    tag.add( "type",tmpType );
213            }
214    
215            /**
216             * 【TAG】グラフ要ç´??位置ã€?•·さを設定しまã�?typeにより設定方法が異なã‚?(å¿??)
217             *
218             * @og.tag
219             * value は、グラフ要ç´??位置ã€?•·さを設定しますã?設定方法ã?、type 毎に異なりますã?
220             * baseVal は、グラフ要ç´??描画開始位置を設定しますã?
221             * type=2:差åˆ?ž  は、value ??baseVal の場合ã?、è¶?�Žをã?value ??baseValの場合ã?、不足を表しますã?
222             *<table border="1" frame="box" rules="all">
223             *  <tr><th>type</th><th>設定å?           </th><th>説æ˜?          </th></tr>
224             *  <tr><td>0   </td><td>[V1]             </td><td>xx% またã? 0.xxã€??比率を設定するã??ˆä¸?�¤のみ??br />描画位置?�baseValのå�?‚«ラãƒ??合計å? * カラãƒ?1の値</td></tr>
225             *  <tr><td>1   </td><td>[V1],[V2],…,[Vn]</td><td>棒ã?長さ=[V1],[V2],…,[Vn]å�?‚«ラãƒ??合計å?</td></tr>
226             *  <tr><td>2   </td><td>[V1],[V2],…,[Vn]</td><td>描画位置?�baseValのå�?‚«ラãƒ??合計å?<br />差åˆ?ž の長さ=valueのå�?‚«ラãƒ??合計å? - baseValのå�?‚«ラãƒ?�ˆ計å?</td></tr>
227             *  <tr><td>6   </td><td>[V1],[V2],…,[Vn]</td><td>棒ã?長さ=[V1],[V2],…,[Vn]å�?‚«ラãƒ??合計å?</td></tr>
228             *</table>
229             *
230             * @param   val グラフ要ç´??位置ã€?•·ã�?
231             */
232            public void setValue( final String val ) {
233                    String tmpVal = StringUtil.nval( getRequestParameter( val ),null );
234    
235                    if( tmpVal == null ) {
236                            String errMsg = "value は、å¿??ですã?";
237                            throw new HybsSystemException( errMsg );
238                    }
239    
240                    tag.add( "value",tmpVal );
241            }
242    
243            /**
244             * 【TAG】グラフ要ç´??描画開始位置を設定しますã?
245             *
246             * @og.tag
247             * こã?値は、type=0,2の場合ã?å¿??になりますã?
248             * type=2:差åˆ?ž  は、value ??baseVal の場合ã?、è¶?�Žをã?value ??baseValの場合ã?、不足を表しますã?
249             *<table border="1" frame="box" rules="all">
250             *  <tr><th>type</th><th>設定å?           </th><th>説æ˜?          </th></tr>
251             *  <tr><td>0   </td><td>[V1]             </td><td>xx% またã? 0.xxã€??比率を設定するã??ˆä¸?�¤のみ??br />描画位置?�baseValのå�?‚«ラãƒ??合計å? * カラãƒ?1の値</td></tr>
252             *  <tr><td>2   </td><td>[V1],[V2],…,[Vn]</td><td>描画位置?�baseValのå�?‚«ラãƒ??合計å?<br />差åˆ?ž の長さ=valueのå�?‚«ラãƒ??合計å? - baseValのå�?‚«ラãƒ?�ˆ計å?</td></tr>
253             *</table>
254             *
255             * @param   bval グラフ要ç´??描画開始位置
256             */
257            public void setBaseVal( final String bval ) {
258                    tag.add( "baseVal",StringUtil.nval( getRequestParameter( bval ), null ) );
259            }
260    
261            /**
262             * 【TAG】棒グラフ要ç´?¼?ype="1"(横æ£?,"6"(縦æ£??‰ã?色コードを設定しますã?
263             *
264             * @og.tag
265             * color は、棒グラフ要ç´?¼?ype="1"(横æ£?,"6"(縦æ£??‰ã?色コードを設定しますã?
266             * こã?コードã?、予め決められた色画像を呼び出しますã?で、任意ã?色が使えるとã�?�†事ではありませんã€?
267             * 色æŒ?®šã?、横棒ã?場合ã?、image/W_色コーãƒ?png で、縦棒ã?場合ã?、image/H_色コーãƒ?png の画像を使ã�?�¾すã?
268             * 色コーãƒ?と 色番号が同時にæŒ?®šされた場合ã?、色コーãƒ?が優先されますã?
269             *
270             * type=2:差åˆ?ž  は、value ??baseVal の場合ã?、è¶?�Žをã?value ??baseValの場合ã?、不足を表しますã?
271             *<table border="1" frame="box" rules="all">
272             * <tr><th>色番号</th><th>設定å? </th><th>棒色  </th><th>ã€?/th><th>横棒サンプル</th><th>縦棒サンプル</th></tr>
273             * <tr><td> 0</td><td>blue  </td><td>� </td><td> </td><td style="background-image:url(../image/W_blue.png);">  �/td><td style="background-image:url(../image/H_blue.png);">  �/td></tr>
274             * <tr><td> 1</td><td>black </td><td>� </td><td> </td><td style="background-image:url(../image/W_black.png);">  �/td><td style="background-image:url(../image/H_black.png);">  �/td></tr>
275             * <tr><td> 2</td><td>brown </td><td>茶  </td><td> </td><td style="background-image:url(../image/W_brown.png);">  ã€?/td><td style="background-image:url(../image/H_brown.png);">  ã€?/td></tr>
276             * <tr><td> 3</td><td>green </td><td>� </td><td> </td><td style="background-image:url(../image/W_green.png);">  �/td><td style="background-image:url(../image/H_green.png);">  �/td></tr>
277             * <tr><td> 4</td><td>lightblue </td><td>è–?�’  </td><td> </td><td style="background-image:url(../image/W_lightblue.png);"> ã€?/td><td style="background-image:url(../image/H_lightblue.png);"> ã€?/td></tr>
278             * <tr><td> 5</td><td>lightgreen </td><td>è–?·? </td><td> </td><td style="background-image:url(../image/W_lightgreen.png);"> ã€?/td><td style="background-image:url(../image/H_lightgreen.png);"> ã€?/td></tr>
279             * <tr><td> 6</td><td>orange </td><td>オレンジ </td><td> </td><td style="background-image:url(../image/W_orange.png);"> ã€?/td><td style="background-image:url(../image/H_orange.png);"> ã€?/td></tr>
280             * <tr><td> 7</td><td>pink  </td><td>ピンク </td><td> </td><td style="background-image:url(../image/W_pink.png);">  ã€?/td><td style="background-image:url(../image/H_pink.png);">  ã€?/td></tr>
281             * <tr><td> 8</td><td>purple </td><td>紫  </td><td> </td><td style="background-image:url(../image/W_purple.png);"> ã€?/td><td style="background-image:url(../image/H_purple.png);"> ã€?/td></tr>
282             * <tr><td> 9</td><td>red  </td><td>赤  </td><td> </td><td style="background-image:url(../image/W_red.png);">  ã€?/td><td style="background-image:url(../image/H_red.png);">  ã€?/td></tr>
283             * <tr><td> 10</td><td>yellow </td><td>� </td><td> </td><td style="background-image:url(../image/W_yellow.png);"> �/td><td style="background-image:url(../image/H_yellow.png);"> �/td></tr>
284             * <tr><td> 11</td><td>navy  </td><td>æ¿?´º  </td><td> </td><td style="background-image:url(../image/W_navy.png);">  ã€?/td><td style="background-image:url(../image/H_navy.png);">  ã€?/td></tr>
285             * <tr><td> 12</td><td>teal  </td><td>青ç·? </td><td> </td><td style="background-image:url(../image/W_teal.png);">  ã€?/td><td style="background-image:url(../image/H_teal.png);">  ã€?/td></tr>
286             * <tr><td> 13</td><td>gray  </td><td>灰  </td><td> </td><td style="background-image:url(../image/W_gray.png);">  ã€?/td><td style="background-image:url(../image/H_gray.png);">  ã€?/td></tr>
287             * <tr><td> 14</td><td>indigo </td><td>� </td><td> </td><td style="background-image:url(../image/W_indigo.png);"> �/td><td style="background-image:url(../image/H_indigo.png);"> �/td></tr>
288             * <tr><td> 15</td><td>slategray </td><td>é‰?‰²  </td><td> </td><td style="background-image:url(../image/W_slategray.png);"> ã€?/td><td style="background-image:url(../image/H_slategray.png);"> ã€?/td></tr>
289             * <tr><td> 16</td><td>chocorlate </td><td>チョコレーãƒ?</td><td> </td><td style="background-image:url(../image/W_chocorlate.png);"> ã€?/td><td style="background-image:url(../image/H_chocorlate.png);"> ã€?/td></tr>
290             * <tr><td> 17</td><td>darkgreen </td><td>深ç·? </td><td> </td><td style="background-image:url(../image/W_darkgreen.png);"> ã€?/td><td style="background-image:url(../image/H_darkgreen.png);"> ã€?/td></tr>
291             * <tr><td> 18</td><td>violet </td><td>すみã‚?</td><td> </td><td style="background-image:url(../image/W_violet.png);"> ã€?/td><td style="background-image:url(../image/H_violet.png);"> ã€?/td></tr>
292             * <tr><td> 19</td><td>darkslategray</td><td>深é‰?‰² </td><td> </td><td style="background-image:url(../image/W_darkslategray.png);"> ã€?/td><td style="background-image:url(../image/H_darkslategray.png);"> ã€?/td></tr>
293             * <tr><td> 20</td><td>lime  </td><td>� </td><td> </td><td style="background-image:url(../image/W_lime.png);">  �/td><td style="background-image:url(../image/H_lime.png);">  �/td></tr>
294             * <tr><td> 21</td><td>aqua  </td><td>水色  </td><td> </td><td style="background-image:url(../image/W_aqua.png);">  ã€?/td><td style="background-image:url(../image/H_aqua.png);">  ã€?/td></tr>
295             * <tr><td> 22</td><td>maroon </td><td>ひわだã�?‚� </td><td> </td><td style="background-image:url(../image/W_maroon.png);"> ã€?/td><td style="background-image:url(../image/H_maroon.png);"> ã€?/td></tr>
296             * <tr><td> 23</td><td>olive </td><td>オリーãƒ?</td><td> </td><td style="background-image:url(../image/W_olive.png);">  ã€?/td><td style="background-image:url(../image/H_olive.png);">  ã€?/td></tr>
297             * <tr><td> 24</td><td>silver </td><td>� </td><td> </td><td style="background-image:url(../image/W_silver.png);"> �/td><td style="background-image:url(../image/H_silver.png);"> �/td></tr>
298             * <tr><td> 25</td><td>fuchsia </td><td>赤紫  </td><td> </td><td style="background-image:url(../image/W_fuchsia.png);"> ã€?/td><td style="background-image:url(../image/H_fuchsia.png);"> ã€?/td></tr>
299             * <tr><td> �/td><td>  </td><td>  </td><td> </td><td>        �/td><td>        �/td></tr>
300             * <tr><td> BK</td><td>black2 </td><td>� </td><td> </td><td style="background-image:url(../image/W_black2.png);"> �/td><td style="background-image:url(../image/H_black2.png);"> �/td></tr>
301             * <tr><td> WT</td><td>white2 </td><td>白  </td><td> </td><td style="background-image:url(../image/W_white2.png);"> ã€?/td><td style="background-image:url(../image/H_white2.png);"> ã€?/td></tr>
302             * <tr><td> BL</td><td>blue2 </td><td>� </td><td> </td><td style="background-image:url(../image/W_blue2.png);">  �/td><td style="background-image:url(../image/H_blue2.png);">  �/td></tr>
303             * <tr><td> RD</td><td>red2  </td><td>赤  </td><td> </td><td style="background-image:url(../image/W_red2.png);">  ã€?/td><td style="background-image:url(../image/H_red2.png);">  ã€?/td></tr>
304             * <tr><td> YL</td><td>yellow2 </td><td>� </td><td> </td><td style="background-image:url(../image/W_yellow2.png);"> �/td><td style="background-image:url(../image/H_yellow2.png);"> �/td></tr>
305             *</table>
306             *
307             * @param   color グラフ要ç´??位置ã€?•·ã�?
308             */
309            public void setColor( final String color ) {
310                    tag.add( "color",StringUtil.nval( getRequestParameter( color ),null ) );
311            }
312    
313            /**
314             * 【TAG】グラフ要ç´??色番号を設定しますã?
315             *
316             * @og.tag
317             * 色番号は、色コードを直接æŒ?®šするã?ではなくã?番号でæŒ?®šするå?合に使用しますã?
318             * 棒グラフ要ç´?¼?ype="1"(横æ£?,"6"(縦æ£??‰ã?色を設定しますã?
319             * "1??5 , BK,WT,BL,RD,YL" の色番号でæŒ?®šしますã?
320             * 色番号は、与えた数字をå†?ƒ¨色数で割り算した余を使用しますã?でã€??番の場合でã‚?
321             * 繰返し使われますã?特殊な色として、BK,WT,BL,RD,YLは、番号ではなく記号でæŒ?®šできますã?
322             * 色コーãƒ?と 色番号が同時にæŒ?®šされた場合ã?、色コーãƒ?が優先されますã?
323             *
324             * @param   clrNo グラフ要ç´??描画開始位置
325             * @see         #setColor( String )
326             */
327            public void setColorNo( final String clrNo ) {
328                    tag.add( "colorNo",StringUtil.nval( getRequestParameter( clrNo ),null ) );
329            }
330    
331            /**
332             * 【TAG】バー上に表示するãƒ?‚­ストをæŒ?®šしますã?
333             *
334             * @og.tag
335             * バã?の上に、å?などのæ–?­—を重ã?て表示できますã?
336             *
337             * @param   text バã?上に表示するãƒ?‚­スãƒ?
338             */
339            public void setText( final String text ) {
340                    tag.add( "text",StringUtil.nval( getRequestParameter( text ),null ) );
341            }
342    
343            /**
344             * 【TAG】リンク作æ?時ã?値を設定しますã?
345             *
346             * @og.tag
347             * バã?の上ã?æ–?­—に対して、リンクを作æ?できますã?
348             *
349             * @param   href バã?上に表示するãƒ?‚­スãƒ?
350             * @see         #setTarget( String )
351             */
352            public void setHref( final String href ) {
353                    tag.add( "href",StringUtil.nval( getRequestParameter( href ),null ) );
354            }
355    
356            /**
357             * 【TAG】リンク作æ?時ã?ターゲãƒ?ƒˆ名をæŒ?®šしますã?
358             *
359             * @og.tag
360             * バã?の上ã?æ–?­—に対して、リンクを作æ?するときã?、ターゲãƒ?ƒˆ名をæŒ?®šできますã?
361             *
362             * @param   target リンク作æ?時ã?ターゲãƒ?ƒˆ
363             * @see         #setHref( String )
364             */
365            public void setTarget( final String target ) {
366                    tag.add( "target",StringUtil.nval( getRequestParameter( target ),null ) );
367            }
368    
369            /**
370             * 【TAG】既定ã?属æ?以外ã?属æ?を追åŠ?�—ますã?
371             *
372             * @og.tag
373             * {kay:val,key:val} 形式で、属æ?を追åŠ?�—ますã?
374             *
375             * @param   optAtt 属æ?を追åŠ?
376             */
377            public void setOptionAttributes( final String optAtt ) {
378                    tag.add( "optionAttributes",StringUtil.nval( getRequestParameter( optAtt ),null ) );
379            }
380    
381            /**
382             * 【TAG】最小ã?バã?を表示するかどã�?�‹[true/false]を指定しまã�?初期値:false)
383             *
384             * @og.tag
385             * 設定å?がã?ゼロの場合に、バーをå?したã�??合ã?、true にã€?
386             * 何も出したくなã�??合ã?、false に設定しますã?
387             * 初期値は、false(バã?をå?さなã�? ですã?
388             *
389             * @param   zeroBorder æœ?°�ã?バã?を表示するかどã�?�‹[true/false]
390             */
391            public void setZeroBorder( final String zeroBorder ) {
392                    tag.add( "zeroBorder",StringUtil.nval( getRequestParameter( zeroBorder ),null ) );
393            }
394    
395            /**
396             * 【TAG】グラフã?バã?のå¹?‚’æŒ?®šしますã?
397             *
398             * @og.tag
399             * 何もæŒ?®šしなã�??合ã?ã€??常のバã?の画像ファイルが適用されますã?
400             *
401             * @param   graphThick グラフã?バã?のå¹?
402             */
403            public void setGraphThick( final String graphThick ) {
404                    tag.add( "graphThick",StringUtil.nval( getRequestParameter( graphThick ),null ) );
405            }
406    
407            /**
408             * 【TAG】バーの間ã?左区åˆ?‚Šスペã?スをピクセルでæŒ?®šしまã�?初期値:null)
409             *
410             * @og.tag
411             * バã?表示で連続して同じ色で繋げるå?合ã?くっつã�?�¦表示されますã?
412             * これをã?区別できるように、左区åˆ?‚Šスペã?スをピクセルでæŒ?®šしますã?
413             *
414             * 初期値は、null(属æ?をå?力しなã�? ですã?
415             *
416             * @og.rev 5.6.4.3 (2013/05/24) 新規追åŠ?
417             *
418             * @param   paddingLeft 左区åˆ?‚Šスペã?ス
419             * @see         #setPaddingRigth( String )
420             */
421            public void setPaddingLeft( final String paddingLeft ) {
422                    tag.add( "paddingLeft",StringUtil.nval( getRequestParameter( paddingLeft ),null ) );
423            }
424    
425            /**
426             * 【TAG】バーの間ã?右区åˆ?‚Šスペã?スをピクセルでæŒ?®šしまã�?初期値:null)
427             *
428             * @og.tag
429             * バã?表示で連続して同じ色で繋げるå?合ã?くっつã�?�¦表示されますã?
430             * これをã?区別できるように、右区åˆ?‚Šスペã?スをピクセルでæŒ?®šしますã?
431             *
432             * 初期値は、null(属æ?をå?力しなã�? ですã?
433             *
434             * @og.rev 5.6.4.3 (2013/05/24) 新規追åŠ?
435             *
436             * @param   paddingRigth 左区åˆ?‚Šスペã?ス
437             * @see         #setPaddingLeft( String )
438             */
439            public void setPaddingRigth( final String paddingRigth ) {
440                    tag.add( "paddingRigth",StringUtil.nval( getRequestParameter( paddingRigth ),null ) );
441            }
442    
443            /**
444             * iBar タグがユニã?クになるよã�?�« id 値を返しますã?
445             *
446             * iBar は、レコードにè¤?•°作æ?されるためã?まずã?iBar作æ?都度のユニã?クIDと
447             * それをViewFormで展開後にユニã?クな番号になる様にするための行番号がçµ?�¿合わされã�?
448             * ID がå¿?¦�ですã?
449             * iBatXXX_[I] 形式ã?IDを作æ?しますã?
450             * 別スレãƒ?ƒ‰による同時アクセスで整合æ?がç?綻(同じ番号が返る)してもã?問題ありませんã€?
451             *
452             * @return  ユニã?クな id 値
453             */
454            private static String getTagId() {
455                    String id = "IBar" + ( tagId++ ) + "_[I]";
456    
457                    if( tagId > 999 ) { tagId = 100; }
458    
459                    return ( id );
460            }
461    
462            /**
463             * タグの名称をã?返しますã?
464             * 自åˆ??身のクラス名よりã?自動的に取り出せなã�?�Ÿめã?こã?メソãƒ?ƒ‰をオーバã?ライドしますã?
465             *
466             * @return  タグの名称
467             */
468            @Override
469            protected String getTagName() {
470                    return "iBar" ;
471            }
472    
473            /**
474             * こã?オブジェクトã?æ–?­—å?表現を返しますã?
475             * 基本çš?�«ãƒ?ƒ�ãƒ?‚°目çš?�«使用しますã?
476             *
477             * @return こã?クラスのæ–?­—å?表現
478             */
479            @Override
480            public String toString() {
481                    return org.opengion.fukurou.util.ToString.title( this.getClass().getName() )
482                                    .println( "VERSION"             ,VERSION                )
483                                    .println( "tag"                 ,tag.makeTag()  )
484                                    .println( "Other..."    ,getAttributes().getAttribute() )
485                                    .fixForm().toString() ;
486            }
487    }