0

This code will let you move both rows and col

asked 2006-07-13 04:11:21 +0800

admin gravatar image admin
18691 1 10 130
ZK Team


Orignial message at:
https://sourceforge.net/forum/message.php?msg_id=3819888

By: nobody

<grid>
<columns>
<column label="Type" draggable="true" droppable="true" onDrop="move(event.dragged)"/> <column label="Content" draggable="true" droppable="true"
onDrop="move(event.dragged)"/>
<column label="Action" draggable="true" droppable="true"
onDrop="move(event.dragged)"/>
</columns>
<rows>
<row draggable="true" droppable="true" onDrop="move(event.dragged)"> <label value="A" /> <label value="98" /> <button label="X"/> </row> <row draggable="true" droppable="true" onDrop="move(event.dragged)"> <label value="B" /> <label value="54" /> <button label="Y"/> </row> <row draggable="true" droppable="true" onDrop="move(event.dragged)"> <label value="C" /> <label value="73" /> <button label="Z"/> </row> </rows> </grid> <zscript> void move(Component dragged) {
if(dragged.getClass().getName().endsWith("Column") &&
self.getClass().getName().endsWith("Column")){
int maxCols=dragged.getParent().getChildren().size();
int maxRows=dragged.getGrid().getRows().getChildren().size();
int i=-1;//Is there any easy way to find an object's index in an List of its siblings?
for(Column c:dragged.getParent().getChildren()){
i++;
if(dragged==c) break;
}
int j=-1;//Is there any easy way to find an object's index in an List of its siblings?
for(Column c:self.getParent().getChildren()){
j++;
if(self==c) break;
}
for(int k=0; k< maxRows; k++)
self.getGrid().getCell(k,j).parent.insertBefore(self.getGrid().getCe
ll(k,i), self.getGrid().getCell(k,j));
}

if(self.getClass()==dragged.getClass())
self.parent.insertBefore(dragged, self);

else alert("Source Object dropped to mismatching target!"); } </zscript>

Thanks

Bakoma

delete flag offensive retag edit

2 Replies

Sort by ยป oldest newest

answered 2006-07-13 05:52:44 +0800

admin gravatar image admin
18691 1 10 130
ZK Team


Orignial message at:
https://sourceforge.net/forum/message.php?msg_id=3819941

By: henrichen

Hi! Bakoma,

Thanks for the contribution. Maybe we should put this to ZK's how-to wiki. Can you do it?

I revised your code a little.
1. ZK support matching of draggable and droppable (just put them with same string) into one drag-n-drop group. i.e. only matching draggable and droppable would generate the onDrop event. (true is an "always match" keyword) Therefore I change the draggable and droppable from "true" to "col" and "row" to split column and row to two dragging group.

2. There is an Java API indexOf in List. That I changed it.

3. Since column and row have been split to two dragging group, no need to do the class name checking anymore, I remove it.

Here is the revised code:

<zk>
<grid>
<columns>
<column label="Type" draggable="col" droppable="col"
onDrop="move(event.dragged)"/>
<column label="Content" draggable="col" droppable="col"
onDrop="move(event.dragged)"/>
<column label="Action" draggable="col" droppable="col"
onDrop="move(event.dragged)"/>
</columns>
<rows>
<row draggable="row" droppable="row" onDrop="move(event.dragged)"> <label value="A" /> <label value="98" /> <button label="X"/> </row> <row draggable="row" droppable="row" onDrop="move(event.dragged)"> <label value="B" /> <label value="54" /> <button label="Y"/> </row> <row draggable="row" droppable="row" onDrop="move(event.dragged)"> <label value="C" /> <label value="73" /> <button label="Z"/> </row> </rows> </grid> <zscript><![CDATA[ void move(Component dragged) {
if(dragged.getClass().getName().endsWith("Column")) {
int maxCols=dragged.getParent().getChildren().size();
int maxRows=dragged.getGrid().getRows().getChildren().size();
int i= dragged.getParent().getChildren().indexOf(dragged);
int j= self.getParent().getChildren().indexOf(self);

//move celles for each row
for(int k=0; k < maxRows; k++)
self.getGrid().getCell(k,j).parent.insertBefore(self.getGrid().getCe
ll(k,i), self.getGrid().getCell(k,j));
}

self.parent.insertBefore(dragged, self); } ]]></zscript> </zk>


link publish delete flag offensive edit

answered 2010-10-23 07:43:56 +0800

joshiv gravatar image joshiv
69

Hi,
I know that above post is very old and the code specified to swap columns works perfectly. Can all this swap operation be done on client side itself for performance improvement. I have had a quick look at the client side programming tutorial but I was wondering of there is a short way of achieving it ? sample code like above would be of immense help.

link publish delete flag offensive edit
Your reply
Please start posting your answer anonymously - your answer will be saved within the current session and published after you log in or create a new account. Please try to give a substantial answer, for discussions, please use comments and please do remember to vote (after you log in)!

[hide preview]

Question tools

Follow

RSS

Stats

Asked: 2006-07-13 04:11:21 +0800

Seen: 809 times

Last updated: Oct 23 '10

Support Options
  • Email Support
  • Training
  • Consulting
  • Outsourcing
Learn More