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.HybsSystemException; 019 import org.opengion.fukurou.util.StringUtil; 020 import org.opengion.fukurou.util.TagBuffer; 021 022 /** 023 * option/ogTbodyMovable.js JavaScript を利用したマウスによる上下移動にシンクロ等させます? 024 * 025 * headタグで、useTbodyMovable="true" をセ?すると、?ウスまた?カーソルで? 026 * tbody 部を上下に移動させることが可能です? 027 * こ?タグは、その動作に関連付けて、同期して移動させたり??を?れ替えるカラ? 028 * ?に?1??1するカラ??移動?制限(?替対象にしな??ドラ?できな?ど?? 029 * を指定します? 030 * 記述は、view の後で構いません? 031 * 032 * こ?タグを有効にするには、headタグで、useTbodyMovable="true" をセ?する?があります? 033 * なお?こ? JavaScript は?行単位に tbody を記述して? view であれば、有効です? 034 * ?で、tr ではなく?tbody を??て?ためです? 035 * ?つまり?ガント専用ではありませんが?HTMLTableには使えません。? 036 * 037 * こ?タグは、span タグを?力し、ogTbodyMovable.js で処?て?す?そ?際?キーとして? 038 * span タグ には、class="tbodyMovable" を付けて?す? 039 * 040 * @og.formSample 041 * ●形式?lt;og:tbodyMovable ... /> 042 * ●body?な? 043 * ●前提:headタグで、useTbodyMovable="true" を指定してください? 044 * 045 * ●Tag定義?? 046 * <og:tbodyMovable 047 * seqclm 【TAG】移動時に値を?れ替えするカラ?(カンマ区?で??可能,先?名称で判断)(初期値:SEQ) 048 * noMove 【TAG】?替制限す?tbodyのクラス?カンマ区?で??可能) 049 * noDrag 【TAG】?ウスでドラ?できな?tbodyのクラス?カンマ区?で??可能) 050 * adjustSeq 【TAG】上移?-1)、下移?+1)で、?をセ?するカラ?(?つのみ、seqclmで?されて??あ? 051 * sync 【TAG】他?TABLEを同期して移動させる場合に、クラス/IDを指? 052 * debug 【TAG】デバッグ??を?力するかど?[true/false]を指定しま?初期値:false) 053 * /> 054 * 055 * ●使用? 056 * <og:tbodyMovable 057 * seqclm = "DYORDER,SEQ" 058 * noMove = "disMovable" 059 * noDrag = "disDragable" 060 * adjustSeq = "DYORDER" 061 * sync = "fixBodyDiv" 062 * /> 063 * 064 * @og.rev 5.6.3.3 (2013/04/19) 新規作? 065 * @og.group 画面部? 066 * 067 * @version 5.0 068 * @author Kazuhiko Hasegawa 069 * @since JDK6.0, 070 */ 071 public class TbodyMovableTag extends CommonTagSupport { 072 //* こ?プログラ??VERSION??を設定します? {@value} */ 073 private static final String VERSION = "5.6.3.3 (2013/04/19)" ; 074 075 private static final long serialVersionUID = 563320130419L ; 076 077 private TagBuffer tag = new TagBuffer( "span" ) ; 078 079 /** 080 * Taglibの終?グが見つかったときに処??doEndTag() ?オーバ?ライドします? 081 * 082 * @return 後続???? 083 */ 084 @Override 085 public int doEndTag() { 086 debugPrint(); // 4.0.0 (2005/02/28) 087 088 tag.add( "class","tbodyMovable" ); 089 jspPrint( tag.makeTag() ); 090 091 return(EVAL_PAGE); // ペ?ジの残りを評価する? 092 } 093 094 /** 095 * タグリブオブジェクトをリリースします? 096 * キャ?ュされて再利用される?で、フィールド?初期設定を行います? 097 * 098 */ 099 @Override 100 protected void release2() { 101 super.release2(); 102 tag = new TagBuffer( "span" ); 103 } 104 105 /** 106 * 【TAG】移動時に値を?れ替えするカラ?を指定しま?カンマ区?で??可能,先?名称で判断)(初期値:SEQ)? 107 * 108 * @og.tag 109 * 該当タグのseqclm属?値が存在する場合?シーケンスカラ?とします? 110 * 上下移動で、同期して動きますが、このカラ??値も?れ替わります?判りにくいですが? 111 * つまり位置は入れ替わらな??事です? 112 * 例えば、レコードに連番を振っておき、このカラ?け移動しな??で、当?の連番のままとなり? 113 * そ?値を?に、計算しなおすことで、納期調整を行ったりします? 114 * シーケンスは?カラ??先?名称で判断するので注意して下さ?? 115 * ?:SEQの?でSEQUENCEカラ?判定されてしま?? 116 * seqclm属?はカンマ区?で??可能です? 117 * 初期値 は?SEQ" です? 118 * 119 * @param seqclm 移動時に値を?れ替えた?ラ?(カンマ区?で??可能) 120 */ 121 public void setSeqclm( final String seqclm ) { 122 tag.add( "seqclm",StringUtil.nval( getRequestParameter( seqclm ),null ) ); 123 } 124 125 /** 126 * 【TAG】?替制?移動できな?する tbodyのクラス名を?しま?カンマ区?で??可能)? 127 * 128 * @og.tag 129 * tbody?入替制限する?合に、tbodyにここで?し?class 属?を付与しておくことで? 130 * 入れ替え対象から除外されます??簡単に?と、これを飛?越えて移動できません?? 131 * 例えば、グループ化して?レコード??でしか入れ替えたくな??・・などの時に使用します? 132 * 133 * ここでは、カンマ区?で?のクラス名を?可能です? 134 * 135 * @param noMove 入替対象でな?tbodyのクラス?カンマ区?で??可能) 136 */ 137 public void setNoMove( final String noMove ) { 138 tag.add( "noMove",StringUtil.nval( getRequestParameter( noMove ),null ) ); 139 } 140 141 /** 142 * 【TAG】?ウスでドラ?できな?tbodyのクラス名を?しま?カンマ区?で??可能)? 143 * 144 * @og.tag 145 * tbody?ドラ?したくな??合に、tbodyにここで?し?class 属?を付与しておくことで? 146 * ドラ?対象から除外されます??簡単に?と、掴めません?? 147 * これは、対象の tbody がつかめな?けで、その前後? tbody と入れ替え?されます? 148 * 位置はどこに行くか判りませんが?ここで?し?tbody の?は保証されます? 149 * 150 * 例えば、納期確定して?レコード?入れ替えたくな??・・などの時に使用します? 151 * 152 * ここでは、カンマ区?で?のクラス名を?可能です? 153 * 154 * @param noDrag マウスでドラ?できな?tbodyのクラス?カンマ区?で??可能) 155 */ 156 public void setNoDrag( final String noDrag ) { 157 tag.add( "noDrag",StringUtil.nval( getRequestParameter( noDrag ),null ) ); 158 } 159 160 /** 161 * 【TAG】上移?-1)、下移?+1)で、?をセ?するカラ?(?つのみ、seqclmで?されて??あ?? 162 * 163 * @og.tag 164 * adjustSeq属?で?したカラ??eqclmで?されて??あり)?? 165 * 上に動かした時?上?値から-1された?を?下に動かした時?下?値に+1した値? 166 * セ?するような動作になります?これは?つのみ?可能です? 167 * 168 * 移動時に値を?れ替えするカラ?の特殊版と?ます? 169 * ここでは、カラ?は?つのみ?可能で、かつ、seqclmで?されて??があります? 170 * 171 * @param adjustSeq 上移?-1)、下移?+1)で、?をセ?するカラ? 172 */ 173 public void setAdjustSeq( final String adjustSeq ) { 174 tag.add( "adjustSeq",StringUtil.nval( getRequestParameter( adjustSeq ),null ) ); 175 } 176 177 /** 178 * 【TAG】他?TABLEを同期して移動させる場合に、クラス/IDを指定します? 179 * 180 * @og.tag 181 * 左右??ント系の??ブル部とガント部に?れて?ような??ブルで、上下移動を 182 * 行う場合に、ドラ?して?レコードに同期させて移動させることが可能です? 183 * ここで?するクラスは、tableか?table直上?要??クラスのみ?可能です? 184 * また?tbodyMovableが?ある場合?先?の属?値がセ?されます? 185 * 186 * @param sync 他?TABLEを同期して移動させる場合に?するクラス/ID 187 */ 188 public void setSync( final String sync ) { 189 tag.add( "sync",StringUtil.nval( getRequestParameter( sync ),null ) ); 190 } 191 192 /** 193 * タグの名称を?返します? 194 * 自??身のクラス名より?自動的に取り出せな?め?こ?メソ?をオーバ?ライドします? 195 * 196 * @return タグの名称 197 */ 198 @Override 199 protected String getTagName() { 200 return "tbodyMovable" ; 201 } 202 203 /** 204 * こ?オブジェクト???表現を返します? 205 * 基本???目?使用します? 206 * 207 * @return こ?クラスの??表現 208 */ 209 @Override 210 public String toString() { 211 return org.opengion.fukurou.util.ToString.title( this.getClass().getName() ) 212 .println( "VERSION" ,VERSION ) 213 .println( "tag" ,tag.makeTag() ) 214 .println( "Other..." ,getAttributes().getAttribute() ) 215 .fixForm().toString() ; 216 } 217 }