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    /**
019     * ãƒ??ブルレイアウトで column タグ等ã?存在しなã�?©ºæ¬?®?‰€に挿入してã€?
020     * ãƒ??ブルの行å?の個数を合わせるタグですã?
021     *
022     * 通常の空æ¬??、ラベルと値とã�?�†?’つのé ?›®を別ã€??カラãƒ?�«登録するように
023     * <td></td>タグがã??’つ続いた形式をしてã�?�¾すが、ä¸?ˆ¬にã€?
024     * 個数は表示上ã?都合で任意ã?個数の<td>タグを使用したã�?‚±ースã�?
025     * ありますã?
026     * そã?場合ã?こã?SpaceTag を使っておけば,大量ã?作æ?済み画面を修正しなくてã‚?
027     * こã?クラスを修正するã�?�‘で,すべての空æ¬??ãƒ?‚¶インがキープできますã?
028     *
029     * @og.formSample
030     * ●形式ï¼?lt;og:space />
031     * ●body?šなã�?
032     *
033     * ●Tag定義??
034     *   <og:space
035     *       width              【TAG】å?体ã?大きさ(width 属æ?)を指定しまã�?
036     *       colspan            【TAG】å?体ã?大きさ(width 属æ?)を指定しまã�?
037     *       labelWidth         【TAG】ラベル部åˆ?前半部åˆ?の大きさ(width 属æ?)を指定しまã�?
038     *       valueWidth         【TAG】å?部åˆ?後半部åˆ?の大きさ(width 属æ?)を指定しまã�?
039     *       debug              【TAG】デバッグæƒ??をå?力するかどã�?�‹[true/false]を指定しまã�?初期値:false)
040     *   />
041     *
042     * ●使用ä¾?
043     *      通常の、ラベル部、フィールド部が空の td タグを生成しますã?
044     *      <og:space />
045     *
046     *      td タグの大きさを指定することができますã?
047     *      <og:space
048     *         labelWidth = "ラベル部åˆ?前半部åˆ?の大きさ(width 属æ?)を指定しますã?"
049     *         valueWidth = "値部åˆ?後半部åˆ?の大きさ(width 属æ?)を指定しますã?"
050     *      />
051     *
052     * @og.group 画面部å“?
053     *
054     * @version  4.0
055     * @author   Kazuhiko Hasegawa
056     * @since    JDK5.0,
057     */
058    public class SpaceTag extends CommonTagSupport {
059            //* こã?プログラãƒ??VERSIONæ–?­—å?を設定しますã?       {@value} */
060            private static final String VERSION = "5.1.9.0 (2010/08/01)" ;
061    
062            private static final long serialVersionUID = 519020100801L ;
063    
064            private String labelWidth = null ;
065            private String valueWidth = null ;
066            private String width      = null ;              // 5.1.9.0 (2010/08/01) 追åŠ?
067            private String colspan    = null ;              // 5.1.9.0 (2010/08/01) 追åŠ?
068    
069            /**
070             * Taglibの開始タグが見つかったときに処ç�?�™ã‚?doStartTag() ã‚?オーバã?ライドしますã?
071             *
072             * @return      後続å?ç�??æŒ?¤º( SKIP_BODY )
073             */
074            @Override
075            public int doStartTag() {
076                    jspPrint( makeTag() );
077                    return( SKIP_BODY );
078            }
079    
080            /**
081             * タグリブオブジェクトをリリースしますã?
082             * キャãƒ?‚·ュされて再利用されるã?で、フィールドã?初期設定を行いますã?
083             *
084             * @og.rev 3.1.1.2 (2003/04/04) Tomcat4.1 対応ã?release2() ã‚?doEndTag()で呼ぶã€?
085             * @og.rev 5.1.9.0 (2010/08/01) width , colspan 属æ?追åŠ?
086             */
087            @Override
088            protected void release2() {
089                    super.release2();
090                    labelWidth = null ;
091                    valueWidth = null ;
092                    width      = null ;             // 5.1.9.0 (2010/08/01) 追åŠ?
093                    colspan    = null ;             // 5.1.9.0 (2010/08/01) 追åŠ?
094            }
095    
096            /**
097             * 検索条件の入力用のãƒ?‚­ストフィールドを作æ?しますã?
098             *
099             * ãƒ??ブルタグによりフィールドã?åˆ?‰²されますã?
100             * 使用時ã?、テーブルタグを前後に使用して下さã�??
101             *
102             * @og.rev 5.1.9.0 (2010/08/01) width , colspan 属æ?追åŠ?
103             *
104             * @return  入力用のãƒ?‚­ストフィールドタグ
105             */
106            private String makeTag() {
107                    StringBuilder rtn = new StringBuilder();
108    
109                    // width æŒ?®?
110                    if( width != null && width.length() > 0  ) {
111                            // width が指定されると、強制çš?�« colspan を設定するã?
112                            if( colspan == null || colspan.length() == 0  ) {
113                                    colspan = "2";
114                            }
115                            rtn.append( "<td width=\"" );
116                            rtn.append( width );
117                            rtn.append( "\" colspan=\"" );
118                            rtn.append( colspan );
119                            rtn.append( "\"></td>" );
120                    }
121                    // すでに、width は未æŒ?®šなので、colspan のみ出åŠ?
122                    else if( colspan != null && colspan.length() > 0  ) {
123                            rtn.append( "<td colspan=\"" );
124                            rtn.append( colspan );
125                            rtn.append( "\"></td>" );
126                    }
127                    // width ã‚?colspan も未æŒ?®šã?場合ã?み、labelWidth、valueWidth をå?åŠ?
128                    else {
129                            if( labelWidth == null || labelWidth.length() == 0  ) {
130                                    rtn.append( "<td></td>" );
131                            }
132                            else {
133                                    rtn.append( "<td width=\"" );
134                                    rtn.append( labelWidth );
135                                    rtn.append( "\"></td>" );
136                            }
137    
138                            if( valueWidth == null || valueWidth.length() == 0  ) {
139                                    rtn.append( "<td></td>" );
140                            }
141                            else {
142                                    rtn.append( "<td width=\"" );
143                                    rtn.append( valueWidth );
144                                    rtn.append( "\"></td>" );
145                            }
146                    }
147                    return rtn.toString() ;
148            }
149    
150            /**
151             * 【TAG】å?体ã?大きさ(width 属æ?)を指定しますã?
152             *
153             * @og.tag
154             * 通常の space タグは、td ?’å?åˆ??タグをå?力しますが、width 属æ?ã‚?
155             * æŒ?®šしたå?合ã?、colspan="2" をセãƒ?ƒˆ下上で、width 属æ?に設定されますã?
156             *
157             * @og.rev 5.1.9.0 (2010/08/01) 新規追åŠ?
158             *
159             * @param   width 属æ?
160             */
161            public void setWidth( final String width ) {
162                    this.width = getRequestParameter( width );
163            }
164    
165            /**
166             * 【TAG】å?体ã?大きさ(width 属æ?)を指定しますã?
167             *
168             * @og.tag
169             * 属æ?は td タグの colspan 属æ?に設定されますã?
170             *
171             * @og.rev 5.1.9.0 (2010/08/01) 新規追åŠ?
172             *
173             * @param   colspan 属æ?
174             */
175            public void setColspan( final String colspan ) {
176                    this.colspan = getRequestParameter( colspan );
177            }
178    
179            /**
180             * 【TAG】ラベル部åˆ?前半部åˆ?の大きさ(width 属æ?)を指定しますã?
181             *
182             * @og.tag
183             * 属æ?は td タグの width 属æ?に設定されますã?
184             *
185             * @param   width 属æ?
186             */
187            public void setLabelWidth( final String width ) {
188                    labelWidth = getRequestParameter( width );
189            }
190    
191            /**
192             * 【TAG】å?部åˆ?後半部åˆ?の大きさ(width 属æ?)を指定しますã?
193             *
194             * @og.tag
195             * 属æ?は td タグの width 属æ?に設定されますã?
196             *
197             * @param   width 属æ?
198             */
199            public void setValueWidth( final String width ) {
200                    valueWidth = getRequestParameter( width );
201            }
202    
203            /**
204             * こã?オブジェクトã?æ–?­—å?表現を返しますã?
205             * 基本çš?�«ãƒ?ƒ�ãƒ?‚°目çš?�«使用しますã?
206             *
207             * @return こã?クラスのæ–?­—å?表現
208             */
209            @Override
210            public String toString() {
211                    return org.opengion.fukurou.util.ToString.title( this.getClass().getName() )
212                                    .println( "VERSION"                     ,VERSION        )
213                                    .println( "width"                       ,width          )
214                                    .println( "colspan"                     ,colspan        )
215                                    .println( "labelWidth"          ,labelWidth     )
216                                    .println( "valueWidth"          ,valueWidth     )
217                                    .println( "Other..."    ,getAttributes().getAttribute() )
218                                    .fixForm().toString() ;
219            }
220    }