package org.korsakow.ide.ui.dnd;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JComponent;
import javax.swing.TransferHandler;
public abstract class AggregateTransferHandler extends TransferHandler
{
protected List<TransferHandler> handlers = new ArrayList<TransferHandler>();
/**
* Override this to choose the handler which will import the transfer.
* @return null if the transfer should not be handled at all.
*/
protected abstract TransferHandler pickTransferHandler(TransferSupport support);
public AggregateTransferHandler()
{
}
@Override
public int getSourceActions(JComponent comp)
{
return TransferHandler.COPY_OR_MOVE;
}
public void addHandler(TransferHandler handler)
{
handlers.add(handler);
}
@Override
public boolean canImport(TransferSupport support)
{
for (TransferHandler handler : handlers)
if (handler.canImport(support))
return true;
return false;
}
@Override
public boolean importData(TransferSupport support) {
TransferHandler handler = pickTransferHandler(support);
if (handler != null)
return handler.importData(support);
return false;
}
}