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    }