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     * 明細棒グラフ(横棒?縦棒)に使用します?
025     *
026     * iBar タグは、TDタグの繰返し部に記述することで、横棒?縦棒グラフを作?します?
027     * 使用するには、headタグで、xxxx ="true" を設定する?があります?
028     * これにより、common/option/adjustBar.js が読み込まれます?
029     * 
030     * type は、グラフ要??表示形式を?します?0?? が予?で?,1,2,6 が現時点で実?みです?
031     *    0:ラベル表示 1:横?2:差? 6:縦?
032     *
033     * <table border="1" frame="box" rules="all">
034     *   <caption>棒グラ?描画方?/caption>
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     *   <caption>type 別設定方?/caption>
048     *   <tr><th>type</th><th>設定?           </th><th>説?          </th></tr>
049     *   <tr><td>0   </td><td>[V1]             </td><td>xx% また? 0.xx??比率を設定する???のみ??, 描画位置?baseValの?ラ??合計? * カラ?1の値</td></tr>
050     *   <tr><td>1   </td><td>[V1],[V2],…,[Vn]</td><td>棒?長さ=[V1],[V2],…,[Vn]?ラ??合計?</td></tr>
051     *   <tr><td>2   </td><td>[V1],[V2],…,[Vn]</td><td>描画位置?baseValの?ラ??合計? , 差?の長さ=valueの?ラ??合計? - baseValの?ラ?計?</td></tr>
052     *   <tr><td>6   </td><td>[V1],[V2],…,[Vn]</td><td>棒?長さ=[V1],[V2],…,[Vn]?ラ??合計?</td></tr>
053     * </table>
054     * 
055     * color は、棒グラフ要??ype="1"(横?,"6"(縦???色コードを設定します?
056     *       こ?コード?、予め決められた色画像を呼び出します?で、任意?色が使えると?事ではありません?
057     * <table border="1" frame="box" rules="all">
058     *   <caption>色番号 対応表</caption>
059     *   <tr><th>色番号</th><th>設定? </th><th>棒色  </th><th>?/th><th>横棒サンプル</th><th>縦棒サンプル</th></tr>
060     *   <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>
061     *   <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>
062     *   <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>
063     *   <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>
064     *   <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>
065     *   <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>
066     *   <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>
067     *   <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>
068     *   <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>
069     *   <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>
070     *   <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>
071     *   <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>
072     *   <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>
073     *   <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>
074     *   <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>
075     *   <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>
076     *   <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>
077     *   <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>
078     *   <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>
079     *   <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>
080     *   <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>
081     *   <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>
082     *   <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>
083     *   <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>
084     *   <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>
085     *   <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>
086     *   <tr><td> ?/td><td>  </td><td>  </td><td> </td><td>        ?/td><td>        ?/td></tr>
087     *   <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>
088     *   <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>
089     *   <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>
090     *   <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>
091     *   <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>
092     * </table>
093     *
094     * colorNo 色番号は、色コードを直接?する?ではなく?番号で?する?合に使用します?
095     *         棒グラフ要??ype="1"(横?,"6"(縦???色を設定します?
096     *         "1??5 , BK,WT,BL,RD,YL" の色番号で?します?
097     *         色番号は、与えた数字を?色数で割り算した余を使用します?で??番の場合で?
098     *         繰返し使われます?特殊な色として、BK,WT,BL,RD,YLは、番号ではなく記号で?できます?
099     * 
100     * zeroBorder は?true" で、?がゼロの時にも???バ?を表示する?
101     * 
102     * graphThick は、グラフ?バ?の??します?
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             * @og.rev 5.8.1.0 (2014/11/07) HTML5対応?javaScriptで、BODYがな?入れ子になってしま??
168             * @return      後続????
169             */
170            @Override
171            public int doEndTag() {
172                    debugPrint();           // 4.0.0 (2005/02/28)
173    
174                    tag.add( "id",getTagId() );
175    
176                    tag.setBody( "<!-- -->" );                // 5.8.1.0 (2014/11/07) HTML5対応?
177                    jspPrint( tag.makeTag() );
178    
179                    return(EVAL_PAGE);              // ペ?ジの残りを評価する?
180            }
181    
182            /**
183             * タグリブオブジェクトをリリースします?
184             * キャ?ュされて再利用される?で、フィールド?初期設定を行います?
185             *
186             */
187            @Override
188            protected void release2() {
189                    super.release2();
190                    tag = new TagBuffer( "iBar" );
191            }
192    
193            /**
194             * 【TAG】グラフ要??表示形式を設?0:ラベル表示 1:横?2:差? 6:縦?しま???)?
195             *
196             * @og.tag
197             * type は、グラフ要??表示形式を?します?0?? が予?で?,1,2,6 が現時点で実?みです?
198             * 0:ラベル表示 1:横?2:差? 6:縦?
199             *
200             * @param   type グラフ要??表示形式[0:ラベル表示 1:横?2:差? 6:縦棒]
201             */
202            public void setType( final String type ) {
203                    String tmpType = StringUtil.nval( getRequestParameter( type ),null );
204    
205                    if( tmpType == null || !check( tmpType, TYPE_LIST ) ) {
206                            String errMsg = "??表示形?type)は??か?また?、指定?値のみ登録可能です?"
207                                                            + HybsSystem.CR
208                                                            + "type=[" + tmpType + "] "
209                                                            + HybsSystem.CR
210                                                            + "登録可能な値=" + StringUtil.array2csv( TYPE_LIST ) ;
211                            throw new HybsSystemException( errMsg );
212                    }
213    
214                    tag.add( "type",tmpType );
215            }
216    
217            /**
218             * 【TAG】グラフ要??位置?さを設定しま?typeにより設定方法が異な?(??)
219             *
220             * @og.tag
221             * value は、グラフ要??位置?さを設定します?設定方法?、type 毎に異なります?
222             * baseVal は、グラフ要??描画開始位置を設定します?
223             * type=2:差? は、value ??baseVal の場合?、?を?value ??baseValの場合?、不足を表します?
224             * <table border="1" frame="box" rules="all">
225             *   <caption>グラフ?type別設定方?/caption>
226             *   <tr><th>type</th><th>設定?           </th><th>説?          </th></tr>
227             *   <tr><td>0   </td><td>[V1]             </td><td>xx% また? 0.xx??比率を設定する???のみ?? 描画位置?baseValの?ラ??合計? * カラ?1の値</td></tr>
228             *   <tr><td>1   </td><td>[V1],[V2],…,[Vn]</td><td>棒?長さ=[V1],[V2],…,[Vn]?ラ??合計?</td></tr>
229             *   <tr><td>2   </td><td>[V1],[V2],…,[Vn]</td><td>描画位置?baseValの?ラ??合計? , 差?の長さ=valueの?ラ??合計? - baseValの?ラ?計?</td></tr>
230             *   <tr><td>6   </td><td>[V1],[V2],…,[Vn]</td><td>棒?長さ=[V1],[V2],…,[Vn]?ラ??合計?</td></tr>
231             * </table>
232             *
233             * @param   val グラフ要??位置??
234             */
235            public void setValue( final String val ) {
236                    String tmpVal = StringUtil.nval( getRequestParameter( val ),null );
237    
238                    if( tmpVal == null ) {
239                            String errMsg = "value は、??です?";
240                            throw new HybsSystemException( errMsg );
241                    }
242    
243                    tag.add( "value",tmpVal );
244            }
245    
246            /**
247             * 【TAG】グラフ要??描画開始位置を設定します?
248             *
249             * @og.tag
250             * こ?値は、type=0,2の場合???になります?
251             * type=2:差? は、value ??baseVal の場合?、?を?value ??baseValの場合?、不足を表します?
252             * <table border="1" frame="box" rules="all">
253             *   <caption>グラフ?type別設定方?/caption>
254             *   <tr><th>type</th><th>設定?           </th><th>説?          </th></tr>
255             *   <tr><td>0   </td><td>[V1]             </td><td>xx% また? 0.xx??比率を設定する???のみ??, 描画位置?baseValの?ラ??合計? * カラ?1の値</td></tr>
256             *   <tr><td>2   </td><td>[V1],[V2],…,[Vn]</td><td>描画位置?baseValの?ラ??合計? , 差?の長さ=valueの?ラ??合計? - baseValの?ラ?計?</td></tr>
257             * </table>
258             *
259             * @param   bval グラフ要??描画開始位置
260             */
261            public void setBaseVal( final String bval ) {
262                    tag.add( "baseVal",StringUtil.nval( getRequestParameter( bval ), null ) );
263            }
264    
265            /**
266             * 【TAG】棒グラフ要??ype="1"(横?,"6"(縦???色コードを設定します?
267             *
268             * @og.tag
269             * color は、棒グラフ要??ype="1"(横?,"6"(縦???色コードを設定します?
270             * こ?コード?、予め決められた色画像を呼び出します?で、任意?色が使えると?事ではありません?
271             * 色??、横棒?場合?、image/W_色コー?png で、縦棒?場合?、image/H_色コー?png の画像を使?す?
272             * 色コー?と 色番号が同時に?された場合?、色コー?が優先されます?
273             *
274             * type=2:差? は、value ??baseVal の場合?、?を?value ??baseValの場合?、不足を表します?
275             * <table border="1" frame="box" rules="all">
276             *   <caption>色番号 対応表</caption>
277             *   <tr><th>色番号</th><th>設定? </th><th>棒色  </th><th>?/th><th>横棒サンプル</th><th>縦棒サンプル</th></tr>
278             *   <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>
279             *   <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>
280             *   <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>
281             *   <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>
282             *   <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>
283             *   <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>
284             *   <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>
285             *   <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>
286             *   <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>
287             *   <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>
288             *   <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>
289             *   <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>
290             *   <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>
291             *   <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>
292             *   <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>
293             *   <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>
294             *   <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>
295             *   <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>
296             *   <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>
297             *   <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>
298             *   <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>
299             *   <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>
300             *   <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>
301             *   <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>
302             *   <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>
303             *   <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>
304             *   <tr><td> ?/td><td>  </td><td>  </td><td> </td><td>        ?/td><td>        ?/td></tr>
305             *   <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>
306             *   <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>
307             *   <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>
308             *   <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>
309             *   <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>
310             * </table>
311             *
312             * @param   color グラフ要??位置??
313             */
314            public void setColor( final String color ) {
315                    tag.add( "color",StringUtil.nval( getRequestParameter( color ),null ) );
316            }
317    
318            /**
319             * 【TAG】グラフ要??色番号を設定します?
320             *
321             * @og.tag
322             * 色番号は、色コードを直接?する?ではなく?番号で?する?合に使用します?
323             * 棒グラフ要??ype="1"(横?,"6"(縦???色を設定します?
324             * "1??5 , BK,WT,BL,RD,YL" の色番号で?します?
325             * 色番号は、与えた数字を?色数で割り算した余を使用します?で??番の場合で?
326             * 繰返し使われます?特殊な色として、BK,WT,BL,RD,YLは、番号ではなく記号で?できます?
327             * 色コー?と 色番号が同時に?された場合?、色コー?が優先されます?
328             *
329             * @param   clrNo グラフ要??描画開始位置
330             * @see         #setColor( String )
331             */
332            public void setColorNo( final String clrNo ) {
333                    tag.add( "colorNo",StringUtil.nval( getRequestParameter( clrNo ),null ) );
334            }
335    
336            /**
337             * 【TAG】バー上に表示する?ストを?します?
338             *
339             * @og.tag
340             * バ?の上に、?などの?を重?て表示できます?
341             *
342             * @param   text バ?上に表示する?ス?
343             */
344            public void setText( final String text ) {
345                    tag.add( "text",StringUtil.nval( getRequestParameter( text ),null ) );
346            }
347    
348            /**
349             * 【TAG】リンク作?時?値を設定します?
350             *
351             * @og.tag
352             * バ?の上??に対して、リンクを作?できます?
353             *
354             * @param   href バ?上に表示する?ス?
355             * @see         #setTarget( String )
356             */
357            public void setHref( final String href ) {
358                    tag.add( "href",StringUtil.nval( getRequestParameter( href ),null ) );
359            }
360    
361            /**
362             * 【TAG】リンク作?時?ターゲ?名を?します?
363             *
364             * @og.tag
365             * バ?の上??に対して、リンクを作?するとき?、ターゲ?名を?できます?
366             *
367             * @param   target リンク作?時?ターゲ?
368             * @see         #setHref( String )
369             */
370            public void setTarget( final String target ) {
371                    tag.add( "target",StringUtil.nval( getRequestParameter( target ),null ) );
372            }
373    
374            /**
375             * 【TAG】既定?属?以外?属?を追?ます?
376             *
377             * @og.tag
378             * {kay:val,key:val} 形式で、属?を追?ます?
379             *
380             * @param   optAtt 属?を追?
381             */
382            public void setOptionAttributes( final String optAtt ) {
383                    tag.add( "optionAttributes",StringUtil.nval( getRequestParameter( optAtt ),null ) );
384            }
385    
386            /**
387             * 【TAG】最小?バ?を表示するかど?[true/false]を指定しま?初期値:false)
388             *
389             * @og.tag
390             * 設定?が?ゼロの場合に、バーを?した??合?、true に?
391             * 何も出したくな??合?、false に設定します?
392             * 初期値は、false(バ?を?さな? です?
393             *
394             * @param   zeroBorder ??バ?を表示するかど?[true/false]
395             */
396            public void setZeroBorder( final String zeroBorder ) {
397                    tag.add( "zeroBorder",StringUtil.nval( getRequestParameter( zeroBorder ),null ) );
398            }
399    
400            /**
401             * 【TAG】グラフ?バ?の??します?
402             *
403             * @og.tag
404             * 何も?しな??合???常のバ?の画像ファイルが適用されます?
405             *
406             * @param   graphThick グラフ?バ?の?
407             */
408            public void setGraphThick( final String graphThick ) {
409                    tag.add( "graphThick",StringUtil.nval( getRequestParameter( graphThick ),null ) );
410            }
411    
412            /**
413             * 【TAG】バーの間?左区?スペ?スをピクセルで?しま?初期値:null)
414             *
415             * @og.tag
416             * バ?表示で連続して同じ色で繋げる?合?くっつ?表示されます?
417             * これを?区別できるように、左区?スペ?スをピクセルで?します?
418             *
419             * 初期値は、null(属?を?力しな? です?
420             *
421             * @og.rev 5.6.4.3 (2013/05/24) 新規追?
422             *
423             * @param   paddingLeft 左区?スペ?ス
424             * @see         #setPaddingRigth( String )
425             */
426            public void setPaddingLeft( final String paddingLeft ) {
427                    tag.add( "paddingLeft",StringUtil.nval( getRequestParameter( paddingLeft ),null ) );
428            }
429    
430            /**
431             * 【TAG】バーの間?右区?スペ?スをピクセルで?しま?初期値:null)
432             *
433             * @og.tag
434             * バ?表示で連続して同じ色で繋げる?合?くっつ?表示されます?
435             * これを?区別できるように、右区?スペ?スをピクセルで?します?
436             *
437             * 初期値は、null(属?を?力しな? です?
438             *
439             * @og.rev 5.6.4.3 (2013/05/24) 新規追?
440             *
441             * @param   paddingRigth 左区?スペ?ス
442             * @see         #setPaddingLeft( String )
443             */
444            public void setPaddingRigth( final String paddingRigth ) {
445                    tag.add( "paddingRigth",StringUtil.nval( getRequestParameter( paddingRigth ),null ) );
446            }
447    
448            /**
449             * iBar タグがユニ?クになるよ? id 値を返します?
450             *
451             * iBar は、レコードに?作?されるため?まず?iBar作?都度のユニ?クIDと
452             * それをViewFormで展開後にユニ?クな番号になる様にするための行番号が?合わされ?
453             * ID が?です?
454             * iBatXXX_[I] 形式?IDを作?します?
455             * 別スレ?による同時アクセスで整合?が?綻(同じ番号が返る)しても?問題ありません?
456             *
457             * @return  ユニ?クな id 値
458             */
459            private static String getTagId() {
460                    String id = "IBar" + ( tagId++ ) + "_[I]";
461    
462                    if( tagId > 999 ) { tagId = 100; }
463    
464                    return ( id );
465            }
466    
467            /**
468             * タグの名称を?返します?
469             * 自??身のクラス名より?自動的に取り出せな?め?こ?メソ?をオーバ?ライドします?
470             *
471             * @return  タグの名称
472             */
473            @Override
474            protected String getTagName() {
475                    return "iBar" ;
476            }
477    
478            /**
479             * こ?オブジェクト???表現を返します?
480             * 基本???目?使用します?
481             *
482             * @return こ?クラスの??表現
483             */
484            @Override
485            public String toString() {
486                    return org.opengion.fukurou.util.ToString.title( this.getClass().getName() )
487                                    .println( "VERSION"             ,VERSION                )
488                                    .println( "tag"                 ,tag.makeTag()  )
489                                    .println( "Other..."    ,getAttributes().getAttribute() )
490                                    .fixForm().toString() ;
491            }
492    }