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.hayabusa.resource.GUIInfo;
021 import org.opengion.hayabusa.resource.UserInfo;
022 import org.opengion.hayabusa.resource.CodeData;
023 import org.opengion.hayabusa.resource.FavoriteGUIData;
024 import org.opengion.hayabusa.resource.ResourceManager;
025 import org.opengion.fukurou.util.XHTMLTag;
026 import org.opengion.fukurou.util.FileMap;
027 import org.opengion.fukurou.util.TagBuffer;
028
029 import org.opengion.fukurou.util.StringUtil ;
030 import static org.opengion.fukurou.util.StringUtil.nval ;
031
032 import java.util.Set ;
033 import java.util.LinkedHashSet;
034 import java.util.Iterator;
035 import java.util.Map;
036
037 import java.io.ObjectOutputStream;
038 import java.io.ObjectInputStream;
039 import java.io.IOException;
040
041 /**
042 * 画面アクセスメニューを作æ?しますã?
043 *
044 * 画面リソースの階層番号(レベル)はã€?
045 * ã€?:グループå?類メニュー(class="GUI_GRP"のtdタグで囲われまã�?
046 * ã€?:トップ階層(【å?類名称ã€?
047 * ã€?:選択階層(通常の折りたたみメニュー)
048 * ã€?:選択非表示(通常はã€?š してありまã�?
049 * ですã?
050 * お気に入りメニューを登録するキーワードに、HybsSystem.GUI_FAV_MENU_KEY を使用してã�?�¾すã?
051 * これは、エンジンå†?ƒ¨で使用してã�?‚‹キーワードですã?
052 *
053 * @og.formSample
054 * ●形式ï¼?lt;og:topMenu />
055 * ●body?šなã�?
056 *
057 * ●Tag定義??
058 * <og:topMenu
059 * menuType 【TAG】作æ?するメニューの種é¡?NORMAL,GROUP,ONELEVEL,NEXTGUI,MATRIX,MATRIX2)を指定しまã�?初期値:NORMAL)
060 * expand 【TAG】折り返しメニューを構築するかどã�?�‹を指定しまã�?初期値:true)
061 * groups 【TAG】表示対象となるグループをカンマ区åˆ?‚Šæ–?—å?でæŒ?®šしまã�?
062 * classify 【TAG】表示対象となるå?é¡?classify)を指定しまã�?
063 * href 【TAG】グループメニューの表示対象となるソースå�?href)を指定しまã�?初期値:menu.jsp)
064 * target 【TAG】グループメニューの表示対象となるフレーãƒ?��(target)を指定しまã�?初期値:MENU)
065 * imageOnly 【TAG】グループメニューの表示に、画像ã?みかどã�?�‹[true:画像ã?み/false:画像+ラベル]を指定しまã�?初期値:false)
066 * sideCount 【TAG】グループメニューの表示対象となるメニューを横並びさせる数を指定しまã�?
067 * minCellCount 【TAG】表形式メニュー(MATRIX)のä¸?�¤のセルに含まれるæœ?°�行数を指定しまã�?初期値:8)
068 * maxCellCount 【TAG】表形式メニュー(MATRIX)のä¸?�¤のセルに含まれるæœ?¤§行数を指定しまã�?初期値:8)
069 * cache 【TAG】グループメニューのキャãƒ?‚·ュを使用するかどã�?�‹[true/false]を指定しまã�?初期値:true)
070 * match 【TAG】正判å®?マッチするå?合に、メニューに出ã�?条件を設定しまã�?
071 * unmatch 【TAG】é?判å®?マッチするå?合に、メニューに出さなã�?条件を設定しまã�?
072 * useButton 【TAG】画面リンクにボタンを使用するかどã�?�‹[true/false]を指定しまã�?初期値:false)
073 * buttonRequest 【TAG】ã?トリクスからの遷移先でボタンメニュー表示するかどã�?�‹[true/false]を指定しまã�?初期値:false)
074 * inlineStyle 【TAG】標準画面をå?期状態で表示するかどã�?�‹[true/false]を指定しまã�?初期値:false)
075 * useDivOneLevel 【TAG】ONELEVEL,NEXTGUI で、DIVタグ?‹design-onelevel 処ç�?‚’するかどã�?�‹[true/false]を指定しまã�?初期値:false)
076 * debug 【TAG】デバッグæƒ??をå?力するかどã�?�‹[true/false]を指定しまã�?初期値:false)
077 * useButtonScript 【å»?¢】ã?タンリンクを使用した場合に、JavaScriptのイベントを発生させるかどã�?�‹[true/false]を指定しまã�?初期値:false)
078 * > ... Body ...
079 * </og:topMenu>
080 *
081 * ●使用ä¾?
082 * <og:topMenu />
083 *
084 * <og:topMenu
085 * menuType = "NORMAL" NORMAL:通常 / GROUP:グループメニュー / ONELEVEL:?‘レベル / NEXTGUI:次アクセスå…?
086 * / MATRIX:ä¸?¦§表メニュー / MATRIX2:ä¸?¦§表メニュー(大åˆ?¡žなし版)
087 * expand = "true" true:折り返しメニュー / false:階層メニュー
088 * groups = "AA,BB,CC" 表示対象となるグループをカンマ区åˆ?‚Šæ–?—å?でæŒ?®šしますã?
089 * classify = "ABC" 表示対象となるå?類をæŒ?®šしますã?
090 * href = "menu.jsp" グループメニューの対象ソースå�?href)を指定しますã?
091 * target = "MENU" グループメニューの対象フレーãƒ?��(target)を指定しますã?
092 * imageOnly = "false" グループメニューにã€?true:画像ã?み / false:画像+ラベル を指定しますã?
093 * sideCount = "6" グループメニューの表示対象となるメニューを横並びさせる数を指定しますã?
094 * minCellCount = "8" 表形式メニューの?‘セルのæœ?°�行数を指定しますã?
095 * maxCellCount = "8" 表形式メニューの?‘セルのæœ?¤§行数を指定しますã?
096 * cache = "true" グループメニューのキャãƒ?‚·ュを使用するかどã�?�‹æŒ?®šしますã?
097 * match = "正規表現" 正判å®?マッチするå?合に、メニューに出ã�?条件を設定しますã?
098 * unmatch = "正規表現" é€?ˆ¤å®?マッチするå?合に、メニューに出さなã�?条件を設定しますã?
099 * useButton = "false" ボタン形式ã?リンクを使用するかをæŒ?®šしますã?
100 * useButtonScript = "false" ボタンのイベントによるJavaScriptを起動するかを指定しますã?
101 * useDivOneLevel = "false" ONELEVEL,NEXTGUI で、DIVタグ?‹design-onelevel 処ç�?‚’するかどã�?�‹を指定しますã?
102 * />
103 *
104 * @og.rev 3.5.5.3 (2004/04/09) 新規作æ?
105 * @og.group メニュー制御
106 *
107 * @version 4.0
108 * @author Kohei Naruse
109 * @since JDK5.0,
110 */
111 public class TopMenuTag extends CommonTagSupport {
112 //* こã?プログラãƒ??VERSIONæ–?—å?を設定しますã? {@value} */
113 private static final String VERSION = "5.5.6.0 (2013/01/07)" ;
114
115 private static final long serialVersionUID = 556020130107L ; // 5.5.6.0 (2013/01/07)
116
117 private static final String FIELD_IN = "<fieldset style=\"display:inline;\">";
118 private static final String FIELD_OUT = "</fieldset>" + HybsSystem.BR;
119 private static final String JSP = HybsSystem.sys( "JSP" );
120
121 private static final String CNTX = HybsSystem.sys( "CONTEXT_NAME" ); // 5.5.4.2 (2012/07/13) META-INF/resources 対å¿?
122 private static final String MENU_IMG = "/jsp/menuImage/" ; // 5.5.4.2 (2012/07/13) META-INF/resources 対å¿?
123
124 private boolean multiSessionCheck = HybsSystem.sysBool( "USE_MULTI_SESSION_CHECK" );
125
126 // private static final String[] MENU_TYPE = new String[] { "NORMAL","GROUP","ONELEVEL","MATRIX" } ;
127 // private static final String[] MENU_TYPE = new String[] { "NORMAL","GROUP","ONELEVEL","MATRIX","MATRIX2" } ;
128 private static final String[] MENU_TYPE = new String[] { "NORMAL","GROUP","ONELEVEL","NEXTGUI","MATRIX","MATRIX2" } ; // 5.2.3.0 (2010/12/01)
129 private String menuType = MENU_TYPE[0] ; // NORMAL:通常 / GROUP:グループメニュー / ONELEVEL:?‘レベル / MATRIX:ä¸?¦§表メニュー / MATRIX2:ä¸?¦§表メニュー(大åˆ?¡žなし版)
130 private boolean expand = true; // true:折り返しメニュー / false:階層メニュー
131 private String[] groups = null; // 表示対象となるグループをカンマ区åˆ?‚Šæ–?—å?でæŒ?®šしますã?
132 private String selClassify= null; // 表示対象となるå?類をæŒ?®šしますã?
133 private String href = "menu.jsp"; // グループメニューの対象ソースå�?href)を指定しますã?
134 private String target = "MENU"; // グループメニューの対象フレーãƒ?��(target)を指定しますã?
135 private boolean imageOnly = false; // グループメニューにã€?true:画像ã?み / false:画像+ラベル を指定しまã�?
136 // private int sideCount = 1; // 表示対象となるメニューを横並びさせる数を指定しますã?
137 private int sideCount = -1; // 5.2.3.0 (2010/12/01) 表示対象となるメニューを横並びさせる数を指定しますã?
138 private int minCellCount = 8; // 表形式メニューの?‘セルのæœ?°�行数を指定しますã?
139 private int maxCellCount = 8; // 表形式メニューの?‘セルのæœ?¤§行数を指定しますã?
140 private boolean cache = true; // グループメニューのキャãƒ?‚·ュを使用するかどã�?�‹æŒ?®šしますã?
141 // 3.8.8.7 (2007/05/01) メニューの表示条件æŒ?®š追åŠ?
142 private String match = null; // 正判å®?マッチするå?合に、メニューに出ã�?条件を設å®?
143 private String unmatch = null; // é€?ˆ¤å®?マッチするå?合に、メニューに出さなã�?条件を設å®?
144
145 // private transient FileMap fileMap = null;
146 private transient FileMap imgFileMap = null; // 5.5.2.5 (2012/05/21) 属æ?名変更
147
148 // MULTI_SESSION_CHECK 時ã?リンクに付加するæƒ??
149 private String mscKey = null;
150
151 private boolean useButton = false; // ボタン形式ã?リンクを使用するã�?4.2.1.0 (2008/04/01)
152 // private boolean useButtonScript = false; // ボタンのイベントによるJavaScriptを起動するか 4.2.1.0 (2008/04/01)
153 private boolean buttonRequest = false; // マトリクス?’からã?遷移でボタン形式にするかã?リクエスト変数 4.2.1.0 (2008/04/17)
154 private boolean excludeButton = false; // 4.3.3.0 (2008/10/01) ボタンメニューの場合でも強制çš?�«従来のプルãƒ?‚¦ンにしますã?
155 private boolean inlineStyle = false; // 4.3.3.0 (2008/10/01) trueでLv3の画面にstyle属æ?でinlineを付加
156
157 private String helpLinkFormat = null; // 5.3.9.0 (2011/09/01) ヘルプリンクフォーマッãƒ?
158 private transient FileMap helpMap = null; // 5.3.9.0 (2011/09/01) ヘルプファイルが存在するかどã�?�‹のキャãƒ?‚·ュ
159 // private String faqLinkFormat = null; // 5.5.0.4 (2012/03/16) FAQリンクフォーマッãƒ?, 5.5.2.5 (2012/05/21) å»?¢
160
161 private boolean useDivOneLevel = false; // 5.5.2.3 (2012/05/15) ONELEVEL,NEXTGUI で、DIVタグ?‹design-onelevel 処ç�?‚’するかどã�?�‹を指定しますã?
162
163 // private CodeData classifyCode = null;
164
165 /**
166 * Taglibの開始タグが見つかったときに処ç�?�™ã‚?doStartTag() ã‚?オーバã?ライドしますã?
167 *
168 * @og.rev 5.3.9.0 (2011/09/01) 新規作æ?
169 * @og.rev 5.6.7.1 (2013/08/09) 削除(標準ã?SKIP_BODYを返しますã?)
170 *
171 * @return 後続å?ç�??æŒ?¤º
172 */
173 // @Override
174 // public int doStartTag() {
175 // return ( EVAL_BODY_BUFFERED ); // Body を評価する
176 // }
177
178 /**
179 * Taglibの終äº?‚¿グが見つかったときに処ç�?�™ã‚?doEndTag() ã‚?オーバã?ライドしますã?
180 *
181 * @og.rev 4.0.0.0 (2007/10/31) 1レベルメニューの見直ã�?
182 * @og.rev 4.2.1.0 (2008/04/01) マトリクスメニュー2追åŠ?
183 * @og.rev 5.2.3.0 (2010/12/01) NEXTGUI 追åŠ?
184 * @og.rev 5.3.0.0 (2010/11/22) NEXTGUI もã?ルチセãƒ?‚·ョンチェãƒ?‚¯をしなã�??
185 * @og.rev 5.3.9.0 (2011/09/01) メニューでのヘルプアイコン対å¿?
186 * @og.rev 5.5.0.4 (2012/03/12) FAQ表示対å¿?
187 * @og.rev 5.5.2.5 (2012/05/21) FAQ対å¿?å»?¢
188 * @og.rev 5.5.4.2 (2012/07/13) META-INF/resources からの読み取り対å¿?
189 *
190 * @return 後続å?ç�??æŒ?¤º
191 */
192 @Override
193 public int doEndTag() {
194 debugPrint(); // 4.0.0 (2005/02/28)
195
196 // Ver 4.0.0 2007/09/04
197 // classifyCode = getResource().getCodeData( "CLASSIFY" ) ;
198
199 // ONELEVEL, NEXTGUI の場合ã?、multiSessionCheck を行いませんã€?
200 if( multiSessionCheck && !"ONELEVEL".equals( menuType ) && !"NEXTGUI".equals( menuType ) ) {
201 String cnt = (String)getSessionAttribute( HybsSystem.MULTI_SESSION_CHECK );
202 if( cnt == null ) {
203 String errMsg = "マルチセãƒ?‚·ョンチェãƒ?‚¯のキーが存在しませんã€?
204 + "topMenu タグを実行する前に、å¿?�š jspInit タグã‚?
205 + "実行しておいてくださいã€? ;
206 jspPrint( errMsg );
207 return(SKIP_PAGE); // ペã?ジの残りの処ç�?‚’行わなã�??
208 }
209 mscKey = HybsSystem.MULTI_SESSION_CHECK + "=" + cnt ;
210 }
211
212 // 5.5.4.2 (2012/07/13) META-INF/resources からの読み取り対å¿?
213 // String dir = sys( "REAL_PATH" ) + "jsp/menuImage/" ;
214 // fileMap = new FileMap( dir );
215 // imgFileMap = new FileMap( dir ); // 5.5.2.5 (2012/05/21) 属æ?名変更
216
217 Set<?> set = pageContext.getServletContext().getResourcePaths( MENU_IMG );
218 imgFileMap = new FileMap( MENU_IMG,set );
219
220 // メニューでのヘルプアイコン対å¿?
221 helpLinkFormat = get( "helpLinkFormat" );
222 // faqLinkFormat = get( "faqLinkFormat" ); // 5.5.0.4 (2012/03/16), 5.5.2.5 (2012/05/21) å»?¢
223 if( helpLinkFormat != null && helpLinkFormat.length() > 0 ) {
224 helpMap = new FileMap( get( "helpBaseDir" ) );
225 }
226
227 if( "NORMAL".equals( menuType ) ) {
228 jspPrint( "<div class=\"forpos\" id=\"dummy\"></div>" + HybsSystem.CR );
229 if( ! useButton ){ // 4.2.1.0 (2008/04/26) ボタン時にはお気に入りを出さなã�?
230 jspPrint( makeFavoriteMenu() );
231 }
232 jspPrint( makeMenu() );
233 }
234 else if( "GROUP".equals( menuType ) ) {
235 jspPrint( makeGroupMenu() );
236 }
237 // else if( "CLASSIFY".equals( menuType ) ) {
238 // jspPrint( makeClassifyMenu() );
239 // }
240 else if( "ONELEVEL".equals( menuType ) && selClassify != null ) {
241 jspPrint( makeOneLevelMenu() );
242 }
243 // 5.2.3.0 (2010/12/01) NEXTGUI 追åŠ?
244 else if( "NEXTGUI".equals( menuType ) ) {
245 jspPrint( makeNextguiMenu() );
246 }
247 else if( "MATRIX".equals( menuType ) ) {
248 jspPrint( makeMatrixMenu() );
249 }
250 else if( "MATRIX2".equals( menuType ) ) { // 4.2.1.0 (2008/04/01) 大åˆ?¡žなし版追åŠ?
251 jspPrint( makeMatrixMenu2() );
252 }
253 // else {
254 // jspPrint( "menuType が想定外ですã?menuType=[" + menuType + "]" );
255 // }
256
257 return(EVAL_PAGE); // ペã?ジの残りを評価するã€?
258 }
259
260 /**
261 * タグリブオブジェクトをリリースしますã?
262 * キャãƒ?‚·ュされて再利用されるã?で、フィールドã?初期設定を行いますã?
263 *
264 * @og.rev 5.2.3.0 (2010/12/01) sideCountの初期値ã‚?-1(無制é™?に変更
265 * @og.rev 5.3.9.0 (2011/09/01) メニューでのヘルプアイコン対å¿?
266 * @og.rev 5.5.2.3 (2012/05/15) ONELEVEL,NEXTGUI で、DIVタグ?‹design-onelevel 処ç�?‚’するかどã�?�‹を指定しますã?
267 */
268 @Override
269 protected void release2() {
270 super.release2();
271 expand = true;
272 menuType = MENU_TYPE[0];
273 groups = null;
274 selClassify = null;
275 multiSessionCheck = HybsSystem.sysBool( "USE_MULTI_SESSION_CHECK" );
276 href = "menu.jsp"; // グループメニューの対象ソースå�?href)を指定しますã?
277 imageOnly = false; // グループメニューにã€?true:画像ã?み / false:画像+ラベル を指定しまã�?
278 target = "MENU"; // グループメニューの対象フレーãƒ?��(target)を指定しますã?
279 // sideCount = 1; // 表示対象となるメニューを横並びさせる数を指定しますã?
280 sideCount = -1; // 5.2.3.0 (2010/12/01) 表示対象となるメニューを横並びさせる数を指定しますã?
281 minCellCount = 8; // 表形式メニューの?‘セルのæœ?°�行数を指定しますã?
282 maxCellCount = 8; // 表形式メニューの?‘セルのæœ?¤§行数を指定しますã?
283 mscKey = null; // MULTI_SESSION_CHECK 時ã?リンクに付加するæƒ??
284 // fileMap = null; // イメージファイルのマッピングオブジェクトですã?
285 imgFileMap = null; // 5.5.2.5 (2012/05/21) 属æ?名変更
286 cache = true; // グループメニューのキャãƒ?‚·ュを使用するかどã�?�‹æŒ?®šしますã?
287 match = null; // 正判å®?マッチするå?合に、メニューに出ã�?条件を設å®?
288 unmatch = null; // é€?ˆ¤å®?マッチするå?合に、メニューに出さなã�?条件を設å®?
289 useButton = false; // ボタン形式ã?リンクを使用するã�?
290 // useButtonScript = false; // ボタンのイベントによるJavaScriptを起動するか
291 buttonRequest = false; // trueでボタンメニューの表示を行う
292 excludeButton = false; // trueでボタンメニュー時でも強制çš?�«従来のプルãƒ?‚¦ンにするã€?
293 inlineStyle = false; // trueの場合ã?標準画面(Lv3)にdisplay:inlineを付加
294 helpLinkFormat = null; // ヘルプリンクフォーマッãƒ?
295 helpMap = null; // ヘルプファイルが存在するかどã�?�‹のキャãƒ?‚·ュ
296 useDivOneLevel = false; // 5.5.2.3 (2012/05/15) ONELEVEL,NEXTGUI で、DIVタグ?‹design-onelevel 処ç�?‚’するかどã�?�‹を指定しますã?
297 }
298
299 /**
300 * メニューを表示する為のHTMLを作æ?しまã�?折り返しJavaScript対応版)ã€?
301 *
302 * @og.rev 3.5.6.5 (2004/08/09) GUIInfo の comments 属æ?ã‚?title にセãƒ?ƒˆするã€?
303 * @og.rev 3.6.0.9 (2004/12/03) リアルアドレス設定時に、{@XXXX}処ç�?‚’追åŠ?
304 * @og.rev 3.8.0.0 (2005/06/07) 同ä¸?‚»ãƒ?‚·ョンでのマルチ起動対策を行いますã?
305 * @og.rev 4.0.0.0 (2005/01/31) GUIInfoの実アドレスのパラメータをè?慮するã€?
306 * @og.rev 4.0.0.0 (2007/10/31) åˆ?¡žã?å»?¢に伴ã�??全面見直ã�?
307 * @og.rev 4.2.1.0 (2008/04/01) 小å?類指定での表示対å¿?↑ã?対応での再実è£?¼�れ)
308 * @og.rev 4.2.1.0 (2008/04/11) 小å?類をexpandしなã�??合にはspanタグで囲ã�??
309 * @og.rev 5.5.2.5 (2012/05/21) イメージアイコン対å¿?makeTagMenuのパラメータ変更)
310 *
311 * @return メニュー
312 */
313 private String makeMenu() {
314 StringBuilder rtn = new StringBuilder( HybsSystem.BUFFER_LARGE );
315
316 UserInfo userInfo = getUser();
317
318 // 4.0.0 (2005/01/31)
319
320 // boolean useLvl3 = false; // レベル?“が存在すると肯å®?true)
321 // boolean allLvl3 = true; // レベル?’が存在すると否å®?false) つまりã?true は全件レベル??
322 // boolean useFldLvl2 = false; // fieldset がå?期化されるまでに、レベル?’が存在すると肯å®?true)
323 // boolean useClsEllipses = false;
324 // int fldInAdrs = -1; // fieldsetタグ(lebel=0)の挿入する位置
325 // String classify ; // åˆ?¡žコーãƒ?
326 // String bkClassify = null; // åˆ?¡žコーãƒ?旧)
327 // String fieldData = null; // fieldset を挿入する場合ã?æ–?—å?ã€?
328
329 GUIInfo[] guiInfos = userInfo.getGUIInfos();
330 String gamenId ; // 画面ID
331 int menuNo = 11;
332 int kmokuNo = 0;
333
334 boolean isInFieldset = false; // 大åˆ?¡žã?中かï¼?
335 boolean isInClassify = false; // 小å?類ã?中かï¼?
336 boolean isExistHiddenMenu = false; // éš?�—メニューが存在するかï¼?
337 boolean isExistClassifyHidden = false; // åˆ?¡ž隠しが存在するかï¼?
338 int level ;
339 int preLevel = 0;
340
341 for( int i=0; i<guiInfos.length; i++ ) {
342 if( guiInfos[i].isRead() ) { // 4.0.0 (2005/01/31)
343 gamenId = guiInfos[i].getKey() ;
344 if( match != null && !gamenId.matches( match ) ) { continue; }
345 if( unmatch != null && gamenId.matches( unmatch ) ) { continue; }
346
347 // 4.2.1.0 (2008/04/01)
348 if( selClassify != null ) {
349 if( !selClassify.equals( guiInfos[i].getKey() ) && !selClassify.equals( guiInfos[i].getClassify() ) ) {
350 continue; // åˆ?¡?classify) に含まれなã�?
351 }
352 }
353
354 // 処ç�?�™べき画面かã?チェãƒ?‚¯
355 int guiFlg = guiCheck( guiInfos, i );
356 if( guiFlg == 0 ) { continue; }
357
358 level = guiInfos[i].getLevel(); // 4.0.0 (2005/01/31)
359
360 // éš?�—メニュー展開用
361 if( preLevel >= 3 && level < 3 ) {
362 if( isExistHiddenMenu ) {
363 rtn.append( makeEllipses( menuNo,kmokuNo,3 ) );
364 kmokuNo++;
365 }
366 isExistHiddenMenu = false;
367 }
368
369 // 大åˆ?¡?フィールドメニュー)
370 if( level == 1 ) {
371 if( isInFieldset ) {
372 rtn.append( FIELD_OUT );
373 rtn.append( "</div>" );
374 }
375 isInFieldset = true;
376
377 // éš?�—メニュー用
378 if( expand ) {
379 rtn.append( "<div class=\"expand1 " );
380
381 if( guiFlg == 1 ) {
382 rtn.append( "unpopular ");
383 }
384
385 rtn.append( "\">" );
386 }
387
388 // rtn.append( makeTagMenu( guiInfos[i],guiInfos[i].getName(),gamenId,level ) );
389 rtn.append( makeTagMenu( guiInfos[i],guiInfos[i].getName(),level ) ); // 5.5.2.5 (2012/05/21) イメージアイコン対å¿?
390
391 isInClassify = false;
392 }
393 // 小å?類ã?直リンク
394 else if( level == 2 ) {
395 menuNo++;
396 kmokuNo = 0;
397 if( expand ) {
398 rtn.append( "<div class=\"expand1 " );
399
400 // éš?�—メニュー用
401 if( guiFlg == 1 ) {
402 rtn.append( "unpopular " );
403 isExistClassifyHidden = true;
404 }
405
406 // rtn.append( "\" id=\"menu" + menuNo + "\">" );
407 // 4.3.3.0 (2008/10/01) useButton=true時ã?表示しなã�?
408 rtn.append( "\" id=\"menu" + menuNo + "\" ");
409 if( useButton ){
410 rtn.append( "style=\"display:none\"");
411 }
412 rtn.append( ">");
413
414 }
415 else{ // 4.2.1.0 (2008/04/11)expandしなã�??合にはspan要ç´?�§囲ってnon-expandクラスを指定ã?
416 rtn.append( "<span class=\"non-expand\">" );
417 }
418
419 // rtn.append( makeTagMenu( guiInfos[i],guiInfos[i].getName(),gamenId,level ) );
420 rtn.append( makeTagMenu( guiInfos[i],guiInfos[i].getName(),level ) ); // 5.5.2.5 (2012/05/21) イメージアイコン対å¿?
421 rtn.append( HybsSystem.BR );
422 if( expand ) {
423 rtn.append( "</div>" );
424 }
425 else{ // 4.2.1.0 (2008/04/11)
426 rtn.append( "</span>");
427 }
428
429 isInClassify = true;
430 }
431 // 通常メニュー・éš?�—メニュー
432 else if( level >= 3 ) {
433 if( isInClassify ) {
434 if( expand ) {
435 rtn.append( "<div class=\"expand2 " );
436
437 // éš?�—メニュー用
438 if( level == 4 ) {
439 rtn.append( "unpopular " );
440 isExistHiddenMenu = true;
441 }
442
443 // rtn.append( "\" id=\"menu" + menuNo + "_" + kmokuNo + "\">" );
444 // 4.3.3.0 (2008/10/01) メニューをå?期状態で開けるよã�?�«する
445 rtn.append( "\" id=\"menu" + menuNo + "_" + kmokuNo + "\" " );
446 if( inlineStyle && level == 3 ) {
447 rtn.append( " style=\"display:inline\"" );
448 }
449 rtn.append( ">" );
450 }
451
452 // 画面IDã�?HYBS_BR"の時ã?処ç�?�—なã�?
453 if( !"HYBS_BR".equals( guiInfos[i].getKey() ) ) {
454 // rtn.append( makeTagMenu( guiInfos[i],guiInfos[i].getName(),gamenId,level ) );
455 rtn.append( makeTagMenu( guiInfos[i],guiInfos[i].getName(),level ) ); // 5.5.2.5 (2012/05/21) イメージアイコン対å¿?
456 }
457 rtn.append( HybsSystem.BR );
458 if( expand ) {
459 rtn.append( "</div>" );
460 }
461 kmokuNo++;
462 }
463 }
464
465 rtn.append( HybsSystem.CR );
466
467 preLevel = level;
468 }
469 }
470
471 // 終äº??ç�?
472 if( isExistHiddenMenu ) {
473 rtn.append( makeEllipses( menuNo,kmokuNo,3 ) );
474 }
475
476 if( isInFieldset ) {
477 rtn.append( FIELD_OUT );
478 rtn.append( "</div>" );
479 }
480
481 if( isExistClassifyHidden ) {
482 rtn.append( makeEllipses( menuNo,0,2 ) );
483 }
484
485 // classify = guiInfos[i].getClassify(); // åˆ?¡žキー
486 // if( selClassify != null && !selClassify.equals( classify ) ) {
487 // continue; // åˆ?¡?classify) に含まれなã�?
488 // }
489
490 // // CLASSIFY に HYBS_BR が設定されてã�?‚‹と1行空行を挿入しますã?
491 // if( "HYBS_BR".equals( classify ) ) {
492 // if( expand ) {
493 // rtn.append( "<div class=\"expand2\" id=\"menu" );
494 // rtn.append( menuNo ).append( "_" ).append( kmokuNo ).append( "\">" ) ;
495 // }
496 // rtn.append( HybsSystem.BR );
497 // if( expand ) {
498 // rtn.append( "</div>" ).append( HybsSystem.CR );
499 // }
500 // kmokuNo++;
501 // continue;
502 // }
503 //
504 // // åˆ?¡?CLASSIFY) のブレイク時å?ç�?
505 // if( !classify.equals( bkClassify ) && level >= 2 ) {
506 // bkClassify = classify;
507 // // 先ã?åˆ?¡ž中にレベル?“が存在すればã€?←・?¥?¥â†? をå?åŠ?
508 // if( expand && useLvl3 ) {
509 // rtn.append( makeEllipses( menuNo,kmokuNo,2 ) );
510 //
511 // // すべてã�?レベル?“ã?場合ã?expand1 を見つけて、unpopular を挿入するã€?
512 // if( allLvl3 ) {
513 // int expInAdrs = rtn.lastIndexOf( "expand1" );
514 // if( expInAdrs >= 0 ) {
515 // expInAdrs += "expand1".length();
516 // rtn.insert( expInAdrs, " unpopular" );
517 // useClsEllipses = true; // åˆ?¡žメニューに、unpopular を使用した場合ã?
518 //
519 // // レベル??fieldset)の挿入位置ã�?unpopular 挿入åˆ?� けずれるã€?
520 // if( fldInAdrs > expInAdrs ) {
521 // fldInAdrs += " unpopular".length();
522 // }
523 // }
524 // }
525 // }
526 // useLvl3 = false; // 初期化:レベル?“が存在すると肯å®?true)
527 // allLvl3 = true; // 初期化:レベル?’が存在すると否å®?false)
528 //
529 // menuNo++;
530 // kmokuNo = 0;
531 //
532 //// String classifyLabel = getResource().getLabelData( classify ).getShortLabel() ;
533 // int cdAdrs = classifyCode.getAddress( classify ) ;
534 //// String classifyLabel = classifyCode.getShortLabel( cdAdrs );
535 // String classifyLabel;
536 // if( cdAdrs != -1 ) {
537 // classifyLabel = classifyCode.getShortLabel( cdAdrs );
538 // }
539 // else {
540 // classifyLabel = classify;
541 // }
542 //
543 // if( expand ) {
544 // rtn.append( "<div class=\"expand1" );
545 // rtn.append( "\" id=\"menu" );
546 // rtn.append( menuNo ).append( "\">" );
547 // }
548 // rtn.append( makeTagMenuString( null,null,classifyLabel,classify,1 ) );
549 // rtn.append( HybsSystem.BR );
550 // if( expand ) {
551 // rtn.append( "</div>" ).append( HybsSystem.CR );
552 // }
553 // }
554 //
555 // String linkLabel = guiInfos[i].getName();
556 // if( level == 0 ) {
557 // // level=1 は、大é ?›®の出力なので、å?期化がå¿?¦�になるã?
558 // // 先ã?åˆ?¡ž中にレベル?“が存在すればã€?←・?¥?¥â†? をå?åŠ?
559 // if( expand && useLvl3 ) {
560 // rtn.append( makeEllipses( menuNo,kmokuNo,2 ) );
561 // }
562 // useLvl3 = false; // 初期化:レベル?“が存在すると肯å®?true)
563 // allLvl3 = true; // 初期化:レベル?’が存在すると否å®?false)
564 //
565 // if( useFldLvl2 && fieldData != null ) {
566 // rtn.insert( fldInAdrs, fieldData );
567 // rtn.append( FIELD_OUT );
568 // }
569 // fieldData = makeTagMenuString( null,null,linkLabel,gamenId,level );
570 // fldInAdrs = rtn.length();
571 // useFldLvl2 = false; // 初期化:レベル?’が存在すると肯å®?true)
572 // }
573 // else if( level == 1 ) {
574 // useFldLvl2 = true; // レベル?’が存在すると肯å®?true)
575 //
576 // // level=1 は、大é ?›®の出力なので、å?期化がå¿?¦�になるã?
577 // // 先ã?åˆ?¡ž中にレベル?“が存在すればã€?←・?¥?¥â†? をå?åŠ?
578 // if( expand && useLvl3 ) {
579 // rtn.append( makeEllipses( menuNo,kmokuNo,2 ) );
580 // }
581 // useLvl3 = false; // 初期化:レベル?“が存在すると肯å®?true)
582 // allLvl3 = true; // 初期化:レベル?’が存在すると否å®?false)
583 //
584 // rtn.append( makeTagMenu( guiInfos[i],linkLabel,gamenId,level ) );
585 // rtn.append( HybsSystem.BR );
586 // }
587 // else {
588 // if( expand ) {
589 // if( level == 3 ) {
590 // useLvl3 = true;
591 // rtn.append( "<div class=\"expand2 unpopular\" id=\"menu" );
592 // }
593 // else {
594 // useFldLvl2 = true; // レベル?’が存在すると肯å®?true)
595 // allLvl3 = false;
596 // rtn.append( "<div class=\"expand2\" id=\"menu" );
597 // }
598 // rtn.append( menuNo ).append( "_" ).append( kmokuNo ).append( "\">" ) ;
599 // }
600 // rtn.append( makeTagMenu( guiInfos[i],linkLabel,gamenId,level ) );
601 // rtn.append( HybsSystem.BR );
602 // if( expand ) {
603 // rtn.append( "</div>" ).append( HybsSystem.CR );
604 // }
605 // }
606 // kmokuNo++;
607 // }
608 // }
609 //
610 // // ループ終äº?™‚の後å?ç�??
611 // // 先ã?åˆ?¡ž中にレベル?“が存在すればã€?←・?¥?¥â†? をå?åŠ?
612 // if( expand && useLvl3 ) {
613 // rtn.append( makeEllipses( menuNo,kmokuNo,2 ) );
614 // }
615 //
616 // // useFldLvl2 ã�?true で、fieldData が存在する場å�?
617 // if( useFldLvl2 && fieldData != null ) {
618 // rtn.insert( fldInAdrs, fieldData );
619 // rtn.append( FIELD_OUT );
620 // }
621 //
622 // // åˆ?¡ž中のすべてがレベル?“ã?場合に、å?類をéš?�—たå?合ã?ã€?←・?¥?¥â†? をå?åŠ?
623 // if( expand && useClsEllipses ) {
624 // rtn.append( makeEllipses( ++menuNo,-1,1 ) );
625 // }
626
627 return rtn.toString();
628 }
629
630 /**
631 * メニューを表示する為のHTMLを作æ?しまã�?折り返しJavaScript対応版)ã€?
632 *
633 * @og.rev 4.0.0.0 (2005/01/31) 個人別のお気に入りメニューを作æ?しますã?
634 * @og.rev 4.0.0.0 (2007/10/31) åˆ?¡žé?目のå»?¢
635 * @og.rev 4.1.1.0 (2008/02/05) お気に入り情報はGEA09から取得するよã�?�«変更
636 * @og.rev 5.5.2.5 (2012/05/21) イメージアイコン対å¿?makeTagMenuのパラメータ変更)
637 *
638 * @return 個人別のお気に入りメニュー
639 */
640 private String makeFavoriteMenu() {
641 StringBuilder rtn = new StringBuilder( HybsSystem.BUFFER_LARGE );
642
643 UserInfo userInfo = getUser();
644 Map<String,FavoriteGUIData> favoriteMap = userInfo.getFavoriteMap();
645
646 // if( favoriteMap.size() == 0 ) { return ""; }
647 if( favoriteMap.isEmpty() ) { return ""; }
648
649 ResourceManager resource = getResource(); // リソース参ç?
650 String largeClassify = resource.getLabelData( "FAVORITE_MENU" ).getShortLabel(); // お気に入ã‚?
651 String lastClassify = ""; // 前方画面のåˆ?¡?
652 int menuNo = 99999;
653 int kmokuNo = 0;
654
655 // fieldSetタグ、お気に入り編é›?”»面リンクの出åŠ?
656 GUIInfo editFavorite = userInfo.getGUIInfo( "GE0014" );
657 rtn.append( "<div class=\"expand1\"> " );
658 rtn.append( makeTagMenuString( null,null,largeClassify,null,1 ) );
659 // rtn.append( makeTagMenu( editFavorite,resource.getLabelData( "EDIT" ).getShortLabel(),"GE0014",2 ) );
660 rtn.append( makeTagMenu( editFavorite,resource.getLabelData( "EDIT" ).getShortLabel(),2 ) ); // 5.5.2.5 (2012/05/21) イメージアイコン対å¿?
661 rtn.append( HybsSystem.BR );
662
663 String thisClassify = null;
664 String gamenId = null;
665 FavoriteGUIData favoriteGui = null;
666 // 4.3.4.4 (2009/01/01) findBugs警告対å¿?
667 // for( String gamenId : favoriteMap.keySet() ) {
668 // favoriteGui = favoriteMap.get( gamenId );
669 for( Map.Entry<String, FavoriteGUIData> entry : favoriteMap.entrySet() ) {
670 gamenId = entry.getKey();
671 favoriteGui = entry.getValue();
672 GUIInfo guiInfo = userInfo.getGUIInfo( gamenId );
673
674 if( match != null && !gamenId.matches( match ) ) { continue; }
675 if( unmatch != null && gamenId.matches( unmatch ) ) { continue; }
676
677 thisClassify = favoriteGui.getClassify();
678 if( !lastClassify.equals( thisClassify ) ) {
679 menuNo++;
680 kmokuNo = 0;
681 if( expand ) {
682 rtn.append( "<div class=\"expand1\" id=\"menu" );
683 rtn.append( menuNo ).append( "\">" );
684 }
685 rtn.append( makeTagMenuString( null,null,thisClassify,thisClassify,2 ) );
686 rtn.append( HybsSystem.BR );
687 if( expand ) {
688 rtn.append( "</div>" ).append( HybsSystem.CR );
689 }
690 lastClassify = thisClassify;
691 }
692
693 if( expand ) {
694 rtn.append( "<div class=\"expand2\" id=\"menu" );
695 rtn.append( menuNo ).append( "_" ).append( kmokuNo ).append( "\">" ) ;
696 }
697
698 String linkLabel = favoriteGui.getName();
699 // rtn.append( makeTagMenu( guiInfo,linkLabel,gamenId,3 ) );
700 rtn.append( makeTagMenu( guiInfo,linkLabel,3 ) ); // 5.5.2.5 (2012/05/21) イメージアイコン対å¿?
701 rtn.append( HybsSystem.BR );
702 if( expand ) {
703 rtn.append( "</div>" ).append( HybsSystem.CR );
704 }
705 kmokuNo++;
706 }
707 rtn.append( FIELD_OUT );
708 rtn.append( "</div>" );
709
710 return rtn.toString();
711 }
712
713 /**
714 * 折りたたみメニューでã€?�ž標準メニューの 表示に使ã�??"←・?¥?¥â†? を作æ?しますã?
715 *
716 * @param menuNo 階層番号
717 * @param kmokuNo 階層é ?›®番号
718 * @param type タイãƒ?1,2限å®?
719 *
720 * @og.rev 4.0.0.0 (2005/01/31) 新規作æ?
721 *
722 * @return メニュー
723 */
724 private String makeEllipses( final int menuNo,final int kmokuNo,final int type ) {
725 int tmpType = type-1; // è¶?š«定対å¿?4.0.0.0 (2007/10/31)
726 String kmkNo = ( tmpType == 1 ) ? "" : "_" + kmokuNo ;
727
728 // 4.3.3.0 (2008/10/01) inlineStyleがtrueの場合ã?←・?¥?¥→をinlineで表示する
729 // String rtn = "<div class=\"expand" + tmpType + " ellipses\" id=\"menu" + menuNo
730 // + kmkNo + "\">"
731 // + makeTagMenuString( null,null,"←・?¥?¥â†?,null,type )
732 // + HybsSystem.BR + "</div>" + HybsSystem.CR ;
733 String rtn = "<div class=\"expand" + tmpType + " ellipses\" id=\"menu" + menuNo
734 + kmkNo + "\" ";
735 if( inlineStyle ){
736 rtn += "style=\"display:inline\" ";
737 }
738 rtn += ">" + makeTagMenuString( null,null,"←・?¥?¥â†?,null,type )
739 + HybsSystem.BR + "</div>" + HybsSystem.CR ;
740
741 return rtn ;
742 }
743
744 /**
745 * menuType="GROUP" 時に作æ?するグループメニュー
746 *
747 * @og.rev 4.0.0.0 (2005/01/31) 新規作æ?
748 * @og.rev 4.0.0.0 (2007/10/05) グループã?コードリソースが存在しなã�??å�?
749 * @og.rev 4.2.2.0 (2008/05/14) buttonRequestがtrueの場合ã?TOPへのリンクを表示しなã�?
750 * @og.rev 4.2.2.0 (2008/05/15) グループ絞込解除(GUI_ALL)の表示æ–?—にラベルリソースを使ã�??
751 * @og.rev 5.0.0.3 (2009/09/22) グループが1件の場合に表示されなã�?ƒ�グを修正
752 * @og.rev 5.1.8.0 (2010/07/01) コードリソースのキーが存在しなã�??合にエラーとなるバグを修正
753 *
754 * @return メニュー
755 */
756 private String makeGroupMenu() {
757
758 // 画面のグループメニューのキャãƒ?‚·ュを取得しますã?
759 String groupMenu ;
760 String cacheKey = HybsSystem.GUI_GR_MENU_CACHE_KEY + href + target ;
761 if( cache ) {
762 groupMenu = (String)getSessionAttribute( cacheKey );
763 if( groupMenu != null ) { return groupMenu; } // キャãƒ?‚·ュを返しますã?
764 }
765 else {
766 removeSessionAttribute( cacheKey );
767 }
768
769 UserInfo userInfo = getUser();
770
771 Set<String> groupSet = new LinkedHashSet<String>();
772
773 // そã?ユーザーで使用できる画面をすべてピックアãƒ??しますã?
774 // そã?上で、読取可能なメニューを含ã‚?‚°ループをé ?•ªに Set にセãƒ?ƒˆしてã�?��ますã?
775 GUIInfo[] guiInfos = userInfo.getGUIInfos();
776 String gamenId ; // 画面ID
777 for( int i=0; i<guiInfos.length; i++ ) {
778 if( guiInfos[i].isRead() ) {
779 gamenId = guiInfos[i].getKey() ;
780 if( match != null && !gamenId.matches( match ) ) { continue; }
781 if( unmatch != null && gamenId.matches( unmatch ) ) { continue; }
782 String[] groups = StringUtil.csv2Array( guiInfos[i].getGroups() );
783 for( int j=0; j<groups.length; j++ ) {
784 groupSet.add( groups[j] );
785 }
786 }
787 }
788
789 // 5.0.0.3 (2009/09/22)
790 // if( groupSet.size() > 1 ) {
791 if( groupSet.size() > 0 ) {
792 int sideTmpCnt = 1;
793 StringBuilder rtn = new StringBuilder( HybsSystem.BUFFER_LARGE );
794 rtn.append( "<tr>" );
795
796 // rtn.append( makeTagMenuString( href,target,"ALL","GUI_ALL",-1 ) );
797 String allMenu = getLabel( "ALL_MENU" ); // 4.2.2.0 (2008/05/15) ALLはラベルリソース使ã�?‚ˆã�?�«変更
798 rtn.append( makeTagMenuString( href,target,allMenu,"GUI_ALL",-1 ) );
799 if( sideCount > 0 && sideTmpCnt % sideCount == 0 ) { rtn.append("</tr><tr>"); }
800 sideTmpCnt++ ;
801
802 Iterator<String> ite = groupSet.iterator() ;
803 CodeData groupCode = getResource().getCodeData( "GROUPS" ) ;
804 if( groupCode != null ) {
805 while( ite.hasNext() ) {
806 String group = ite.next();
807 // String groupLabel = getLabel( group ); // グループラベル
808 int cdAdrs = groupCode.getAddress( group ) ;
809 // 4.0.0.0 (2007/10/05) グループã?コードリソースが存在しなã�??å�?
810 // String groupLabel = groupCode.getLongLabel( cdAdrs );
811 String groupLabel = "";
812 if( cdAdrs >= 0 ) { groupLabel = groupCode.getLongLabel( cdAdrs ); }
813
814 // 5.1.8.0 (2010/07/01) コードリソースのキーが存在しなã�??合にエラーとなるバグを修正
815 if( groupLabel.length() == 0 && group != null && group.length() > 0 ) {
816 groupLabel = group;
817 }
818
819 String src = XHTMLTag.addUrlEncode( href,"group=" + group );
820 rtn.append( makeTagMenuString( src,target,groupLabel,group,-1 ) );
821 if( sideCount > 0 && sideTmpCnt % sideCount == 0 ) { rtn.append("</tr><tr>"); }
822 sideTmpCnt++ ;
823 }
824 }
825
826 // if( ! imageOnly ) {
827 if( ! imageOnly && ! buttonRequest ) { // 4.2.2.0 (2008/05/14) ボタンメニュー時ã?トップメニュー
828 rtn.append( makeTagMenuString( JSP + "/index.jsp",target,"Top","GUI_TOP",-1 ) );
829 }
830 rtn.append( "</tr>" );
831
832 // 画面のグループメニューのキャãƒ?‚·ュをセãƒ?ƒˆしますã?
833 groupMenu = rtn.toString() ;
834 }
835 else {
836 groupMenu = "";
837 }
838
839 if( cache ) {
840 setSessionAttribute( cacheKey,groupMenu );
841 }
842
843 return groupMenu;
844 }
845
846 /**
847 * メニューを表示する為のHTMLを作æ?しまã�?折り返しJavaScript対応版)ã€?
848 *
849 * @og.rev 4.0.0.0 (2005/01/31) GUIInfoの実アドレスのパラメータをè?慮するã€?
850 * @og.rev 4.0.0.0 (2007/10/31) ä¸?—¦å»?¢
851 * @og.rev 5.5.2.3 (2012/05/15) useDivOneLevel 対å¿?
852 * @og.rev 5.5.2.5 (2012/05/21) イメージアイコン対å¿?makeTagMenuのパラメータ変更)
853 * @og.rev 5.5.6.0 (2013/01/07) useDivOneLevelの折り返し方法変更
854 *
855 * @return メニュー
856 */
857 private String makeOneLevelMenu() {
858 StringBuilder rtn = new StringBuilder( HybsSystem.BUFFER_LARGE );
859
860 // 5.5.2.3 (2012/05/15) useDivOneLevel 対å¿?
861 if( useDivOneLevel ) { rtn.append("<div id=\"design-onelevel\">"); }
862
863 UserInfo userInfo = getUser();
864
865 // 4.0.0 (2005/01/31)
866 GUIInfo[] guiInfos = userInfo.getGUIInfos();
867 String gamenId ; // 画面ID
868 // String classify ;
869 int sideTmpCnt = 1;
870
871 boolean isInClassify = false;
872
873 for( int i=0; i<guiInfos.length; i++ ) {
874 // classify = guiInfos[i].getClassify(); // åˆ?¡žキー
875 int level = guiInfos[i].getLevel();
876
877 if( level == 2 ) {
878 if( selClassify.equals( guiInfos[i].getKey() ) ) {
879 isInClassify = true;
880 }
881 else {
882 isInClassify = false;
883 }
884 }
885
886 // if( guiInfos[i].isRead() && selClassify.equals( classify ) ) { // 4.0.0 (2005/01/31)
887 if( guiInfos[i].isRead() && level == 3 && isInClassify ) { // 4.0.0 (2005/01/31)
888 gamenId = guiInfos[i].getKey() ;
889 if( match != null && !gamenId.matches( match ) ) { continue; }
890 if( unmatch != null && gamenId.matches( unmatch ) ) { continue; }
891
892 // int level = guiInfos[i].getLevel(); // 4.0.0 (2005/01/31)
893 // if( level == 2 ) {
894 // if( level == 4 ) {
895 String guiLabel = guiInfos[i].getName(); // 画面ラベル
896
897 String thisGamenId = getGUIInfoAttri( "KEY" );
898 if( gamenId.equals( thisGamenId ) ) {
899 // rtn.append( "[" ).append( guiLabel ).append( "] " );
900 // 5.5.2.3 (2012/05/15) useDivOneLevel 対å¿?
901 if( useDivOneLevel ) {
902 rtn.append("<span class=\"design-onelevel\">").append( guiLabel ).append( "</span>" );
903 }
904 else {
905 rtn.append( "[" ).append( guiLabel ).append( "] " );
906 }
907 }
908 else {
909 // rtn.append( makeTagMenu( guiInfos[i],guiLabel,gamenId,-2 ) );
910 // 5.5.2.3 (2012/05/15) useDivOneLevel 対å¿?
911 if( useDivOneLevel ) {
912 // 5.5.2.5 (2012/05/21) イメージアイコン対å¿?
913 // rtn.append("<span class=\"design-onelevel\">").append( makeTagMenu( guiInfos[i],guiLabel,gamenId,-3 ) ).append( "</span>" );
914 rtn.append("<span class=\"design-onelevel\">").append( makeTagMenu( guiInfos[i],guiLabel,-3 ) ).append( "</span>" );
915 }
916 else {
917 // rtn.append( makeTagMenu( guiInfos[i],guiLabel,gamenId,-2 ) );
918 rtn.append( makeTagMenu( guiInfos[i],guiLabel,-2 ) ); // 5.5.2.5 (2012/05/21) イメージアイコン対å¿?
919 }
920 }
921
922 if( sideCount > 0 ) {
923 // 全件数をサイドカウント数で割ったå?が最大行数の場合ã?、終äº?�™るã?
924 if( sideTmpCnt / sideCount >= maxCellCount ) {
925 // rtn.append("?¥?¥?¥");
926 break;
927 }
928 // 全件数をサイドカウント数で割った余りがゼロの場合ã?、行ブレイクするã€?
929 // if( sideTmpCnt % sideCount == 0 ) { rtn.append( HybsSystem.BR ); }
930 // 5.5.2.3 (2012/05/15) useDivOneLevel 対å¿?
931 if( sideTmpCnt % sideCount == 0 ) {
932 // 5.5.2.3 (2012/05/15) useDivOneLevel 対å¿?
933 if( useDivOneLevel ) {
934 rtn.append( HybsSystem.BR ); // 5.6.0.0 (2013/01/07) BRにする(条件åˆ?²�ã?残しておく)
935 // rtn.append("<span style=\"clear: both;\" />");
936 }
937 else {
938 rtn.append( HybsSystem.BR );
939 }
940 }
941 sideTmpCnt++ ;
942 }
943 // }
944 }
945 }
946
947 // 5.5.2.3 (2012/05/15) useDivOneLevel 対å¿?
948 if( useDivOneLevel ) {
949 rtn.append("<span style=\"clear: both;\" />");
950 rtn.append("</div>");
951 }
952
953 return rtn.toString();
954 }
955
956 /**
957 * 既存ã?ペã?ジの次にアクセスされる画面郡のリンクを作æ?しますã?
958 *
959 * これは、現時点の画面に対して、次にアクセスされる画面の候補を
960 * ピックアãƒ??しておく機è?ですã?
961 * 実際にはã€?�Ž去にアクセスされた結果より取得してã�?�¾すã?
962 * これは、ONELEVEL と置き換えることになる機è?ですã?
963 *
964 * @og.rev 5.2.3.0 (2010/12/01) NEXTGUI 追åŠ?
965 * @og.rev 5.5.2.3 (2012/05/15) useDivOneLevel 対å¿?
966 * @og.rev 5.5.2.5 (2012/05/21) イメージアイコン対å¿?makeTagMenuのパラメータ変更)
967 *
968 * @return メニュー
969 */
970 private String makeNextguiMenu() {
971 StringBuilder rtn = new StringBuilder( HybsSystem.BUFFER_LARGE );
972
973 // 今ã?アクセスしてã�?‚‹画面
974 GUIInfo thisGamen = (GUIInfo)getSessionAttribute( HybsSystem.GUIINFO_KEY );
975 String[] nextGuis = thisGamen.getNextGuiArray();
976
977 UserInfo userInfo = getUser();
978 int sideTmpCnt = 1;
979
980 // 5.5.2.3 (2012/05/15) useDivOneLevel 対å¿?
981 if( useDivOneLevel ) { rtn.append("<div id=\"design-onelevel\">"); }
982
983 GUIInfo guiInfo = null;
984 for( int i=0; i<nextGuis.length; i++ ) {
985 guiInfo = userInfo.getGUIInfo( nextGuis[i] );
986 if( guiInfo == null ) { continue; } // 存在しなã�??またã?アクセス拒否の場合ã?、無視するã?
987
988 if( guiInfo.isRead() ) {
989 String gamenId = nextGuis[i] ;
990 String guiLabel = guiInfo.getName(); // 画面ラベル
991
992 // rtn.append( makeTagMenu( guiInfo,guiLabel,gamenId,-2 ) );
993 // 5.5.2.3 (2012/05/15) useDivOneLevel 対å¿?
994 if( useDivOneLevel ) {
995 // 5.5.2.5 (2012/05/21) イメージアイコン対å¿?
996 // rtn.append("<span class=\"design-onelevel\">").append( makeTagMenu( guiInfo,guiLabel,gamenId,-3 ) ).append( "</span>" );
997 rtn.append("<span class=\"design-onelevel\">").append( makeTagMenu( guiInfo,guiLabel,-3 ) ).append( "</span>" );
998 }
999 else {
1000 // rtn.append( makeTagMenu( guiInfo,guiLabel,gamenId,-2 ) );
1001 rtn.append( makeTagMenu( guiInfo,guiLabel,-2 ) ); // 5.5.2.5 (2012/05/21) イメージアイコン対å¿?
1002 }
1003
1004 if( sideCount > 0 ) {
1005 // 全件数をサイドカウント数で割ったå?が最大行数の場合ã?、終äº?�™るã?
1006 if( sideTmpCnt / sideCount >= maxCellCount ) {
1007 break;
1008 }
1009 // 全件数をサイドカウント数で割った余りがゼロの場合ã?、行ブレイクするã€?
1010 // if( sideTmpCnt % sideCount == 0 ) { rtn.append( HybsSystem.BR ); }
1011 // 5.5.2.3 (2012/05/15) useDivOneLevel 対å¿?
1012 if( sideTmpCnt % sideCount == 0 ) {
1013 if( useDivOneLevel ) {
1014 rtn.append("<span style=\"clear: both;\" />");
1015 }
1016 else {
1017 rtn.append( HybsSystem.BR );
1018 }
1019 }
1020 sideTmpCnt++ ;
1021 }
1022 }
1023 }
1024
1025 // 5.5.2.3 (2012/05/15) useDivOneLevel 対å¿?
1026 if( useDivOneLevel ) { rtn.append("</div>"); }
1027
1028 return rtn.toString();
1029 }
1030
1031 /**
1032 * メニューを表示する為のHTMLを作æ?しまã�?マトリクスメニュー)ã€?
1033 *
1034 * åˆ?¡žまとめã?クラス色æŒ?®šã?æœ?°�行数設定ã?æœ?¤§行数設定ã?機è?がありますã?
1035 * 《å?類まとめã? æœ?¤§行数設å®?maxCellCount)に達したセルは、ä¸?�¤右に新たにセルを作æ?
1036 * しますã?こã?ときã?ヘッãƒ??の CLASSIFY を同じにして、colspan でまとめますã?
1037 * 《クラス色æŒ?®šã?ヘッãƒ??毎に é ?¬¡ CLR0,CLR1,?¥?¥?¥?¥ とã�?�†クラス属æ?を付与しますã?
1038 * ヘッãƒ??には、MENU_H もå?力されてã�?�¾すã?CLR0 は、大åˆ?¡žごとにåŠ?®—されてã�?��ますã?でã€?
1039 * 繰り返して同じ色を指定するå?合ã?、CSSファイルでまとめてæŒ?®šしてくださいã€?
1040 * 《最小行数設定ã?minCellCount 属æ?を指定することでã€?¼‘セルに含まれるæœ?°�行数を指定できますã?
1041 * これは、セルに入れる <br /> の個数を指定することと同じですã?
1042 * 《最大行数設定ã?maxCellCount 属æ?を指定することでã€?¼‘セルに含まれるæœ?¤§行数を指定できますã?
1043 * åˆ?¡žまとめでも説明しましたように、最大値をオーバã?すると次のセルから書き始めますã?
1044 *
1045 * @og.rev 4.0.0.0 (2005/11/30) 新規追åŠ?
1046 * @og.rev 4.0.0.0 (2007/10/05) åˆ?¡žã?コードリソースが存在しなã�??å�?
1047 * @og.rev 5.2.3.0 (2010/12/01) sideCount対å¿?
1048 * @og.rev 5.5.2.5 (2012/05/21) イメージアイコン対å¿?makeTagMenuのパラメータ変更)
1049 * @og.rev 5.5.5.3 (2012/08/17) th,tdにヘッãƒ??画面IDをクラスとして出åŠ?
1050 *
1051 * @return マトリクスメニュー
1052 */
1053 private String makeMatrixMenu() {
1054 StringBuilder rtn = new StringBuilder( HybsSystem.BUFFER_LARGE );
1055
1056 UserInfo userInfo = getUser();
1057
1058 // 4.0.0 (2005/01/31)
1059 // String classify ; // åˆ?¡žコーãƒ?
1060 // int colspanAdrs = 0; // maxCellCount でのキーブレイクで、colspan を挿入する位置
1061 // int colspan = 0; // maxCellCount でのキーブレイクで、colspan を挿入する値
1062
1063 GUIInfo[] guiInfos = userInfo.getGUIInfos();
1064 String gamenId ; // 画面ID
1065 String bkClassifyKey = null; // åˆ?¡žコーãƒ?旧)
1066 String bkClassifyName = null; // åˆ?¡ž名称(旧)
1067 int cellColorCnt = 0; // MENU_H に 追åŠ?�™ã‚?CLR クラス属æ?の連番
1068
1069 String headGuikey = ""; // 5.5.5.3 (2012/08/17) ヘッãƒ??gamenId
1070
1071 StringBuilder rtnH = null; // åˆ?¡ž部åˆ??出力用
1072 StringBuilder rtnB = null; // 実画面のリンク部åˆ??出力用
1073
1074 int level ;
1075 int preLevel = 0;
1076
1077 int lineTmpCnt = 0; // セル中の行カウンãƒ?
1078 int cellTmpCnt = 0; // 1つのåˆ?¡ž中のセルカウンãƒ?
1079 int cellTmpAllCnt = 0; // 5.2.3.0 (2010/12/01) 該当行ã?セルカウンãƒ?
1080
1081 boolean isInClassify = false; // åˆ?¡žã?中かï¼?
1082 boolean isChangeLevel = false; // 直リンク用(無ç�?‚„りé?常画面の階層として扱ã�??で)
1083 boolean isDummyMENU_S = false; // 5.2.3.0 (2010/12/01) sideCountブレーク時ã?大åˆ?¡žé?域ã?出力可否
1084
1085 for( int i=0; i<guiInfos.length; i++ ) {
1086 if( guiInfos[i].isRead() ) { // 4.0.0 (2005/01/31)
1087 gamenId = guiInfos[i].getKey() ;
1088 if( match != null && !gamenId.matches( match ) ) { continue; }
1089 if( unmatch != null && gamenId.matches( unmatch ) ) { continue; }
1090
1091 // 処ç�?�™べき画面かã?チェãƒ?‚¯
1092 int guiFlg = guiCheck( guiInfos, i );
1093 if( guiFlg == 0 ) { continue; }
1094
1095 level = guiInfos[i].getLevel(); // 4.0.0 (2005/01/31)
1096
1097 // 大åˆ?¡žが来るまでは処ç�?�—なã�?
1098 if( level > 1 && rtnH == null ) { continue; }
1099
1100 // 直リンクの場合ã?無ç�?‚„りé?常画面に変換
1101 if( level == 2 && guiInfos[i].getAddress() != null && guiInfos[i].getAddress().length() != 0 ) {
1102 level = 3;
1103 if( !isChangeLevel ) {
1104 isChangeLevel = true;
1105 isInClassify = false;
1106 }
1107 }
1108 else {
1109 isChangeLevel = false;
1110 }
1111
1112 // åˆ?¡žã?ブレイク処ç�?
1113 if( ( preLevel >= 3 && level < 3 ) || !isInClassify ) {
1114 if( lineTmpCnt != 0 ) {
1115 for( int j=lineTmpCnt; j<minCellCount-1; j++ ) { rtnB.append( HybsSystem.BR ); }
1116 rtnB.append( "</td>" ).append( HybsSystem.CR );
1117 }
1118
1119
1120 if( bkClassifyKey != null ) {
1121 // rtnH.append( "<th colspan=\"" + cellTmpCnt + "\" class=\"MENU_H CLR" + cellColorCnt + "\">" );
1122 rtnH.append( "<th colspan=\"" + cellTmpCnt + "\" class=\"MENU_H CLR" + cellColorCnt + " " + headGuikey + "\">" ); // 5.5.5.3 (2012/08/17)
1123 if( "_SPACE".equals( bkClassifyKey ) ) {
1124 rtnH.append( "� );
1125 }
1126 else {
1127 rtnH.append( makeTagMenuString( null,null,bkClassifyName,bkClassifyKey,-3 ) );
1128 }
1129 rtnH.append( "</th>" );
1130
1131 // 5.2.3.0 (2010/12/01) sideCount によるセルの改è¡?
1132 cellTmpAllCnt += cellTmpCnt;
1133 if( sideCount > 0 && cellTmpAllCnt >= sideCount ) {
1134 rtn.append( rtnH ).append( "</tr><tr>" ).append( rtnB ).append( "</tr>" );
1135
1136 rtnH = new StringBuilder( HybsSystem.BUFFER_LARGE );
1137 rtnB = new StringBuilder( HybsSystem.BUFFER_LARGE );
1138 cellTmpAllCnt = 0;
1139 isDummyMENU_S = true; // 出力予ç´?
1140 }
1141 }
1142
1143 bkClassifyKey = null;
1144 isInClassify = false;
1145 lineTmpCnt = 0;
1146 cellTmpCnt = 0;
1147 }
1148
1149 // 大åˆ?¡?フィールドメニュー)
1150 if( level == 1 ) {
1151 headGuikey = gamenId; // 5.5.5.3 (2012/08/17)
1152 if( preLevel > 0 ) {
1153 cellColorCnt++ ;
1154 rtn.append( rtnH ).append( "</tr><tr>" ).append( rtnB ).append( "</tr>" );
1155 }
1156
1157 // rtn.append( "<tr><td rowspan=\"2\" class=\"MENU_S\">" );
1158 rtn.append( "<tr><td rowspan=\"2\" class=\"MENU_S "+ headGuikey +"\">" ); // 5.5.5.3 (2012/08/17)
1159 rtn.append( makeTagMenuString( null,null,guiInfos[i].getName(),gamenId,-3 ) );
1160 rtn.append( "</td>" ).append( HybsSystem.CR );
1161
1162 rtnH = new StringBuilder( HybsSystem.BUFFER_LARGE );
1163 rtnB = new StringBuilder( HybsSystem.BUFFER_LARGE );
1164 cellTmpAllCnt = 0; // 5.2.3.0 (2010/12/01)
1165 isDummyMENU_S = false; // 5.2.3.0 (2010/12/01) 出力予ç´?§£除
1166 }
1167 // åˆ?¡?直リンクの場合ã?、level=3で処ç�?
1168 else if( level == 2 ) {
1169 isInClassify = true;
1170 bkClassifyKey = guiInfos[i].getKey();
1171 bkClassifyName = guiInfos[i].getName();
1172 }
1173 // 通常メニュー・éš?�—メニュー
1174 else if( level >= 3 ) {
1175
1176 // å…??MENU_Sに戻りã?rowspan を書き換える・・・のが邪魔くさいので、td のみ出力しておくã€?
1177 // 5.2.3.0 (2010/12/01) sideCount によるセルの改è¡?
1178 if( isDummyMENU_S ) {
1179 // rtn.append( "<tr><td rowspan=\"2\" class=\"MENU_S\">" );
1180 rtn.append( "<tr><td rowspan=\"2\" class=\"MENU_S " + headGuikey + "\">" ); // 5.5.5.3 (2012/08/17)
1181 rtn.append( "</td>" ).append( HybsSystem.CR );
1182 isDummyMENU_S = false; // 出力予ç´?§£除
1183 }
1184
1185 // 画面ID="HYBS_BR"の場合ã?、セルを変えるã?
1186 if( "HYBS_BR".equals( guiInfos[i].getKey() ) ) {
1187 if( lineTmpCnt != 0 ) {
1188 for( int j=lineTmpCnt; j<minCellCount-1; j++ ) { rtnB.append( HybsSystem.BR ); }
1189 lineTmpCnt = 0;
1190 }
1191 }
1192 // 通常画面
1193 else {
1194 if( lineTmpCnt == 0 ) {
1195 // rtnB.append( "<td class=\"MENU_B\">" );
1196 rtnB.append( "<td class=\"MENU_B " + headGuikey + "\">" ); // 5.5.5.3 (2012/08/17)
1197 cellTmpCnt++;
1198 }
1199
1200 // rtnB.append( makeTagMenu( guiInfos[i],guiInfos[i].getName(),gamenId,-3 ) );
1201 rtnB.append( makeTagMenu( guiInfos[i],guiInfos[i].getName(),-3 ) ); // 5.5.2.5 (2012/05/21) イメージアイコン対å¿?
1202 lineTmpCnt++;
1203
1204 if( lineTmpCnt >= maxCellCount ) {
1205 rtnB.append( "</td>" );
1206 lineTmpCnt = 0;
1207 }
1208 else {
1209 rtnB.append( HybsSystem.BR );
1210 }
1211
1212 // åˆ?¡žã?中に入ってã�?�ªã�??常画面
1213 if( !isInClassify ) {
1214 bkClassifyKey = "_SPACE";
1215 isInClassify = true;
1216 }
1217 }
1218 }
1219
1220 preLevel = level;
1221 }
1222
1223 }
1224
1225 // 終äº??ç�?
1226 for( int j=lineTmpCnt; j<minCellCount-1; j++ ) { rtnB.append( HybsSystem.BR ); }
1227 rtnB.append( "</td>" ).append( HybsSystem.CR );
1228
1229 if( bkClassifyKey != null ) {
1230 // rtnH.append( "<th colspan=\"" + cellTmpCnt + "\" class=\"MENU_H CLR" + cellColorCnt + "\">" );
1231 rtnH.append( "<th colspan=\"" + cellTmpCnt + "\" class=\"MENU_H CLR" + cellColorCnt + " " + headGuikey + "\">" ); // 5.5.5.3 (2012/08/17)
1232 rtnH.append( makeTagMenuString( null,null,bkClassifyName,bkClassifyKey,-3 ) );
1233 rtnH.append( "</th>" );
1234 }
1235
1236 rtn.append( rtnH ).append( "</tr><tr>" ).append( rtnB ).append( "</tr>" );
1237
1238 return rtn.toString();
1239 }
1240
1241 /**
1242 * メニューを表示する為のHTMLを作æ?しまã�?マトリクスメニュー2)ã€?
1243 *
1244 * マトリクスメニューをã?ースとした特別バã?ジョンですã?
1245 * 通常のマトリクスメニューからの変更点は以下ã?通りですã?
1246 * â‘?¤§åˆ?¡žが表示されなã�?
1247 * â‡?変わりにã€?行に表示されてã�?‚‹セル数がsideCountでæŒ?®šした数をè¶?�ˆたå?合に
1248 * 自動的に改行されますã?
1249 * ②画面リンクのターゲãƒ?ƒˆ
1250 * â‡?自åˆ??身のフレーãƒ?�«対してリンク先を表示しますã?
1251 * リンク先ã?ã€??常メニュー構æ?ですが左メニューには該当する小å?類ã?画面しか表示されませんã€?
1252 * ③小å?類でのリンク
1253 * â‡?小å?類をクリãƒ?‚¯した際にã€??常のメニュー構æ?画面にリンクしますã?
1254 * ä½?�—、②と同様に左メニューには該当する小å?類ã?画面しか表示されませんã€?
1255 *
1256 * @og.rev 4.2.1.0 (2008/04/01) 新規追åŠ?
1257 * @og.rev 4.2.1.1 (2008/05/02) カãƒ?‚´リーリンクでä¸?•ª上ã?画面のモードが-wとなってã�?‚‹場合にã€?
1258 * そã?画面が立ち上がってしまã�?ƒ�グを修正
1259 * @og.rev 4.2.2.0 (2008/05/14) buttonRequestの付加をmakeTagMenuString()に変更
1260 * @og.rev 5.5.2.5 (2012/05/21) イメージアイコン対å¿?makeTagMenuのパラメータ変更)
1261 * @og.rev 5.5.5.3 (2012/08/17) ヘッãƒ?ƒ¨のgamenIdをth,tdのクラスに追åŠ?
1262 *
1263 * @return マトリクスメニュー
1264 */
1265 private String makeMatrixMenu2() {
1266 StringBuilder rtn = new StringBuilder( HybsSystem.BUFFER_LARGE );
1267
1268 UserInfo userInfo = getUser();
1269
1270 GUIInfo[] guiInfos = userInfo.getGUIInfos();
1271 String gamenId ; // 画面ID
1272 String bkClassifyKey = null; // åˆ?¡žコーãƒ?旧)
1273 String nextKey = null; // åˆ?¡žã?タンを押した時にæœ??の画面が開くよã�?�«する
1274 String bkClassifyName = null; // åˆ?¡ž名称(旧)
1275 int cellColorCnt = 0; // MENU_H に 追åŠ?�™ã‚?CLR クラス属æ?の連番
1276
1277 StringBuilder rtnH = new StringBuilder( HybsSystem.BUFFER_LARGE ); // åˆ?¡ž部åˆ??出力用
1278 StringBuilder rtnB = new StringBuilder( HybsSystem.BUFFER_LARGE ); // 実画面のリンク部åˆ??出力用
1279
1280 int level ;
1281 int preLevel = 0;
1282
1283 int lineTmpCnt = 0; // セル中の行カウンãƒ?
1284 int cellTmpCnt = 0; // 1つのåˆ?¡ž中のセルカウンãƒ?
1285 int cellTmpAllCnt = 0; // 該当行ã?セルカウンãƒ?
1286
1287 boolean isInClassify = false; // åˆ?¡žã?中かï¼?
1288 boolean isChangeLevel = false; // 直リンク用(無ç�?‚„りé?常画面の階層として扱ã�??で)
1289
1290 String classifyHref = null; // 小å?類ã?リンク
1291
1292 String headGuikey = "" ; // 5.5.5.3 (2012/08/17)
1293
1294 rtn.append( "<tr>" ).append( HybsSystem.CR );
1295
1296 for( int i=0; i<guiInfos.length; i++ ) {
1297 if( guiInfos[i].isRead() ) { // 4.0.0 (2005/01/31)
1298 gamenId = guiInfos[i].getKey() ;
1299 if( match != null && !gamenId.matches( match ) ) { continue; }
1300 if( unmatch != null && gamenId.matches( unmatch ) ) { continue; }
1301
1302 // 処ç�?�™べき画面かã?チェãƒ?‚¯
1303 int guiFlg = guiCheck( guiInfos, i );
1304 if( guiFlg == 0 ) { continue; }
1305
1306 level = guiInfos[i].getLevel(); // 4.0.0 (2005/01/31)
1307
1308 // 直リンクの場合ã?無ç�?‚„りé?常画面に変換
1309 if( level == 2 && guiInfos[i].getAddress() != null && guiInfos[i].getAddress().length() != 0 ) {
1310 level = 3;
1311 if( !isChangeLevel ) {
1312 isChangeLevel = true;
1313 isInClassify = false;
1314 }
1315 }
1316 else {
1317 isChangeLevel = false;
1318 }
1319
1320 // åˆ?¡žã?ブレイク処ç�?
1321 if( ( preLevel >= 3 && level < 3 ) || !isInClassify ) {
1322 if( lineTmpCnt != 0 ) {
1323 for( int j=lineTmpCnt; j<minCellCount-1; j++ ) { rtnB.append( HybsSystem.BR ); }
1324 //rtnB.append( "</td>" ).append( HybsSystem.CR ); // 4.2.1.0 (2008/04/03) リスãƒ?
1325 rtnB.append( "</ul></div></td>" ).append( HybsSystem.CR );
1326 }
1327
1328 if( bkClassifyKey != null ) {
1329 // rtnH.append( "<th colspan=\"" + cellTmpCnt + "\" class=\"MENU_H CLR" + cellColorCnt + "\">" );
1330 rtnH.append( "<th colspan=\"" + cellTmpCnt + "\" class=\"MENU_H CLR" + cellColorCnt + " " + headGuikey + "\">" ); // 5.5.5.3 (2012/08/17)
1331 if( "_SPACE".equals( bkClassifyKey ) ) {
1332 rtnH.append( "� );
1333 }
1334 else {
1335 classifyHref = JSP + "/index.jsp?classify=" + bkClassifyKey;
1336 // 4.1.2.0(2008/05/14) リクエスト変数を付ける位置変更
1337 // if( buttonRequest ){ // 4.2.1.0 (2008/04/17) マトリクス?’からã?遷移でボタン式にするかどã�?�‹
1338 // classifyHref += "&buttonRequest=true";
1339 // }
1340 classifyHref += "&GAMENID="+nextKey; // ボタンを押した場合にæœ??の画面が現れる
1341 rtnH.append( makeTagMenuString( classifyHref,"_self",bkClassifyName,bkClassifyKey,-3 ) );
1342 }
1343 rtnH.append( "</th>" );
1344
1345 cellTmpAllCnt += cellTmpCnt;
1346
1347 if( sideCount > 0 && cellTmpAllCnt >= sideCount ) {
1348 rtn.append( rtnH ).append( "</tr><tr>" ).append( rtnB ).append( "</tr>" );
1349
1350 rtnH = new StringBuilder( HybsSystem.BUFFER_LARGE );
1351 rtnB = new StringBuilder( HybsSystem.BUFFER_LARGE );
1352 cellTmpAllCnt = 0;
1353 }
1354 }
1355
1356 bkClassifyKey = null;
1357 nextKey = null;
1358 isInClassify = false;
1359 lineTmpCnt = 0;
1360 cellTmpCnt = 0;
1361 }
1362
1363 // 5.5.5.3 (2012/08/17) 大åˆ?¡?フィールドメニュー)
1364 if( level == 1 ) {
1365 headGuikey = gamenId;
1366 }
1367 // åˆ?¡?直リンクの場合ã?、level=3で処ç�?
1368 else if( level == 2 ) {
1369 isInClassify = true;
1370 if( guiInfos[i].isPulldown() ){ // 4.3.3.0 (2008/10/01) プルãƒ?‚¦ン化チェãƒ?‚¯
1371 excludeButton = true;
1372 }
1373 else{
1374 excludeButton = false;
1375 }
1376 bkClassifyKey = guiInfos[i].getKey();
1377 bkClassifyName = guiInfos[i].getName();
1378 // if( guiInfos.length > i && guiInfos[i+1] != null ){
1379 // nextKey = guiInfos[i+1].getKey();
1380 // }
1381 for( int j=i+1; j<guiInfos.length; j++ ) {
1382 if( guiInfos[j] != null && guiInfos[j].isRead() ) {
1383 nextKey = guiInfos[j].getKey();
1384 break;
1385 }
1386 }
1387 }
1388 // 通常メニュー・éš?�—メニュー
1389 else if( level >= 3 ) {
1390
1391 // 画面ID="HYBS_BR"の場合ã?、セルを変えるã?
1392 if( "HYBS_BR".equals( guiInfos[i].getKey() ) ) {
1393 if( lineTmpCnt != 0 ) {
1394 for( int j=lineTmpCnt; j<minCellCount-1; j++ ) { rtnB.append( HybsSystem.BR ); }
1395 lineTmpCnt = 0;
1396 }
1397 }
1398 // 通常画面
1399 else {
1400 if( lineTmpCnt == 0 ) {
1401 // rtnB.append( "<td class=\"MENU_B\">" );
1402 // 4.2.1.0 (2008/04/03) リンクをリスト形式で出すæ¡?
1403 // rtnB.append( "<td class=\"MENU_B\"> <div class=\"gamen-menu-wrap\"><ul class=\"gamen-menu\">" );
1404 rtnB.append( "<td class=\"MENU_B "+ headGuikey +"\"> <div class=\"gamen-menu-wrap\"><ul class=\"gamen-menu\">" ); // 5.5.5.3 (2012/08/17)
1405 cellTmpCnt++;
1406 }
1407
1408 // 5.5.2.5 (2012/05/21) リストã?、イメージを設定するã?で、メソãƒ?ƒ‰側で付与しますã?
1409 // rtnB.append( "<li>" ); // 4.2.1.0 (2008/04/03) リスãƒ?
1410 // rtnB.append( makeTagMenu( guiInfos[i],guiInfos[i].getName(),gamenId,-4 ) );
1411 rtnB.append( makeTagMenu( guiInfos[i],guiInfos[i].getName(),-4 ) ); // 5.5.2.5 (2012/05/21) イメージアイコン対å¿?
1412 // rtnB.append( "</li>" ); // 4.2.1.0 (2008/04/03) リスãƒ?
1413 lineTmpCnt++;
1414
1415 if( lineTmpCnt >= maxCellCount ) {
1416 // rtnB.append( "</td>" );
1417 rtnB.append( " </ul> </div></td>" ); // 4.2.1.0 (008/04/03) リスãƒ?
1418 lineTmpCnt = 0;
1419 }
1420 // else {
1421 // rtnB.append( HybsSystem.BR ); // 4.2.1.0 (2008/04/03) リストã?改行不要ã?
1422 // }
1423
1424 // åˆ?¡žã?中に入ってã�?�ªã�??常画面
1425 if( !isInClassify ) {
1426 bkClassifyKey = "_SPACE";
1427 isInClassify = true;
1428 }
1429 }
1430 }
1431
1432 preLevel = level;
1433 }
1434
1435 }
1436
1437 // 終äº??ç�?
1438 // 4.3.3.0 (2008/10/01) 終äº??ç�??0の時行ã?なã�?
1439 if( lineTmpCnt != 0){
1440 for( int j=lineTmpCnt; j<minCellCount-1; j++ ) { rtnB.append( HybsSystem.BR ); }
1441 rtnB.append( "</td>" ).append( HybsSystem.CR );
1442 }
1443
1444 if( bkClassifyKey != null ) {
1445 // rtnH.append( "<th colspan=\"" + cellTmpCnt + "\" class=\"MENU_H CLR" + cellColorCnt + "\">" );
1446 rtnH.append( "<th colspan=\"" + cellTmpCnt + "\" class=\"MENU_H CLR" + cellColorCnt + " " + headGuikey + "\">" ); // 5.5.5.3 (2012/08/17)
1447
1448 classifyHref = JSP + "/index.jsp?classify=" + bkClassifyKey;
1449 // 4.1.2.0(2008/05/14) リクエスト変数を付ける位置変更
1450 // if( buttonRequest ){ // 4.2.1.0 (2008/04/17) マトリクス?’からã?遷移でボタン式にするかどã�?�‹
1451 // classifyHref += "&buttonRequest=true";
1452 // }
1453 classifyHref += "&GAMENID="+nextKey;
1454 rtnH.append( makeTagMenuString( classifyHref,"_self",bkClassifyName,bkClassifyKey,-3 ) );
1455 rtnH.append( "</th>" );
1456 }
1457
1458 rtn.append( rtnH ).append( "</tr><tr>" ).append( rtnB ).append( "</tr>" );
1459
1460 return rtn.toString();
1461 }
1462
1463 /**
1464 * タイプに応じたメニューを表示する為のæ–?—å?を作æ?しますã?
1465 * 引数の GUIInfo より、アクセスすべきメニューのhrefと、targetを求めますã?
1466 * type = -3 (マトリクスメニュー) の場合だけã?タグ属æ?の target を使用しますã?
1467 *
1468 * ã€?:フィールドセãƒ?ƒˆメニュー
1469 * ã€?:トップ階層(【å?類名称ã€?
1470 * ã€?:選択階層(通常の折りたたみメニュー)
1471 * ã€?:選択非表示(通常はã€?š してありまã�?
1472 * ã€?1:グループå?類メニュー(class="GUI_GRP"のtdタグで囲われまã�?
1473 * ã€?2:ラインメニュー([画面名称]ã€?
1474 * ã€?3:マトリクスメニュー(ä¸?¦§)
1475 * ã€?4:マトリクスメニュー??ä¸?¦§)
1476 *
1477 * @og.rev 4.0.0.0 (2005/01/31) 新規登録(makeTopMenu、makeSecondMenuの置き換ã�?
1478 * @og.rev 4.1.0.1 (2008/01/22) アドレスが[..]から始まる画面はマルチセãƒ?‚·ョンチェãƒ?‚¯を行わなã�??
1479 * @og.rev 4.2.1.0 (2008/04/01) マトリクスメニュー2用のタグ作æ?処ç�?¿½åŠ?
1480 * @og.rev 4.2.1.0 (2008/04/17) マトリクス?’からã?遷移先でボタンメニューにする処ç�?
1481 * @og.rev 4.2.2.0 (2008/05/14) buttonRequestの付加をmakeTagMenuString()に変更
1482 * @og.rev 4.3.3.7 (2008/11/22) https対å¿?
1483 * @og.rev 5.5.2.5 (2012/05/21) イメージアイコン対å¿?画面ID単位ではなくã?IMAGE_KEYパラメータでæŒ?®š可能にするã€?
1484 *
1485 * @param guiInfo GUIInfoリンク
1486 * @param bodyIn BODY部(表示)
1487 * @param type タイãƒ?
1488 *
1489 * @return 階層別メニューæ–?—å?
1490 */
1491 // private String makeTagMenu( final GUIInfo guiInfo, final String bodyIn, final String imgKey,final int type ) {
1492 private String makeTagMenu( final GUIInfo guiInfo, final String bodyIn, final int type ) {
1493
1494 String href = null;
1495 String tmpTarget = null;
1496 String gamenId = guiInfo.getKey(); // 5.5.2.5 (2012/05/21) イメージアイコン対å¿?
1497
1498 if( ( guiInfo.getAddress() != null ) && ( guiInfo.getAddress().length() > 0 ) ) {
1499 String readAdrs = guiInfo.getRealAddress( "index.jsp" );
1500 String reqParam = getRequestParameter( guiInfo.getParam() );
1501 href = XHTMLTag.addUrlEncode( readAdrs,reqParam );
1502 tmpTarget = guiInfo.getTarget();
1503
1504 // 4.3.3.7 (2008/11/22) https対å¿?
1505 // if( ! "http".equals( guiInfo.getKblink() ) ) {
1506 // if( ! readAdrs.startsWith( "http://" ) ) {
1507 if( ! readAdrs.startsWith( "http://" ) && ! readAdrs.startsWith( "https://" )) {
1508 if( type == -3 ) {
1509 tmpTarget = target;
1510 String param = getRequestParameter( guiInfo.getParam() );
1511 href = XHTMLTag.addUrlEncode( JSP + "/result.jsp",param );
1512 // 4.1.2.0(2008/05/14) リクエスト変数を付ける位置変更
1513 // if( buttonRequest ){ // 4.2.1.0 (2008/04/17) マトリクスからの遷移でボタン式にするかどã�?�‹
1514 // href = XHTMLTag.addUrlEncode( href,"buttonRequest=" + buttonRequest );
1515 // }
1516 }
1517 else if( type == -4 ) { // 4.2.1.0 (2008/04/01)
1518 tmpTarget = "_self";
1519 String param = getRequestParameter( guiInfo.getParam() );
1520 href = XHTMLTag.addUrlEncode( JSP + "/index.jsp",param );
1521 href = XHTMLTag.addUrlEncode( href,"classify=" + guiInfo.getClassify() );
1522 // 4.1.2.0(2008/05/14) リクエスト変数を付ける位置変更
1523 // if( buttonRequest ){ // 4.2.1.0 (2008/04/17) マトリクス?’からã?遷移でボタン式にするかどã�?�‹
1524 // href = XHTMLTag.addUrlEncode( href,"buttonRequest=" + buttonRequest );
1525 // }
1526 }
1527 // href = XHTMLTag.addUrlEncode( href,"GAMENID=" + guiInfo.getKey() );
1528 href = XHTMLTag.addUrlEncode( href,"GAMENID=" + gamenId ); // 5.5.2.5 (2012/05/21) せっかくなので、利用するã€?
1529
1530 // 3.8.0.0 (2005/06/07) 同ä¸?‚»ãƒ?‚·ョンでのマルチ起動対策を行いますã?
1531 // 4.1.0.1 (2008/01/22) アドレスが[..]から始まる画面はマルチセãƒ?‚·ョンチェãƒ?‚¯を行いませんã€?
1532 // 4.1.0.1 (2008/04/01) マトリクスメニュー2はマルチセãƒ?‚·ョンチェãƒ?‚¯を行いませんã€?
1533 if( ( multiSessionCheck ) && ( !guiInfo.getAddress().startsWith( ".." ) ) && type != -4 ) {
1534 href = XHTMLTag.addUrlEncode( href,mscKey );
1535 }
1536 }
1537 }
1538 // 5.5.2.5 (2012/05/21) イメージアイコン対å¿?画面ID単位ではなくã?IMAGE_KEYパラメータでæŒ?®š可能にするã€?
1539 // return makeTagMenuString( href,tmpTarget,bodyIn,imgKey,type ) ;
1540 String imgKey = guiInfo.getImageKey() ;
1541 return makeTagMenuString( href,tmpTarget,bodyIn,gamenId,imgKey,type ) ;
1542 }
1543
1544 /**
1545 * タイプに応じたメニューを表示する為のæ–?—å?を作æ?しますã?
1546 * 従来からのメソãƒ?ƒ‰の引数のままで、新しい gamenId は、imgKey をそのままセãƒ?ƒˆしますã?
1547 *
1548 * ã€?:フィールドセãƒ?ƒˆメニュー
1549 * ã€?:トップ階層(【å?類名称ã€?
1550 * ã€?:選択階層(通常の折りたたみメニュー)
1551 * ã€?:選択非表示(通常はã€?š してありまã�?
1552 * ã€?1:グループå?類メニュー(class="GUI_GRP"のtdタグで囲われまã�?
1553 * ã€?2:ラインメニュー([画面名称]ã€?
1554 * ã€?3:マトリクスメニュー(ä¸?¦§)
1555 * ã€?4:マトリクスメニュー2(ä¸?¦§)
1556 *
1557 * @og.rev 5.5.2.5 (2012/05/21) イメージアイコン対å¿?画面ID単位ではなくã?IMAGE_KEYパラメータでæŒ?®š可能にするã€?
1558 *
1559 * @param href リンク
1560 * @param target ターゲãƒ?ƒˆ
1561 * @param bodyIn BODY部(表示)
1562 * @param imgKey imageファイルの検索キー
1563 * @param type タイãƒ?
1564 *
1565 * @return 階層別メニューæ–?—å?
1566 */
1567 private String makeTagMenuString( final String href,final String target, final String bodyIn,
1568 final String imgKey,final int type ) {
1569 return makeTagMenuString( href,target,bodyIn,imgKey,imgKey,type ); // gamenId の代わりに、imgKey をセãƒ?ƒˆするã€?
1570 }
1571
1572 /**
1573 * タイプに応じたメニューを表示する為のæ–?—å?を作æ?しますã?
1574 *
1575 * ã€?:フィールドセãƒ?ƒˆメニュー
1576 * ã€?:トップ階層(【å?類名称ã€?
1577 * ã€?:選択階層(通常の折りたたみメニュー)
1578 * ã€?:選択非表示(通常はã€?š してありまã�?
1579 * ã€?1:グループå?類メニュー(class="GUI_GRP"のtdタグで囲われまã�?
1580 * ã€?2:ラインメニュー([画面名称]ã€?
1581 * ã€?3:マトリクスメニュー(ä¸?¦§)
1582 * ã€?4:マトリクスメニュー2(ä¸?¦§)
1583 *
1584 * @og.rev 4.0.0.0 (2005/01/31) 新規登録(makeTopMenu、makeSecondMenuの置き換ã�?
1585 * @og.rev 4.0.0.0 (2007/11/28) switchæ–??中の二重コードを統ä¸?�—ますã?
1586 * @og.rev 4.2.1.0 (2008/04/01) ボタン形式ã?リンク対応ã?マトリクスメニュー2対å¿?
1587 * @og.rev 4.2.2.0 (2008/05/14) buttonRequestの付加をここで行うようにする
1588 * @og.rev 4.3.5.0 (2009/02/01) switch の case で重è¤??目をまとめますã?
1589 * @og.rev 5.1.4.0 (2010/03/01) onClick,onMouseOver,onMouseOutの処ç�??、外部のJavaScriptファイルで記述しますã?
1590 * @og.rev 5.1.8.0 (2010/07/01) コードリソースのキーが存在しなã�??合にエラーとなるバグを修正
1591 * @og.rev 5.3.9.0 (2011/09/01) メニューでのヘルプアイコン対å¿?
1592 * @og.rev 5.4.4.4 (2012/02/15) ヘルプアイコンはimgKeyがnullでなã�??合ã?みとする
1593 * @og.rev 5.5.0.4 (2012/03/14) FAQ対å¿?
1594 * @og.rev 5.5.2.5 (2012/05/21) イメージアイコン対å¿?画面ID単位ではなくã?IMAGE_KEYパラメータでæŒ?®š可能にするã€?
1595 * @og.rev 5.5.4.2 (2012/07/13) JSP(/gf/jsp/) ではなくã?CNTX(gf)?‹MENU_IMG(/jsp/menuImage/) で処ç�?�™るよã�?�«変更
1596 *
1597 * @param href リンク
1598 * @param target ターゲãƒ?ƒˆ
1599 * @param bodyIn BODY部(表示)
1600 * @param gamenId 画面ID/グループIDなど
1601 * @param imgKey imageファイルの検索キー
1602 * @param type タイãƒ?
1603 *
1604 * @return 階層別メニューæ–?—å?
1605 */
1606 private String makeTagMenuString( final String href,final String target, final String bodyIn,
1607 // final String imgKey,final int type ) {
1608 final String gamenId,final String imgKey,final int type ) {
1609
1610 final String body ;
1611 String listStyle = "<li>";
1612 // String imgFile = fileMap.getFilename( imgKey );
1613 String imgFile = imgFileMap.getFilename( imgKey ); // 5.5.2.5 (2012/05/21) 属æ?名変更
1614 // if( imgFile != null ) {
1615 if( imgFile != null ) {
1616 if( imageOnly ) {
1617 // body = "<img src=\"" + JSP + "/menuImage/" + imgFile + "\" title=\"" + bodyIn + "\" />" ;
1618 body = "<img src=\"/" + CNTX + MENU_IMG + imgFile + "\" title=\"" + bodyIn + "\" />" ;
1619 }
1620 // 5.5.2.5 (2012/05/21) -4(MATRIX Menu2)の場合ã?ã€?li style="list-style:url(画像URL);"> で処ç�?�™るã?
1621 else if( type == -4 ) {
1622 // listStyle = "<li style=\"list-style:url(" + JSP + "/menuImage/" + imgFile + ");\">" ;
1623 listStyle = "<li style=\"list-style:url(/" + CNTX + MENU_IMG + imgFile + ");\">" ;
1624 body = bodyIn ;
1625 }
1626 else {
1627 // body = "<img src=\"" + JSP + "/menuImage/" + imgFile + "\"/>" + bodyIn ;
1628 body = "<img src=\"/" + CNTX + MENU_IMG + imgFile + "\"/>" + bodyIn ;
1629 }
1630 }
1631 else {
1632 // if( imageOnly && bodyIn != null ) {
1633 if( imageOnly && bodyIn != null && bodyIn.length() > 0 ) {
1634 body = "<span title=\"" + bodyIn + "\" >" + bodyIn.charAt(0) + "</span>" ;
1635 }
1636 else {
1637 body = bodyIn ;
1638 }
1639 }
1640
1641 final String in ;
1642 if( href != null ) {
1643 TagBuffer tag = null;
1644 if( useButton ) { // 4.2.1.0 (2008/04/01)
1645 tag = new TagBuffer( "button" );
1646 String onClick = "top."+target+".location.href=\'"+ href + "\';";
1647 // 5.1.4.0 (2010/03/01)
1648 // if( useButtonScript ) {
1649 // onClick = onClick + "buttonClick(this);";
1650 // tag.add( "onmouseover" , "buttonOver(this);" );
1651 // tag.add( "onmouseout" , "buttonOut(this);" );
1652 // }
1653 tag.add( "onclick" , onClick );
1654 tag.add( "class" , "buttonMenu" ); // 4.2.1.0 (2008/04/03) classを追åŠ?
1655 // tag.add( "id" , imgKey ); // 4.2.1.0 (2008/04/11) idをimgKey(実質画面ID)で追åŠ?
1656 tag.add( "id" , gamenId ); // 5.5.2.5 (2012/05/21) idを本当ã?画面IDで設å®?
1657 tag.setBody( body );
1658 }
1659 else {
1660 tag = new TagBuffer( "a" );
1661
1662 String href2 = href;
1663 if( buttonRequest ){ // 4.2.2.0 (2008/05/14) ボタン式にする場合ã?リクエスト変数付加
1664 if ( excludeButton ){ //4.3.3.0 (2008/10/01) 強制プルãƒ?‚¦ン化ã?場合ã?falseで渡ã�?
1665 href2 = XHTMLTag.addUrlEncode( href2,"buttonRequest=false");
1666 }
1667 else{
1668 href2 = XHTMLTag.addUrlEncode( href2,"buttonRequest=true");
1669 }
1670 tag.add( "class" , "buttonClassify" );
1671 }
1672
1673 tag.add( "href" , href2 );
1674 tag.add( "target" , target );
1675 tag.setBody( body );
1676 }
1677 in = tag.makeTag();
1678 }
1679 else {
1680 in = body;
1681 }
1682
1683 // final String rtn ;
1684 String rtn = null;
1685 switch( type ) {
1686 case 1: rtn = FIELD_IN + "<legend>" + in + "</legend>" ; break; // 大åˆ?¡?
1687 case 2: rtn = "ã€? + in + "ã€? ; break; // 小å?類ã?直リンク
1688 // case 3: rtn = "ã€? + in ; break; // 通常メニュー
1689 case 3: // 通常メニュー
1690 case 4: rtn = "ã€? + in ; break; // éš?‚Œメニュー
1691 // case -1: rtn = "<td class=\"MENU_G " + imgKey + "\">" + in + "</td>" ; break; // グループメニュー
1692 case -1: rtn = "<td class=\"MENU_G " + gamenId + "\">" + in + "</td>" ; break; // 5.5.2.5 (2012/05/21) グループメニュー
1693 case -2: rtn = "[" + in + "] "; break; // ラインメニュー
1694 // 4.3.5.0 (2009/02/01) switch の case で重è¤??目をまとめますã?
1695 // case -3: rtn = in ; break; // マトリクスメニュー
1696 //case -4: rtn = "â–?" + in ; break;
1697 // case -3: // マトリクスメニュー
1698 // case -4: rtn = in ; break; // 4.2.1.0 (2008/04/03) リストã?リストã?ためâ–??ã�?‚‰なã�?
1699 // 5.5.2.5 (2012/05/21) listStyle の適用。type == -4 のみで適用するのでã€?3 は、そのままセãƒ?ƒˆするã€?
1700 case -3: rtn = in ; break; // マトリクスメニュー
1701 case -4: rtn = listStyle + in + "</li>" ; break; // 4.2.1.0 (2008/04/03) リストã?リストã?ためâ–??ã�?‚‰なã�?
1702 default :
1703 rtn = "X_" + in ;
1704 }
1705
1706 // 5.3.9.0 (2011/09/01) メニューでのヘルプアイコン対å¿?
1707 // 5.4.4.4 (2012/02/15) imgKeyがnullの場合ã?処ç�?�—なã�?existsでエラーになã‚?
1708 // if( imgKey != null ){
1709 // if( type == 2 ) {
1710 //// if( helpMap != null && helpMap.exists( imgKey ) ) {
1711 // if( helpMap != null && helpMap.exists( imgKey ) ) {
1712 // rtn = rtn + makeHelpLink( imgKey );
1713 // }
1714 // }
1715 // else if( type == -3 ) {
1716 // // boolean useHelp = ( helpMap != null && helpMap.exists( imgKey ) );
1717 // boolean useHelp = ( (helpMap != null && helpMap.exists( imgKey ))
1718 // || (faqLinkFormat != null && faqLinkFormat.length() > 0 )); // 5.5.0.4 (2012/03/16)
1719 // if( useHelp ) {
1720 // rtn = "<table><tr><td rowspan=\"2\">" + rtn + "</td><td>"
1721 // + ( useHelp ? makeHelpLink( imgKey ) : "" ) + "</td></tr><tr><td>"
1722 // + "" + "</td></tr></table>";
1723 // }
1724 // }
1725 // }
1726
1727 // 5.5.2.5 (2012/05/21) imgKeyではなくã?gamenIdがnullの場合ã?処ç�?�—なã�?�«変更、faqLinkFormat å»?¢ã€?
1728 if( gamenId != null && helpMap != null && helpMap.exists( gamenId ) ) {
1729 if( type == 2 ) {
1730 rtn = rtn + makeHelpLink( gamenId );
1731 }
1732 else if( type == -3 ) {
1733 rtn = "<table><tr><td rowspan=\"2\">" + rtn + "</td><td>"
1734 + makeHelpLink( gamenId ) + "</td></tr><tr><td></td></tr></table>";
1735 }
1736 }
1737
1738 return rtn ;
1739 }
1740
1741 /**
1742 * 【TAG】作æ?するメニューの種é¡?NORMAL,GROUP,ONELEVEL,NEXTGUI,MATRIX,MATRIX2)を指定しまã�?初期値:NORMAL)ã€?
1743 *
1744 * @og.tag
1745 * 作æ?するメニューには、è¤?•°の種類がありますã?
1746 * <table border="1" frame="box" rules="all" >
1747 * <caption>メニューの種é¡?/caption>
1748 * <tr><th>種é¡? </th><th>説æ˜? </th></tr>
1749 * <tr><td>NORMAL </td><td>通常の階層メニュー</td></tr>
1750 * <tr><td>GROUP </td><td>GROUPのみを取りå?してリンクを作æ?しますã?(topMenuに利用)</td></tr>
1751 * <tr><td>ONELEVEL</td><td>æŒ?®šã?classify のメニューのみを取りå?してリンクを作æ?しますã?(lineMenuに利用)</td></tr>
1752 * <tr><td>NEXTGUI </td><td>既存ã?ペã?ジの次にアクセスされる画面郡のリンクを作æ?しますã?</td></tr>
1753 * <tr><td>MATRIX </td><td>ä¸?¦§表形式ã?メニューを作æ?しますã?(大åˆ?¡ž付きマルチメニュー)</td></tr>
1754 * <tr><td>MATRIX2 </td><td>ä¸?¦§表形式ã?メニューを作æ?しますã?(大åˆ?¡žなしã?タンメニュー)</td></tr>
1755 * </table>
1756 *
1757 * @og.rev 4.0.0.0 (2005/01/31) 新規登録
1758 * @og.rev 5.2.3.0 (2010/12/01) NEXTGUI 追åŠ?
1759 *
1760 * @param type メニューの種é¡?NORMAL,GROUP,ONELEVEL,NEXTGUI,MATRIX,MATRIX2)
1761 */
1762 public void setMenuType( final String type ) {
1763 menuType = nval( getRequestParameter( type ),MENU_TYPE[0] );
1764 if( ! check( menuType, MENU_TYPE ) ) {
1765 String errMsg = "menuType に、指定できなã�?¨®類ã?æ–?—がæŒ?®šされました。menuType=["
1766 + menuType + "]" + HybsSystem.CR
1767 + "以下ã?中からã€?�¸択してくださいã€?"
1768 + StringUtil.array2csv( MENU_TYPE ) + "]" + HybsSystem.CR;
1769 throw new HybsSystemException( errMsg );
1770 }
1771 }
1772
1773 /**
1774 * 【TAG】折り返しメニューを構築するかどã�?�‹を指定しまã�?初期値:true)ã€?
1775 *
1776 * @og.tag
1777 * trueを設定すると、JavaScriptによる折り返しメニューを構築しますã?
1778 * false の場合ã?ã€??常のHTMLのみでã€?šŽ層メニューを構築しますã?
1779 * 初期値は、true(折り返しメニュー)ですã?
1780 *
1781 * @og.rev 4.0.0.0 (2005/01/31) 新規登録
1782 *
1783 * @param flag 折り返しメニューかどã�?�‹
1784 */
1785 public void setExpand( final String flag ) {
1786 expand = nval( getRequestParameter( flag ),expand );
1787 }
1788
1789 /**
1790 * 【TAG】表示対象となるグループをカンマ区åˆ?‚Šæ–?—å?でæŒ?®šしますã?
1791 *
1792 * @og.tag
1793 * メニューの表示対象グループをカンマ区åˆ?‚Šæ–?—å?でè¤?•°æŒ?®šできますã?
1794 * æŒ?®šã?グループã?メニューã�?�‘がã?表示対象になりますã?
1795 * メニューにもã?è¤?•°のグループをæŒ?®šできるためã€?¼‘グループã?æŒ?®šでã€?
1796 * è¤?•°のくくりを表示することも可能ですã?
1797 * グループをæŒ?®šしなã�??合ã?、å?グループが対象になりますã?
1798 * またã?メニュー側にグループ指定がなã�??合ã?、グループ指定に
1799 * 関係なくã?対象になりますã?
1800 * 初期値は、未æŒ?®?全メニューが対象)ですã?
1801 * åˆ?§£方法ã?ã€??常のパラメータ取得後に、CSVåˆ?§£しますã?
1802 *
1803 * @og.rev 4.0.0.0 (2005/01/31) 新規登録
1804 *
1805 * @param menuGroups 表示対象となるグルーãƒ?カンマ区åˆ?‚Šæ–?—å?)
1806 */
1807 public void setGroups( final String menuGroups ) {
1808 groups = StringUtil.csv2Array( getRequestParameter( menuGroups ) );
1809 if( groups.length == 0 ) { groups = null; }
1810 }
1811
1812 /**
1813 * 【TAG】表示対象となるå?é¡?classify)を指定しますã?
1814 *
1815 * @og.tag
1816 * メニューの表示対象となるå?é¡?classify)を指定することで、ä¸?�¾とまりã?
1817 * メニューを作æ?しますã?これはã€?¼“段階メニューのæœ?µ‚メニューを求めるå?合に
1818 * æŒ?®šしますã?
1819 * æœ?µ‚メニューは、画面上部に設ける予定ã?メニューで、上下フレーãƒ??割での
1820 * 運用時に使用しますã?
1821 * åˆ?¡žã?æŒ?®šがなã�??合ã?、すべてが表示対象になりますã?
1822 * 初期値は、未æŒ?®?全メニューが対象)ですã?
1823 *
1824 * @og.rev 4.0.0.0 (2005/01/31) 新規登録
1825 *
1826 * @param classify 表示対象となるå?é¡?classify)
1827 */
1828 public void setClassify( final String classify ) {
1829 selClassify = nval( getRequestParameter( classify ),selClassify );
1830 }
1831
1832 /**
1833 * 【TAG】グループメニューの表示対象となるソースå�?href)を指定しまã�?初期値:menu.jsp)ã€?
1834 *
1835 * @og.tag
1836 * GROUPメニューの表示対象となるソースå�?href)を指定することでã€?
1837 * サブメニューをè?åˆ??身のフレーãƒ?�«対して割り当てるã?かã?フレーãƒ?‚’åˆ?�‘て
1838 * 管ç�?�™るã?かを自由に設定できますã?
1839 * 初期値は、menu.jspですã?
1840 *
1841 * @og.rev 4.0.0.0 (2005/01/31) 新規登録
1842 *
1843 * @param inHref 表示対象となるソースå�?href)
1844 */
1845 public void setHref( final String inHref ) {
1846 href = nval( getRequestParameter( inHref ),href );
1847 }
1848
1849 /**
1850 * 【TAG】グループメニューの表示対象となるフレーãƒ?��(target)を指定しまã�?初期値:MENU)ã€?
1851 *
1852 * @og.tag
1853 * GROUPメニューの表示対象となるフレーãƒ?��(target)を指定することでã€?
1854 * サブメニューをè?åˆ??身のフレーãƒ?�«対して割り当てるã?かã?フレーãƒ?‚’åˆ?�‘て
1855 * 管ç�?�™るã?かを自由に設定できますã?
1856 * フレーãƒ??割を行うと、変更ç®?‰€は、サブメニューのみになる為、動きに無é§?�Œ
1857 * なくなりますが、グループメニューの大きさが固定されてしまã�?�¾すã?
1858 * 自åˆ??身にすると、グループメニューとサブメニューをä¸?�¤のフレーãƒ?�«
1859 * 入れることで、更新時ã?画面のちらつきã?発生しますが、無é§?�ªスペã?スは
1860 * 省くことが可能になりますã?
1861 * 初期値は、MENU(通常のメニューフレーãƒ?ですã?
1862 *
1863 * @og.rev 4.0.0.0 (2005/01/31) 新規登録
1864 *
1865 * @param inTarget 表示対象となるフレーãƒ?��(target)
1866 */
1867 public void setTarget( final String inTarget ) {
1868 target = nval( getRequestParameter( inTarget ),target );
1869 }
1870
1871 /**
1872 * 【TAG】グループメニューの表示に、画像ã?みかどã�?�‹[true:画像ã?み/false:画像+ラベル]を指定しまã�?初期値:false)ã€?
1873 *
1874 * @og.tag
1875 * GROUPメニューの表示対象として、jsp/menuImage 以下に グループ名と同ä¸??
1876 * 画像ファイルが存在する場合ã?、画像を使用しますã?
1877 * こã?フラグをã?true に設定すると、画像ã?みを使用しますã?
1878 * false の場合ã?、画像+グループ名のラベルを使用しますã?
1879 * 画像ã?みの場合でもã?title 属æ?にグループ名のラベルをセãƒ?ƒˆしますã?でã€?
1880 * マウスカーソルをオーバã?すれば、名称がTips表示されますã?
1881 * 画像が存在しなã�??合に、true(画像ã?み)に設定したå?合ã?、ラベルのæœ??の?‘文å?
1882 * のみをå?力しますã?
1883 * 初期値は、false(画像+ラベル)ですã?
1884 *
1885 * @og.rev 4.0.0.0 (2005/01/31) 新規登録
1886 *
1887 * @param flag [true:画像ã?み/false:画像+ラベル]
1888 */
1889 public void setImageOnly( final String flag ) {
1890 imageOnly = nval( getRequestParameter( flag ),imageOnly );
1891 }
1892
1893 /**
1894 * 【TAG】グループメニューの表示対象となるメニューを横並びさせる数を指定しますã?
1895 *
1896 * @og.tag
1897 * GROUPメニューなどの表示を行う場合に、横方向に何å?のメニューを表示させるかã‚?
1898 * æŒ?®šしますã?例えば、画像ã?みのリンクとçµ?�¿合わせれば、よりã?多くのグループを
1899 * 横方向に並べることで、小é?域に多くのæƒ??を詰めることが可能になりますã?
1900 * 0 を設定すると、横方向にのみ並べã‚?折り返さなã�?メニューを作ることã�?
1901 * 可能になりますã?
1902 * 初期値は、無制限ですã?
1903 *
1904 * @og.rev 4.0.0.0 (2005/01/31) 新規登録
1905 *
1906 * @param count メニューを横並びさせる数
1907 */
1908 public void setSideCount( final String count ) {
1909 sideCount = nval( getRequestParameter( count ),sideCount );
1910 }
1911
1912 /**
1913 * 【TAG】表形式メニュー(MATRIX)のä¸?�¤のセルに含まれるæœ?°�行数を指定しまã�?初期値:8)ã€?
1914 *
1915 * @og.tag
1916 * 表形式メニュー(MATRIX)では、ä¸?�¤のセルの高さを同ä¸?�«する為ã€?lt;br />タグを挿入しますã?
1917 * こã?タグの挿入する個数を指定しますã?
1918 * こã?個数ã�?�‘、メニューの数があろうとなかろã�?�¨行を確保しますã?
1919 * æŒ?®šã?値がã?実際の行数より少なã�??合ã?、実際の行数åˆ?� け拡張されますã?
1920 * 初期値はã€? ですã?
1921 *
1922 * @og.rev 4.0.0.0 (2005/01/31) 新規登録
1923 *
1924 * @param count セルに含まれるæœ?°�行数
1925 * @see #setMaxCellCount( String )
1926 */
1927 public void setMinCellCount( final String count ) {
1928 minCellCount = nval( getRequestParameter( count ),minCellCount );
1929 }
1930
1931 /**
1932 * 【TAG】表形式メニュー(MATRIX)のä¸?�¤のセルに含まれるæœ?¤§行数を指定しまã�?初期値:8)ã€?
1933 *
1934 * @og.tag
1935 * 表形式メニュー(MATRIX)では、ä¸?�¤のセルの高さを同ä¸?�«する為、指定ã?行数で
1936 * 新たな セルを作æ?して、セルを横方向に連結しますã?
1937 * 初期値はã€? ですã?
1938 *
1939 * @og.rev 4.0.0.0 (2005/01/31) 新規登録
1940 *
1941 * @param count セルに含まれるæœ?¤§行数
1942 * @see #setMinCellCount( String )
1943 */
1944 public void setMaxCellCount( final String count ) {
1945 maxCellCount = nval( getRequestParameter( count ),maxCellCount );
1946 }
1947
1948 /**
1949 * 【TAG】グループメニューのキャãƒ?‚·ュを使用するかどã�?�‹[true/false]を指定しまã�?初期値:true)ã€?
1950 *
1951 * @og.tag
1952 * GROUPメニューの表示は、ä¸?—¦作æ?すると、ほとんど書き換えることがありませんã€?
1953 * 作æ?は、使用できる全メニューをスキャンして、その中からグループ属æ?をピãƒ?‚¯アãƒ??
1954 * するとã�?�†処ç�?‚’行ってã�?‚‹為、æ?らかに無é§?�ª処ç�?�§すã?
1955 * そこで、jsp/index.jsp が実行された場合ã?みキャãƒ?‚·ュをクリアして、å?部では
1956 * キャãƒ?‚·ュがなければ作æ?しã?あればキャãƒ?‚·ュを使ã�?ƒジãƒ?‚¯になってã�?�¾すã?
1957 * ここでは、キャãƒ?‚·ュを使用するのかã?毎回作æ?しなおすのかをæŒ?®šしますã?
1958 * 対象として、jsp/menuImage 以下に グループ名と同ä¸??
1959 * 画像ファイルが存在する場合ã?、画像を使用しますã?
1960 * こã?フラグをã?true に設定すると、画像ã?みを使用しますã?
1961 * false の場合ã?、画像+グループ名のラベルを使用しますã?
1962 * 画像ã?みの場合でもã?title 属æ?にグループ名のラベルをセãƒ?ƒˆしますã?でã€?
1963 * マウスカーソルをオーバã?すれば、名称がTips表示されますã?
1964 * 画像が存在しなã�??合ã?、たとえã?true(画像ã?み)に設定してもã?ラベルをå?力しますã?
1965 * 初期値は、true(キャãƒ?‚·ュする)ですã?
1966 *
1967 * @og.rev 4.0.0.0 (2005/01/31) 新規登録
1968 *
1969 * @param flag [true:キャãƒ?‚·ュする/false:キャãƒ?‚·ュしない]
1970 */
1971 public void setCache( final String flag ) {
1972 cache = nval( getRequestParameter( flag ),cache );
1973 }
1974
1975 /**
1976 * 【TAG】正判å®?マッチするå?合に、メニューに出ã�?条件を設定しますã?
1977 *
1978 * @og.tag
1979 * メニューを表示する/しなã�??判定を、画面IDのマッチングで判断しますã?
1980 * これは、正規表現で表される引数と、画面IDがã?ãƒ?ƒ�する場合にã€?
1981 * メニューを表示させますã?
1982 * マッチしなã�??合ã?、表示されませんã€?
1983 * 何もæŒ?®šしなã�??合ã?、ロールの判定みの行われますã?
1984 *
1985 * @param mt 正判å®?マッチするå?合に、メニューに出ã�?条件
1986 */
1987 public void setMatch( final String mt ) {
1988 match = nval( getRequestParameter( mt ),match );
1989 }
1990
1991 /**
1992 * 【TAG】é?判å®?マッチするå?合に、メニューに出さなã�?条件を設定しますã?
1993 *
1994 * @og.tag
1995 * メニューを表示する/しなã�??判定を、画面IDのマッチングで判断しますã?
1996 * これは、正規表現で表される引数と、画面IDがã?ãƒ?ƒ�する場合にã€?
1997 * メニューを表示させませんã€?
1998 * マッチしなã�??合ã?、表示されますã?
1999 * 何もæŒ?®šしなã�??合ã?、ロールの判定みの行われますã?
2000 *
2001 * @param umt é€?ˆ¤å®?マッチするå?合に、メニューに出さなã�?条件
2002 */
2003 public void setUnmatch( final String umt ) {
2004 unmatch = nval( getRequestParameter( umt ),unmatch );
2005 }
2006
2007 /**
2008 * 【TAG】画面リンクにボタンを使用するかどã�?�‹[true/false]を指定しまã�?初期値:false)ã€?
2009 *
2010 * @og.tag
2011 * 画面リンクをã?タンリンク形式で表示するかをæŒ?®šしますã?
2012 * falseの場合ã?ã€??常のリンクになりますã?
2013 * 初期値は、false(通常リンク)ですã?
2014 *
2015 * @og.rev 4.2.1.0 (2008/04/01) 新規登録
2016 *
2017 * @param flag [true:ボタン形式リンク/false:通常リンク]
2018 */
2019 public void setUseButton( final String flag ) {
2020 useButton = nval( getRequestParameter( flag ),useButton );
2021 }
2022
2023 /**
2024 * 【å»?¢】ã?タンリンクを使用した場合に、JavaScriptのイベントを発生させるかどã�?�‹[true/false]を指定しまã�?初期値:false)ã€?
2025 *
2026 * @og.tag
2027 * (こã?属æ?は、å»?¢されてã�?�¾ã�?
2028 * ボタンリンクを使用した場合に、JavaScriptのイベントを発生させるかをæŒ?®šしますã?
2029 * 発生するイベント及び呼ばれる関数は以下ã?3つですã?
2030 * â‘?‚¯リãƒ?‚¯æ™?â‡?buttonClick(this)
2031 * ②マウスオーバã?æ™?â‡?buttonOver(this)
2032 * ③カーソルアウト時 â‡?buttonOut(this)
2033 * 初期値は、false(JavaScriptイベントを発生しなã�?ですã?
2034 *
2035 * @og.rev 4.2.1.0 (2008/04/01) 新規登録
2036 * @og.rev 5.1.4.0 (2010/03/01) å»?¢
2037 *
2038 * @param flag [true:ボタン形式リンク/false:通常リンク]
2039 */
2040 public void setUseButtonScript( final String flag ) {
2041 // useButtonScript = nval( getRequestParameter( flag ),useButtonScript );
2042 }
2043
2044 /**
2045 * 【TAG】ã?トリクスからの遷移先でボタンメニュー表示するかどã�?�‹[true/false]を指定しまã�?初期値:false)ã€?
2046 *
2047 * @og.tag
2048 * マトリクスメニューからの遷移先でボタンメニューを表示させるために
2049 * アドレスに付加するリクエスト変数を指定しますã?
2050 * trueにするとbuttonRequest=trueのリクエスト変数を付けますã?
2051 * falseの場合ã?リクエスト変数を付けませんã€?
2052 * 初期値は、false(プルãƒ?‚¦ン形式で表示)ですã?
2053 *
2054 * @og.rev 4.2.1.0 (2008/04/17) 新規登録
2055 *
2056 * @param flag [true:ボタン形å¼?false:通常形式]
2057 */
2058 public void setButtonRequest( final String flag ) {
2059 buttonRequest = nval( getRequestParameter( flag ),buttonRequest );
2060 }
2061
2062 /**
2063 * 【TAG】標準画面をå?期状態で表示するかどã�?�‹[true/false]を指定しまã�?初期値:false)ã€?
2064 *
2065 * @og.tag
2066 * 通常expand=trueの状態では、メニューが折りたたまれてã�?�¾すã?
2067 * こã?inlineStyle属æ?をtrueにすると標準画面のスタイルにdisplay:inlineã‚?
2068 * 付加する事で、å?期状態でメニューが開ã�?�Ÿ状態になりますã?
2069 * expand=falseとの違いはã€?š しメニュー及ã?åˆ?¡žã?折りたたみ機è?が利用できる事ですã?
2070 * 初期値は、false(折りたたまれた状æ…?ですã?
2071 *
2072 * @og.rev 4.3.3.0 (2008/10/01) 新è¦?
2073 *
2074 * @param flag [true:ボタン形å¼?false:通常形式]
2075 */
2076 public void setInlineStyle( final String flag ) {
2077 inlineStyle = nval( getRequestParameter( flag ),inlineStyle );
2078 }
2079
2080 /**
2081 * 【TAG】ONELEVEL,NEXTGUI で、DIVタグ?‹design-onelevel 処ç�?‚’するかどã�?�‹[true/false]を指定しまã�?初期値:false)ã€?
2082 *
2083 * @og.tag
2084 * ONELEVEL,NEXTGUI は、QUERY 画面の上部に表示される簡易メニューですã?
2085 * こã?表記ã?、[画面リンク] 形式ã?ãƒ?‚スト表示されてã�?�¾すが、画面名称を固定長にするなどの処ç�?‚’入れるためã€?
2086 * DIVでフォーマットしますã?
2087 * 作りは、å?力される HTML を確認いただきたã�?�¨思いますã?
2088 * 全体をã€?lt;div id="design-onelevel" > で、囲ã�??画面名称はã€?lt;span clas="design-onelevel" > で、囲ã�?�¾すã?
2089 * これをã?標準CSSで、固定å¹?�¨背景色、リンクのæ–?—色など書き換えて、体裁を整えますã?
2090 * 初期値は、false(従来と同じ)ですã?
2091 *
2092 * @og.rev 5.5.2.3 (2012/05/15) 新規追åŠ?
2093 *
2094 * @param flag [true:DIVタグ処ç�?‚’する/false:しない]
2095 */
2096 public void setUseDivOneLevel( final String flag ) {
2097 useDivOneLevel = nval( getRequestParameter( flag ),useDivOneLevel );
2098 }
2099
2100 /**
2101 * シリアライズ用のカスタãƒ?‚·リアライズ書き込みメソãƒ?ƒ‰
2102 *
2103 * @og.rev 4.0.0.0 (2006/09/31) 新規追åŠ?
2104 * @serialData ä¸?ƒ¨のオブジェクトã?、シリアライズされませんã€?
2105 *
2106 * @param strm ObjectOutputStreamオブジェクãƒ?
2107 * @throws IOException 入出力エラーが発生したå?å�?
2108 */
2109 private void writeObject( final ObjectOutputStream strm ) throws IOException {
2110 strm.defaultWriteObject();
2111 }
2112
2113 /**
2114 * シリアライズ用のカスタãƒ?‚·リアライズ読み込みメソãƒ?ƒ‰
2115 *
2116 * ここでは、transient 宣è¨?�•れたå†?ƒ¨変数のå†??初期化がå¿?¦�なフィールドã?み設定しますã?
2117 *
2118 * @og.rev 4.0.0.0 (2006/09/31) 新規追åŠ?
2119 * @serialData ä¸?ƒ¨のオブジェクトã?、シリアライズされませんã€?
2120 *
2121 * @param strm ObjectInputStreamオブジェクãƒ?
2122 * @see #release2()
2123 * @throws IOException シリアライズに関する入出力エラーが発生したå?å�?
2124 * @throws ClassNotFoundException クラスを見つけることができなかったå?å�?
2125 */
2126 private void readObject( final ObjectInputStream strm ) throws IOException , ClassNotFoundException {
2127 strm.defaultReadObject();
2128 }
2129
2130 /**
2131 * 画面オブジェクトä¸?¦§より、指定されたインãƒ?ƒƒクスより後に実体となる画面ID
2132 * (直リンクã€??常メニューã€?š しメニュー※改行メニューは除ã�?が存在するかを判定しますã?
2133 * グループスが指定されてã�?‚‹場合ã?、グループで絞り込まれた結果に対して判定を行いますã?
2134 *
2135 * @og.rev 4.0.0.0 (2007/10/30) 新規追åŠ?
2136 *
2137 * @param guiInfos 画面オブジェクトä¸?¦§
2138 * @param idx 検索を開始するインãƒ?ƒƒクス番号
2139 *
2140 * @return 0:実体画面が存在せず 1:全てéš?�—のåˆ?¡?2:実体画面 or 通常画面を含ã‚??é¡?
2141 */
2142 private int guiCheck( final GUIInfo[] guiInfos, final int idx ) {
2143 int flg = 0;
2144
2145 // 実æ?探ã�?
2146 if( levelCheck( guiInfos[idx] ) > 0 ) {
2147 // グループメニューリンク時ã?処ç�?
2148 if( groups == null ) { flg = 2; }
2149 else { flg = groupCheck( guiInfos[idx] ) ? 2 : 0; }
2150 }
2151 else {
2152 for( int j=idx+1; j<guiInfos.length; j++ ) {
2153 if( !guiInfos[j].isRead() ) { continue; }
2154 if( flg > 1 || ( guiInfos[j].getLevel() <= guiInfos[idx].getLevel() ) ) { break; }
2155
2156 if( groups == null || groupCheck( guiInfos[j] ) ) {
2157 if( levelCheck( guiInfos[j] ) > 0 ) {
2158 flg = levelCheck( guiInfos[j] );
2159 }
2160 }
2161 }
2162 }
2163
2164 return flg;
2165 }
2166
2167 /**
2168 * æŒ?®šされた画面IDが実体であるã�?直リンクã€??常メニューã€?š しメニュー※改行メニューは除ã�?を判定しますã?
2169 *
2170 * @og.rev 4.0.0.0 (2007/10/30) 新規追åŠ?
2171 * @og.rev 4.0.0.0 (2007/11/30) switch に default 追åŠ?
2172 *
2173 * @param guiInfo 画面オブジェクãƒ?
2174 *
2175 * @return 0:åˆ?¡?1:実体画面(éš?�—) 2:実体画面(通常) or 直リンク
2176 */
2177 private int levelCheck( final GUIInfo guiInfo ) {
2178 int flg = 0;
2179
2180 switch ( guiInfo.getLevel() ) {
2181 case 2:
2182 // if( guiInfo.getAddress() != null && guiInfo.getAddress().length() > 0 ) {
2183 String adrs = guiInfo.getAddress();
2184 if( adrs != null && adrs.length() > 0 ) {
2185 flg = 2;
2186 }
2187 break;
2188 case 3:
2189 // flg = !"HYBS_BR".equals( guiInfo.getKey() ) ? 2 : flg; break;
2190 flg = "HYBS_BR".equals( guiInfo.getKey() ) ? flg : 2; break;
2191 case 4:
2192 // flg = !"HYBS_BR".equals( guiInfo.getKey() ) ? 1 : flg; break;
2193 flg = "HYBS_BR".equals( guiInfo.getKey() ) ? flg : 1; break;
2194 default :
2195 flg = 0; break;
2196 }
2197
2198 return flg;
2199 }
2200
2201 /**
2202 * æŒ?®šされた画面IDが設定されたグループスに含まれるかを判定しますã?
2203 *
2204 * @og.rev 4.0.0.0 (2007/10/30) 新規追åŠ?
2205 *
2206 * @param guiInfo 画面オブジェクãƒ?
2207 *
2208 * @return グループスに含まれるかどã�?�‹
2209 */
2210 private boolean groupCheck( final GUIInfo guiInfo ) {
2211 boolean flg = false;
2212
2213 for( int k=0; k<groups.length; k++ ) {
2214 if( guiInfo.isGroupIn( groups[k] ) ) {
2215 flg = true;
2216 break;
2217 }
2218 }
2219
2220 return flg;
2221 }
2222
2223 /**
2224 * ヘルプリンクæ–?—å?を生成しますã?
2225 *
2226 * @og.rev 5.3.9.0 (2011/09/01) 新規作æ?
2227 * @og.rev 5.0.0.4 (2012/03/16) FAQ対å¿?
2228 * @og.rev 5.5.2.5 (2012/05/21) FAQ対å¿?å»?¢
2229 *
2230 * @param key 画面ID
2231 *
2232 * @return ヘルプリンクæ–?—å?
2233 */
2234 private String makeHelpLink( final String key ) {
2235 String rtn = "";
2236 String filename = helpMap.getFilename( key );
2237 if( filename != null ) {
2238 rtn = helpLinkFormat.replace( "{FILENAME}", filename );
2239 }
2240 // if(true){
2241 // 5.5.2.5 (2012/05/21) å»?¢
2242 // if( faqLinkFormat != null && key != null ){
2243 // rtn += faqLinkFormat.replace( "{GUIKEY}", key );
2244 // }
2245 return rtn;
2246 }
2247
2248 /**
2249 * こã?オブジェクトã?æ–?—å?表現を返しますã?
2250 * 基本çš?�«ãƒ?ƒ�ãƒ?‚°目çš?�«使用しますã?
2251 *
2252 * @return こã?クラスのæ–?—å?表現
2253 */
2254 @Override
2255 public String toString() {
2256 return org.opengion.fukurou.util.ToString.title( this.getClass().getName() )
2257 .println( "VERSION" ,VERSION )
2258 .println( "menuType" ,menuType )
2259 .println( "expand" ,expand )
2260 .println( "groups" ,groups )
2261 .println( "selClassify" ,selClassify )
2262 .println( "href" ,href )
2263 .println( "target" ,target )
2264 .println( "imageOnly" ,imageOnly )
2265 .println( "sideCount" ,sideCount )
2266 .println( "minCellCount" ,minCellCount )
2267 .println( "maxCellCount" ,maxCellCount )
2268 .println( "cache" ,cache )
2269 .println( "mscKey" ,mscKey )
2270 .println( "multiSessionCheck" ,multiSessionCheck )
2271 .println( "useButton" ,useButton )
2272 // .println( "useButtonScript" ,useButtonScript )
2273 .println( "buttonRequest" ,buttonRequest )
2274 .println( "MENU_TYPE" ,MENU_TYPE )
2275 .println( "Other..." ,getAttributes().getAttribute() )
2276 .fixForm().toString() ;
2277 }
2278 }