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 }