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 }