/***************************************************
*
* cismet GmbH, Saarbruecken, Germany
*
* ... and it just works.
*
****************************************************/
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package de.cismet.cismap.commons.gui.attributetable;
import java.awt.Cursor;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.Transferable;
import java.util.ArrayList;
import javax.activation.ActivationDataFlavor;
import javax.activation.DataHandler;
import javax.swing.JComponent;
import javax.swing.JTable;
import javax.swing.TransferHandler;
import de.cismet.cismap.commons.features.FeatureServiceFeature;
/**
* The TransferHandler that is used by the Attributetable. It does only support the drag operation (no drop support).
*
* @author therter
* @version $Revision$, $Date$
*/
public class AttributeTableTransferHandler extends TransferHandler {
//~ Static fields/initializers ---------------------------------------------
public static final DataFlavor rowFlavor = new ActivationDataFlavor(
FeatureServiceFeature[].class,
DataFlavor.javaJVMLocalObjectMimeType,
"AttributeTableFeature");
//~ Instance fields --------------------------------------------------------
private AttributeTable table;
//~ Constructors -----------------------------------------------------------
/**
* Creates a new AttributeTableTransferHandler object.
*
* @param table DOCUMENT ME!
*/
public AttributeTableTransferHandler(final AttributeTable table) {
this.table = table;
}
//~ Methods ----------------------------------------------------------------
@Override
protected Transferable createTransferable(final JComponent c) {
final JTable table = (JTable)c;
final ArrayList<FeatureServiceFeature> list = new ArrayList<FeatureServiceFeature>();
final SimpleAttributeTableModel model = (SimpleAttributeTableModel)table.getModel();
for (final int i : table.getSelectedRows()) {
list.add(model.getFeatureServiceFeature(table.convertRowIndexToModel(i)));
}
final FeatureServiceFeature[] transferedObjects = list.toArray(new FeatureServiceFeature[list.size()]);
return new DataHandler(transferedObjects, rowFlavor.getMimeType());
}
@Override
public boolean canImport(final TransferHandler.TransferSupport info) {
return false;
}
@Override
public int getSourceActions(final JComponent c) {
return TransferHandler.COPY;
}
@Override
public boolean importData(final TransferHandler.TransferSupport info) {
return false;
}
@Override
protected void exportDone(final JComponent c, final Transferable t, final int act) {
c.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
}
}