1 24 package org.riotfamily.riot.list.command.core; 25 26 import org.riotfamily.riot.dao.SwappableItemDao; 27 import org.riotfamily.riot.editor.EditorDefinitionUtils; 28 import org.riotfamily.riot.editor.ListDefinition; 29 import org.riotfamily.riot.list.command.CommandContext; 30 import org.riotfamily.riot.list.command.CommandResult; 31 import org.riotfamily.riot.list.command.result.ReloadResult; 32 33 36 public class SwapCommand extends AbstractCommand { 37 38 public static final String ACTION_MOVE_UP = "moveUp"; 39 public static final String ACTION_MOVE_DOWN = "moveDown"; 40 41 private int swapWith; 42 43 public void setSwapWith(int swapWith) { 44 this.swapWith = swapWith; 45 } 46 47 protected String getAction(CommandContext context) { 48 return swapWith > 0 ? ACTION_MOVE_DOWN : ACTION_MOVE_UP; 49 } 50 51 protected boolean isEnabled(CommandContext context, String action) { 52 if (context.getDao() instanceof SwappableItemDao) { 53 int index = context.getParams().getOffset() + context.getRowIndex(); 54 return index + swapWith >= 0 && 55 index + swapWith < context.getItemsTotal(); 56 } 57 return false; 58 } 59 60 public CommandResult execute(CommandContext context) { 61 SwappableItemDao dao = (SwappableItemDao) context.getDao(); 62 ListDefinition listDef = context.getListDefinition(); 63 String parentId = context.getParentId(); 64 Object parent = EditorDefinitionUtils.loadParent(listDef, parentId); 65 66 dao.swapEntity(context.getBean(), parent, context.getParams(), 67 context.getRowIndex() + swapWith); 68 69 return new ReloadResult(); 70 } 71 72 } 73 | Popular Tags |