package org.pegadi.disposal;
import javax.swing.*;
import java.awt.datatransfer.StringSelection;
import java.awt.datatransfer.Transferable;
public class JTableDragHandler extends TransferHandler {
private JTable table;
private PageTableModel tableModel;
private int fromRow = -1;
public JTableDragHandler(JTable table) {
this.table = table;
tableModel = (PageTableModel)table.getModel();
}
/* This handler can only be dropped on from itself. Achieves this by checking
if this handler itself is currently moving something
*/
public boolean canImport(TransferSupport info) {
return fromRow >= 0;
}
public int getSourceActions(JComponent c) {
return TransferHandler.MOVE;
}
public boolean importData(TransferSupport info) {
JTable.DropLocation dl = (JTable.DropLocation)info.getDropLocation();
int droppedRowIndex = dl.getRow();
return tableModel.movePage(fromRow, droppedRowIndex);
}
protected void exportDone(JComponent c, Transferable t, int act) {
fromRow = -1;
}
protected Transferable createTransferable(JComponent c) {
fromRow = table.getSelectedRow();
return new StringSelection(tableModel.getPage(fromRow).toString());
}
}