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.resource.GUIInfo;
020 import org.opengion.fukurou.util.Attributes;
021 import org.opengion.fukurou.util.XHTMLTag;
022
023 import static org.opengion.fukurou.util.StringUtil.nval ;
024
025 import java.io.File;
026
027 /**
028 * 画面?©?¤と同じヘルプファイルがあれã?リンクを作æ?するタグでã�?通常は query.jsp にçµ?¾¼み)ã€?
029 *
030 * ヘルプファイルは、シスãƒ?ƒ パラメータ の HELP_URL で定義されてã�?‚‹helpフォルãƒ?�«配置しますã?
031 * こã?フォルãƒ?�«、画面IDと同じファイル(例えば、GE0001.html など)があれã?、リンクを作æ?しますã?
032 * ファイルがなければ、リンクは表示されませんã€?
033 * メãƒ?‚»ージの表示の制御は、viewMsg 属æ?でæŒ?®šしますã?(false でファイルが存在した場合ã?み表示)
034 * ファイルの拡張子もæŒ?®šできますが、ä¸?ˆ¬に、html でヘルプファイルを作æ?するほã�?�Œ
035 * すã?ã‚?��表示できますã?
036 * またã?og:topMenuタグå†?�«こã?タグを記述することで、各画面åˆ?¡žに対するヘルプを表示することã�?
037 * できるようになりますã?
038 * (こã?場合も、画面åˆ?¡žã?キーがã?ルプファイルのキーになりまã�?
039 *
040 * @og.formSample
041 * ●形式:ä¸?ˆ¬ユーザーが直接çµ?�¿込ã‚?�“とはありませんã€?
042 * ●body?šなã�?
043 *
044 * ●Tag定義??
045 * <og:help
046 * guiInfoKey 【TAG】GUIInfo のキーを指定しまã�?
047 * extension 【TAG】拡張子をæŒ?®šしまã�?初期値:html)
048 * lbl 【TAG】ラベルリソースのラベルIDを指定しまã�?
049 * target 【TAG】TARGET 属æ?を指定しまã�?初期値:_blank)
050 * viewMsg 【TAG】メãƒ?‚»ージを常時表示させるかどã�?�‹[true/false]を指定しまã�?初期値:false)
051 * iconURL 【TAG】ã?ルプリンクをアイコンでæŒ?®šするå?合ã?アイコンURLを指定しまã�?(初期値:DEFAULT_HELP_ICON[=/image/help2.png])
052 * faqIconURL 【TAG】FAQリンクをアイコンでæŒ?®šするå?合ã?アイコンURLを指定しまã�?(初期値:DEFAULT_FAQ_ICON[=/image/qaicon.png])
053 * useFaq 【TAG】FAQ表示の機è?を利用するかどã�?�‹[true/false]を指定しまã�?(初期値:USE_GUI_FAQ[=false])
054 * debug 【TAG】デバッグæƒ??をå?力するかどã�?�‹[true/false]を指定しまã�?初期値:false)
055 * />
056 *
057 * ●使用ä¾?
058 * <og:help guiInfoKey="{@GUI.KEY}" lbl="HELP" />
059 *
060 * <og:help
061 * guiInfoKey = "GUIInfo のキーを指定しまã�?å¿??)ã€?
062 * extension = "拡張子をæŒ?®šしまã�?初期値:html)ã€?
063 * lbl = "ラベルリソースのメãƒ?‚»ージIDを指定しますã?"
064 * target = "TARGET 属æ?を指定しまã�?初期値:_blank)ã€?
065 * viewMsg = "メãƒ?‚»ージを常時表示させるかどã�?�‹[true/false]を指定しまã�?初期値:false)ã€?
066 * iconURL = "ヘルプアイコンのURL(初期値:/image/help.png)"; // 5.3.8.0 (2011/08/01)
067 * />
068 *
069 * @og.group メニュー制御
070 *
071 * @version 4.0
072 * @author Kazuhiko Hasegawa
073 * @since JDK5.0,
074 */
075 public class HelpTag extends CommonTagSupport {
076 //* こã?プログラãƒ??VERSIONæ–?—å?を設定しますã? {@value} */
077 private static final String VERSION = "5.6.7.3 (2013/08/23)" ;
078
079 private static final long serialVersionUID = 567320130823L ; // 5.6.7.3 (2013/08/23)
080
081 private static final String JSP = HybsSystem.sys( "JSP" );
082
083 private String guiInfoKey = null;
084 private String extension = "html";
085 private String baseURL = HybsSystem.sys( "HELP_URL" );
086 private String target = "_blank"; // 3.6.0.7 (2004/11/06)
087 private boolean viewMsg = false;
088 // private String iconURL = "/image/help.png"; // 5.3.8.0 (2011/08/01)
089 private String iconURL = HybsSystem.sys( "DEFAULT_HELP_ICON" ); // 5.4.3.6 (2012/01/19)
090 private String faqIconURL = HybsSystem.sys( "DEFAULT_FAQ_ICON" ); // 5.5.0.4 (2012/03/16)
091 // private boolean useFaq = HybsSystem.sysBool( "USE_GUI_FAQ " ); // 5.5.0.4 (2012/03/16)
092 private String faqGUI = HybsSystem.sys( "DEFAULT_FAQ_GUI" ); // 5.5.0.4 (2012/03/16)
093 // private String syscode = "*"; // 5.5.0.4 (2012/03/16)
094 // private boolean useFaqCtrl = HybsSystem.sysBool( "USE_GUI_FAQ_CTRL " ); // 5.6.4.3 (2013/05/24)
095
096 private boolean useFaq = HybsSystem.sysBool( "USE_GUI_FAQ" ); // 5.6.7.3 (2013/08/23)
097 private boolean useFaqCtrl = HybsSystem.sysBool( "USE_GUI_FAQ_CTRL" ); // 5.6.7.3 (2013/08/23)
098
099 /**
100 * Taglibの終äº?‚¿グが見つかったときに処ç�?�™ã‚?doEndTag() ã‚?オーバã?ライドしますã?
101 *
102 * @og.rev 3.1.1.2 (2003/04/04) Tomcat4.1 対応ã?release2() ã‚?doEndTag()で呼ぶã€?
103 * @og.rev 5.3.9.0 (2011/09/01) メニューでのヘルプアイコン対å¿?
104 * @og.rev 5.5.0.4 (2012/03/16) FAQ対å¿?
105 * @og.rev 5.6.4.3 (2013/05/26) FAQの画面別対å¿?
106 *
107 * @return 後続å?ç�??æŒ?¤º
108 */
109 @Override
110 public int doEndTag() {
111 debugPrint(); // 4.0.0 (2005/02/28)
112
113 TopMenuTag topMenu = (TopMenuTag)findAncestorWithClass( this,TopMenuTag.class );
114 if( topMenu == null ) {
115 jspPrint( makeTag() );
116 if(useFaq){
117 jspPrint( makeTagFaq() );
118 }
119 }
120 else {
121 // 5.3.9.0 (2011/09/01) メニューでのヘルプアイコン対å¿?
122 String linkFormat = getLink( baseURL + "{FILENAME}" );
123 String baseDir = HybsSystem.url2dir( baseURL );
124 topMenu.add( "helpLinkFormat",linkFormat );
125 topMenu.add( "helpBaseDir",baseDir );
126 if(useFaq){ // 5.5.0.4 (2012/03/16) FAQ対å¿?
127 GUIInfo guiInfo = getGUIInfo( faqGUI );
128 if( guiInfo != null ) {
129 String address = guiInfo.getRealAddress( get( "href" ) );
130 String faqFormat = getFAQLink(getRequestParameter( address+"?command=NEW&GAMENID="+faqGUI+"&KNRNGUI={GUIKEY}" ));
131 topMenu.add( "faqLinkFormat",faqFormat );
132 }
133 }
134 }
135
136 return(EVAL_PAGE);
137 }
138
139 /**
140 * タグリブオブジェクトをリリースしますã?
141 * キャãƒ?‚·ュされて再利用されるã?で、フィールドã?初期設定を行いますã?
142 *
143 * @og.rev 2.0.0.4 (2002/09/27) カスタãƒ?‚¿グの release() メソãƒ?ƒ‰をã?追åŠ?
144 * @og.rev 3.0.0.3 (2003/02/21) ターゲãƒ?ƒˆ属æ?の新規追åŠ?»?
145 * @og.rev 3.1.1.2 (2003/04/04) Tomcat4.1 対応ã?release2() ã‚?doEndTag()で呼ぶã€?
146 * @og.rev 3.6.0.7 (2004/11/06) target 属æ?の初期値ã‚?_new から _blank に変更
147 * @og.rev 5.3.8.0 (2011/08/01) iconURL追åŠ?
148 * @og.rev 5.5.0.4 (2012/03/16) faq
149 * @og.rev 5.6.4.3 (2013/05/24) faqCtrl
150 * @og.rev 5.6.7.3 (2013/08/23) useFaq と useFaqCtrl のキーの後ろにスペã?スがå?ってã�?�Ÿã€?
151 */
152 @Override
153 protected void release2() {
154 super.release2();
155 guiInfoKey = null;
156 extension = "html";
157 baseURL = HybsSystem.sys( "HELP_URL" );
158 target = "_blank"; // 3.6.0.7 (2004/11/06)
159 viewMsg = false;
160 // iconURL = "/image/help.png"; // 5.3.8.0 (2011/08/01)
161 iconURL = HybsSystem.sys( "DEFAULT_HELP_ICON" ); // 5.4.3.6 (2012/01/19)
162 faqIconURL = HybsSystem.sys( "DEFAULT_FAQ_ICON" ); // 5.5.0.4 (2012/03/16)
163 // useFaq = HybsSystem.sysBool( "USE_GUI_FAQ " ); // 5.5.0.4 (2012/03/16)
164 faqGUI = HybsSystem.sys( "DEFAULT_FAQ_GUI" ); // 5.5.0.4 (2012/03/16)
165 // syscode = "*"; // 5.5.0.4 (2012/03/16)
166 // useFaqCtrl = HybsSystem.sysBool( "USE_GUI_FAQ_CTRL " ); // 5.6.4.3 (2013/05/24)
167
168 useFaq = HybsSystem.sysBool( "USE_GUI_FAQ" ); // 5.6.7.3 (2013/08/23)
169 useFaqCtrl = HybsSystem.sysBool( "USE_GUI_FAQ_CTRL" ); // 5.6.7.3 (2013/08/23)
170 }
171
172 /**
173 * HELPリンクを作æ?しますã?
174 *
175 * @og.rev 3.0.0.3 (2003/02/21) ターゲãƒ?ƒˆ属æ?の新規追åŠ?
176 * @og.rev 3.0.1.0 (2003/03/03) viewMsg フラグの制御のバグ修正
177 * @og.rev 5.3.8.0 (2011/08/01) iconURL対å¿?
178 * @og.rev 5.3.9.0 (2011/09/01) メニューでのヘルプアイコン対å¿?
179 * @og.rev 5.5.0.4 (2012/03/16) faq
180 *
181 * @return リンクタグæ–?—å?
182 */
183 protected String makeTag() {
184 String rtn = "";
185
186 if( guiInfoKey == null ) {
187 guiInfoKey = getGUIInfoAttri( "KEY" );
188 }
189
190 String url = baseURL + guiInfoKey + "." + extension;
191 File file = new File( HybsSystem.url2dir( url ) );
192
193 // ファイルの存在チェãƒ?‚¯
194 if( file.exists() ) { // 3.5.6.0 (2004/06/18)
195 // 5.3.9.0 (2011/09/01) メニューでのヘルプアイコン対å¿?
196 // Attributes attri = new Attributes();
197 // String path = getContextPath();
198 // attri.set( "href",path + "/" + url );
199 // attri.set( "body",getMsglbl() );
200 // attri.set( "body",getLinkBody() );
201 // attri.set( "target",target );
202 //
203 // rtn = XHTMLTag.link( attri ) ;
204 rtn = getLink( url );
205 }
206 else if( viewMsg ) {
207 // rtn = getMsglbl() ;
208 // rtn = getLinkBody();
209 rtn = getLinkBody(null,getMsglbl()); // 5.5.0.4
210 }
211
212 return rtn;
213 }
214
215 /**
216 * FAQリンクを作æ?しますã?
217 *
218 * @og.rev 5.3.9.0 (2011/09/01) メニューでのヘルプアイコン対å¿?
219 * @og.rev 5.6.4.3 (2013/05/24) FAQ存在チェãƒ?‚¯対å¿?
220 *
221 * @return リンクタグæ–?—å?
222 */
223 protected String makeTagFaq() {
224 String rtn = "";
225
226 if( !useFaqCtrl && !"true".equals(getGUIInfoAttri( "FAQ" ) ) ) { return rtn; } // 5.6.4.3 (2013/05/24) 若干ã‚?�£つã�?
227
228 if( guiInfoKey == null ) {
229 guiInfoKey = getGUIInfoAttri( "KEY" );
230 }
231
232 GUIInfo guiInfo = getGUIInfo( faqGUI );
233 if( guiInfo == null ) { return rtn; } // 見つからなã�??合ã?、アクセス不可
234
235 String address = guiInfo.getRealAddress( get( "href" ) );
236 String url = getRequestParameter( address+"?command=NEW&GAMENID="+faqGUI+"&KNRNGUI="+guiInfoKey );
237
238 rtn = getFAQLink( url );
239
240 return rtn;
241 }
242
243 /**
244 * リンクæ–?—å?を作æ?しますã?
245 *
246 * @og.rev 5.3.9.0 (2011/09/01) 新規作æ?
247 * @og.rev 5.5.0.4 (2012/03/16) faq
248 *
249 * @param url リンクのURL
250 *
251 * @return リンクæ–?—å?
252 */
253 private String getLink( final String url ) {
254 Attributes attri = new Attributes();
255 String path = getContextPath();
256 attri.set( "href",path + "/" + url );
257 // attri.set( "body",getMsglbl() );
258 // attri.set( "body",getLinkBody() );
259 attri.set( "body",getLinkBody(iconURL,getMsglbl()) ); //5.5.0.4 (2012/03/16)
260 attri.set( "target",target );
261 attri.set( "class", "helplink" );
262
263 return XHTMLTag.link( attri );
264 }
265
266 /**
267 * FAQリンクæ–?—å?を作æ?しますã?
268 *
269 * @og.rev 5.5.0.4 (2012/03/16) 新規作æ?
270 *
271 * @param url リンクのURL
272 *
273 * @return リンクæ–?—å?
274 */
275 private String getFAQLink( final String url ) {
276 Attributes attri = new Attributes();
277 attri.set( "href", url );
278 attri.set( "body",getLinkBody(faqIconURL,"FAQ") );
279 attri.set( "target",target );
280 attri.set( "class", "faqlink" );
281
282 return XHTMLTag.link( attri );
283 }
284
285 /**
286 * リンクのボディー部åˆ?‚’作æ?しますã?
287 *
288 * @og.rev 5.3.8.0 (2011/08/01) 新規作æ?
289 * @og.rev 5.3.9.0 (2011/09/01) 画像表示時にtitle属æ?を付加
290 * @og.rev 5.5.0.4 (2012/03/16) 引数対å¿?
291 *
292 * @param icon アイコン
293 * @param title タイトル
294 *
295 * @return リンクボディーæ–?—å?
296 */
297 // private String getLinkBody() {
298 private String getLinkBody(final String icon, final String title) {
299 String rtn = null;
300 // if( iconURL == null || iconURL.length() == 0 ) {
301 if( icon == null || icon.length() == 0 ) {
302 rtn = getMsglbl();
303 }
304 else {
305 rtn = "<img src=\"" + JSP + icon + "\" title=\"" + title + "\"/>";
306 }
307 return rtn;
308 }
309
310 /**
311 * 【TAG】GUIInfo のキーを指定しますã?
312 *
313 * @og.tag GUIInfo のキーを指定しますã?
314 *
315 * @param key GUIInfo のキー
316 */
317 public void setGuiInfoKey( final String key ) {
318 guiInfoKey = getRequestParameter( key );
319 }
320
321 /**
322 * 【TAG】拡張子をæŒ?®šしまã�?初期値:html)ã€?
323 *
324 * @og.tag
325 * なにも設定されてã�?�ªã�??合ã?ã€?html" がå?期å?となりますã?
326 * ここでは、ピリオドã?、含めるå¿?¦�ã?ありませんã€?
327 *
328 * @param ext 拡張å?
329 */
330 public void setExtension( final String ext ) {
331 extension = nval( getRequestParameter( ext ),extension );
332 }
333
334 /**
335 * 【TAG】TARGET 属æ?を指定しまã�?初期値:_blank)ã€?
336 *
337 * @og.tag
338 * 初期値はã€?"_blank" として、新規に画面を立ち上げますã?
339 * CONTENTS 等をæŒ?®šすれã?、コンãƒ?ƒ³ãƒ?ƒ•レーãƒ?メニューの右側全面)にã€?
340 * RESULT を指定すれã?、リザルトフレーãƒ?メニュー右下å?)に表示しますã?
341 *
342 * @og.rev 3.0.0.3 (2003/02/21) ターゲãƒ?ƒˆ属æ?の新規追åŠ?
343 *
344 * @param val TARGET 属æ?を指定しまã�?初期値:"_blank")
345 */
346 public void setTarget( final String val ) {
347 target = nval( getRequestParameter( val ),target );
348 }
349
350 /**
351 * 【TAG】メãƒ?‚»ージを常時表示させるかどã�?�‹[true/false]を指定しまã�?初期値:false)ã€?
352 *
353 * @og.tag
354 * "true"の場合ã?、常時表示させますã?
355 * ファイルがã?存在した場合ã?、リンクが張られ、存在しなã�??合ã?、リンクã�?
356 * 張られませんã€?
357 * "false" の場合ã?、ファイルがã?存在した場合ã?、リンクが張られ、存在しなã�??合ã?ã€?
358 * なにも表示されませんã€?
359 * 初期値はã€?"false"(メãƒ?‚»ージを常時表示しなã�?ですã?
360 *
361 * @og.rev 3.0.0.3 (2003/02/21) メãƒ?‚»ージ表示属æ?の新規追åŠ?
362 *
363 * @param flag メãƒ?‚»ージを常時表示させるかどã�?�‹を指å®?[true:常時表示/false:非表示]
364 */
365 public void setViewMsg( final String flag ) {
366 viewMsg = nval( getRequestParameter( flag ),viewMsg );
367 }
368
369 /**
370 * 【TAG】ã?ルプリンクをアイコンでæŒ?®šするå?合ã?アイコンURLを指定しまã�?
371 * (初期値:DEFAULT_HELP_ICON[={@og.value org.opengion.hayabusa.common.SystemData#DEFAULT_HELP_ICON}])ã€?
372 *
373 * @og.tag
374 * ヘルプリンクをアイコンでæŒ?®šするå?合ã?そã?アイコン画像ã?URLを指定しますã?
375 * URLはã€?[CONTEXT_PATH]/jspを基準としてæŒ?®šしますã?
376 * ä¾? /ge/jsp/image/help.pngに存在する画像をæŒ?®šするå?合ã?iconURL=/image/help.pngを指定しますã?
377 * こã?URLが指定されなã�??合ã?ヘルプリンクは、msgLbl属æ?でæŒ?®šされたãƒ?‚ストで表示されますã?
378 * (初期値:シスãƒ?ƒ 定数のDEFAULT_HELP_ICON[={@og.value org.opengion.hayabusa.common.SystemData#DEFAULT_HELP_ICON}])ã€?
379 *
380 * @og.rev 5.3.8.0 (2011/08/01) 新規追åŠ?
381 *
382 * @param url アイコンURL
383 * @see org.opengion.hayabusa.common.SystemData#DEFAULT_HELP_ICON
384 */
385 public void setIconURL( final String url ) {
386 iconURL = nval( getRequestParameter( url ),iconURL );
387 }
388
389 /**
390 * 【TAG】FAQリンクをアイコンでæŒ?®šするå?合ã?アイコンURLを指定しまã�?
391 * (初期値:DEFAULT_FAQ_ICON[={@og.value org.opengion.hayabusa.common.SystemData#DEFAULT_FAQ_ICON}])ã€?
392 *
393 * @og.tag
394 * FAQリンクをアイコンでæŒ?®šするå?合ã?そã?アイコン画像ã?URLを指定しますã?
395 * URLはã€?[CONTEXT_PATH]/jspを基準としてæŒ?®šしますã?
396 * ä¾? /ge/jsp/image/help.pngに存在する画像をæŒ?®šするå?合ã?iconURL=/image/help.pngを指定しますã?
397 * (初期値:シスãƒ?ƒ 定数のDEFAULT_FAQ_ICON[={@og.value org.opengion.hayabusa.common.SystemData#DEFAULT_FAQ_ICON}])ã€?
398 *
399 * @og.rev 5.3.8.0 (2011/08/01) 新規追åŠ?
400 *
401 * @param url アイコンURL
402 * @see org.opengion.hayabusa.common.SystemData#DEFAULT_FAQ_ICON
403 */
404 public void setFaqIconURL( final String url ) {
405 faqIconURL = nval( getRequestParameter( url ),faqIconURL );
406 }
407
408 /**
409 * 【TAG】FAQ表示の機è?を利用するかどã�?�‹[true/false]を指定しまã�?
410 * (初期値:USE_GUI_FAQ[={@og.value org.opengion.hayabusa.common.SystemData#USE_GUI_FAQ}])ã€?
411 *
412 * @og.tag
413 * trueを指定すると、FAQ画面へのリンクが表示されますã?(GE80にãƒ??タが存在するかã?無関ä¿?
414 * リンク先ã?faqGUIでセãƒ?ƒˆした画面に対して画面IDを引数としてわたしますã?
415 * (初期値:シスãƒ?ƒ 定数のUSE_GUI_FAQ[={@og.value org.opengion.hayabusa.common.SystemData#USE_GUI_FAQ}])ã€?
416 *
417 * @og.rev 5.5.0.4 (2012/03/167) 新規追åŠ?
418 *
419 * @param flag FAQ表示の機è?を利用するかどã�?�‹ [true:利用する/false:利用しない]
420 * @see org.opengion.hayabusa.common.SystemData#USE_GUI_FAQ
421 */
422 public void setUseFaq( final String flag ) {
423 useFaq = nval( getRequestParameter( flag ),useFaq );
424 }
425
426
427 /**
428 * 【TAG】FAQに関連画面機è?を利用するかどã�?�‹[true/false]を指定しますã?
429 * (初期値:USE_GUI_FAQ_CTRL[={@og.value org.opengion.hayabusa.common.SystemData#USE_GUI_FAQ_CTRL}])ã€?
430 *
431 * @og.tag
432 * trueを指定すると、GE80にãƒ??タが関連画面IDとして存在する場合ã?みアイコンã‚?
433 * リンク先ã?faqGUIでセãƒ?ƒˆした画面に対して画面IDを引数としてわたしますã?
434 * (初期値:シスãƒ?ƒ 定数のUSE_GUI_FAQ[={@og.value org.opengion.hayabusa.common.SystemData#USE_GUI_FAQ}])ã€?
435 *
436 * @og.rev 5.6.4.3 (2013/05/24) 新規追åŠ?
437 *
438 * @param flag FAQの存在チェãƒ?‚¯機è?を利用するかどã�?�‹ [true:利用する/false:利用しない]
439 * @see org.opengion.hayabusa.common.SystemData#USE_GUI_FAQ_CTRL
440 */
441 public void setUseFaqCtrl( final String flag ) {
442 useFaqCtrl = nval( getRequestParameter( flag ),useFaqCtrl );
443 }
444
445 /**
446 * こã?オブジェクトã?æ–?—å?表現を返しますã?
447 * 基本çš?�«ãƒ?ƒ�ãƒ?‚°目çš?�«使用しますã?
448 *
449 * @return こã?クラスのæ–?—å?表現
450 */
451 @Override
452 public String toString() {
453 return org.opengion.fukurou.util.ToString.title( this.getClass().getName() )
454 .println( "VERSION" ,VERSION )
455 .println( "guiInfoKey" ,guiInfoKey )
456 .println( "extension" ,extension )
457 .println( "baseURL" ,baseURL )
458 .println( "target" ,target )
459 .println( "viewMsg" ,viewMsg )
460 .println( "iconURL" ,iconURL )
461 .println( "Other..." ,getAttributes().getAttribute() )
462 .fixForm().toString() ;
463 }
464 }