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 }