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 }