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.plugin.view;
017
018 import org.opengion.hayabusa.common.HybsSystem;
019
020 /**
021 * JavaScript ã®ãƒ?ƒªãƒ¼éšŽå±¤ã‚’æŒã£ãŸãƒ†ãƒ¼ãƒ–ル表示を行ã†ã€ãƒ„リーãƒ??ブル表示クラスã§ã™ã?
022 *
023 * AbstractViewForm ã«ã‚ˆã‚Šã€setter/getterメソãƒ?ƒ‰ã®ãƒ?ƒ•ォルト実è£?‚’æä¾›ã—ã¦ã?¾ã™ã?
024 * å„HTMLã®ã‚¿ã‚°ã«å¿?¦ãª setter/getterメソãƒ?ƒ‰ã®ã¿?Œè¿½åŠ?®šç¾©ã—ã¦ã?¾ã™ã?
025 *
026 * AbstractViewForm を継承ã—ã¦ã?‚‹ç‚º,ãƒã‚±ãƒ¼ãƒ«ã«å¿œã˜ãŸãƒ©ãƒ™ãƒ«ã‚’å?力ã•ã›ã‚‹äº‹ãŒå‡ºæ¥ã¾ã™ã?
027 *
028 * @og.group ç”»é¢è¡¨ç¤º
029 *
030 * @version 4.0
031 * @author Kazuhiko Hasegawa
032 * @since JDK5.0,
033 */
034 public class ViewForm_HTMLTreeBOM extends ViewForm_HTMLTable {
035 //* ã“ã?プãƒã‚°ãƒ©ãƒ??VERSIONæ–?—å?ã‚’è¨å®šã—ã¾ã™ã? {@value} */
036 private static final String VERSION = "4.0.0.0 (2005/08/31)" ;
037
038 public static final String COLUMN_LEVEL_KEY = "COLUMN_LEVEL";
039
040 // 4.3.4.4 (2009/01/01)
041 // /**
042 // * ãƒ?ƒ•ォルトコンストラクター
043 // *
044 // */
045 // public ViewForm_HTMLTreeBOM() {
046 // super();
047 // }
048
049 /**
050 * DBTableModel ã‹ã‚‰ HTMLæ–?—å?を作æ?ã—ã¦è¿”ã—ã¾ã™ã?
051 * startNo(表示開始ä½ç½®)ã‹ã‚‰ã€pageSize(表示件数)ã¾ã§ã®Viewæ–?—å?を作æ?ã—ã¾ã™ã?
052 * 表示残りãƒ??ã‚¿ã?pageSize 以下ã?å ´åˆã?,残りã®ãƒ??ã‚¿ã‚’ã™ã¹ã¦å‡ºåŠ›ã—ã¾ã™ã?
053 *
054 * @og.rev 3.5.2.1 (2003/10/27) JavaScript å†??ãƒ?ƒ–ルコーãƒ??ションをシングルコーãƒ??ションã«å¤‰æ›´ã™ã‚‹ã€?
055 * @og.rev 3.9.0.1 (2007/12/18) DBクラスをå?力ã™ã‚‹ã?
056 *
057 * @param stNo 表示開始ä½ç½®
058 * @param pgSize 表示件数
059 *
060 * @return DBTableModelã‹ã‚‰ä½œæ?ã•れã?HTMLæ–?—å?
061 */
062 @Override
063 public String create( final int stNo, final int pgSize ) {
064 // ã“ã?クラスã§ã¯ã€ãƒ†ãƒ¼ãƒ–ル全ãƒ??タを使用ã—ã¾ã™ã?
065 if( getRowCount() == 0 ) { return ""; } // 暫定å?ç½®
066
067 int startNo = 0;
068 int pageSize = getRowCount();
069
070 int lastNo = getLastNo( startNo, pageSize );
071
072 StringBuilder out = new StringBuilder( HybsSystem.BUFFER_LARGE );
073
074 out.append( getHeader() );
075
076 int level;
077 boolean isFld;
078 int clmCnt = getColumnCount(); // 3.5.5.7 (2004/05/10)
079 for( int row=startNo; row<lastNo; row++ ) {
080 // カラãƒ?=?ã?ã€ãƒ¬ãƒ™ãƒ«ã‚’指定ã™ã‚‹ã?
081 level = Integer.parseInt( getValueLabel(row,0) );
082 isFld = false;
083 if( row+1<lastNo ) {
084 int nextLevel = Integer.parseInt( getValueLabel(row+1,0) );
085 isFld = ( level < nextLevel ) ? true : false ;
086 }
087 out.append( getLevelScript( level,isFld ) );
088
089 // カラãƒ?=?ã?ã€ãƒ¬ãƒ™ãƒ«ã‚’指定ã™ã‚‹ã?ã§è¡¨ç¤ºã—ãªã??
090 for(int column = 1; column < clmCnt; column++) {
091 if( isColumnDisplay( column ) ) {
092 out.append("<td class=\""); // 3.9.0.1 (2007/12/18)
093 out.append( getColumnDbType(column) );
094 out.append("\"> ");
095 out.append( getValueLabel(row,column) );
096 out.append("</td>");
097 }
098 }
099 out.append( "', '', 'gold')" );
100 if( level != 0 ) {
101 out.append( ")" );
102 }
103 out.append( HybsSystem.CR );
104 }
105 out.append( getFutter() );
106
107 return out.toString();
108 }
109
110 /**
111 * DBTableModel ã‹ã‚‰ ãƒ??ブルã®ãƒ˜ãƒƒãƒ??ã‚¿ã‚°æ–?—å?を作æ?ã—ã¦è¿”ã—ã¾ã™ã?
112 * JavaScript ã® TreeBody ã§ã¯ã€JavaScriptã«é–¢é€£ã™ã‚‹å®šç¾©ã‚‚ã“ã®ãƒ˜ãƒƒãƒ??ã«
113 * å«ã‚ã¾ã™ã?
114 *
115 * @og.rev 3.5.2.1 (2003/10/27) JavaScript å†??ãƒ?ƒ–ルコーãƒ??ションをシングルコーãƒ??ションã«å¤‰æ›´ã™ã‚‹ã€?
116 * @og.rev 3.9.0.1 (2007/12/18) æ–?—サイズ変更スクリプト対応ã?ãŸã‚ã€id="viewTable"ã‚’å?åŠ?
117 *
118 * @return ãƒ??ブルã®ãƒ˜ãƒƒãƒ??ã‚¿ã‚°æ–?—å?
119 */
120 @Override
121 protected String getHeader() {
122 StringBuilder buf = new StringBuilder( HybsSystem.BUFFER_MIDDLE );
123
124 buf.append("<table border=\"0\" cellspacing=\"2\" cellpadding=\"0\" summary=\"bomTable\" id=\"viewTable\">"); // 3.9.0.1 (2007/12/18)
125 buf.append( HybsSystem.CR );
126 buf.append("<script type=\"text/javascript\">");
127 buf.append( HybsSystem.CR );
128 buf.append("<!--");
129 buf.append( HybsSystem.CR );
130 buf.append("aux0 = gFld('");
131 // カラãƒ?=?ã?ã€ãƒ¬ãƒ™ãƒ«ã‚’指定ã™ã‚‹ã?ã§è¡¨ç¤ºã—ãªã??
132 int clmCnt = getColumnCount(); // 3.5.5.7 (2004/05/10)
133 for(int column = 1; column < clmCnt; column++) {
134 if( isColumnDisplay( column ) ) {
135 buf.append("<th>");
136 buf.append( getColumnLabel(column) );
137 buf.append("</th>");
138 }
139 }
140 buf.append("', '', 'gold')");
141 buf.append( HybsSystem.CR );
142
143 return buf.toString();
144 }
145
146 /**
147 * DBTableModel ã‹ã‚‰ ãƒ??ブルã®ãƒ•ッタータグæ–?—å?を作æ?ã—ã¦è¿”ã—ã¾ã™ã?
148 * JavaScript ã® TreeBody ã§ã¯ã€JavaScriptã«é–¢é€£ã™ã‚‹å®šç¾©ã‚‚ã“ã®ãƒ•ッターã«
149 * å«ã‚ã¾ã™ã?
150 *
151 * @return ãƒ??ブルã®ãƒ•ッタータグæ–?—å?
152 */
153 protected String getFutter() {
154 StringBuilder buf = new StringBuilder( HybsSystem.BUFFER_MIDDLE );
155
156 buf.append("initializeDocument()").append( HybsSystem.CR );
157 buf.append("//-->").append( HybsSystem.CR );
158 buf.append("</script>").append( HybsSystem.CR );
159 buf.append("</table>").append( HybsSystem.CR );
160
161 return buf.toString();
162 }
163
164 /**
165 * 行ã?レベルã«å¿œã˜ã?JavaScript関数ã®ãƒ˜ãƒƒãƒ??部åˆ?‚’è¿”ã—ã¾ã™ã?
166 *
167 * @og.rev 3.5.2.1 (2003/10/27) JavaScript å†??ãƒ?ƒ–ルコーãƒ??ションをシングルコーãƒ??ションã«å¤‰æ›´ã™ã‚‹ã€?
168 *
169 * @param lvl ãƒ?ƒªãƒ¼ã®ãƒ¬ãƒ™ãƒ«
170 * @param isFld フォルãƒ?‹ã©ã?‹[true:フォルãƒ?false:æœ?¸‹å±¤]
171 *
172 * @return JavaScript関数ã®ãƒ˜ãƒƒãƒ??部åˆ?
173 */
174 private String getLevelScript( final int lvl,final boolean isFld ) {
175
176 String auxX = "\taux" + ( lvl );
177 String auxY = "aux" + ( lvl-1 );
178
179 final String rtn ;
180 if( isFld ) {
181 rtn = auxX + " = insFld(" + auxY + ", gFld('";
182 }
183 else {
184 rtn = "\tinsFld(" + auxY + ", gLnk('CONTENTS','";
185 }
186
187 return rtn;
188 }
189 }