package husacct.define.presentation.draganddrop.customtransferhandlers;
import husacct.define.task.components.AbstractCombinedComponent;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.Transferable;
import java.awt.datatransfer.UnsupportedFlavorException;
import java.awt.dnd.DropTargetDragEvent;
import java.awt.dnd.DropTargetDropEvent;
import java.awt.dnd.DropTargetEvent;
import java.awt.dnd.DropTargetListener;
import java.io.IOException;
import javax.swing.AbstractButton;
import javax.swing.JComponent;
import javax.swing.JLabel;
import javax.swing.JTree;
import javax.swing.TransferHandler;
import javax.swing.tree.TreePath;
public class ModuleTrasferhandler extends TransferHandler implements Transferable,DropTargetListener{
public static DataFlavor[] moduleFlavours= {new DataFlavor(AbstractCombinedComponent.class, "mainComponent")};
private TreePath[] data;
JTree tree;
@Override
public boolean canImport(TransferSupport support) {
if (!support.isDrop()) {
return false;
}
return support.isDataFlavorSupported(moduleFlavours[0]);
}
@Override
public boolean importData(TransferSupport support) {
if (!canImport(support)) {
return false;
}
Transferable transferable = support.getTransferable();
AbstractCombinedComponent line;
try {
line = (AbstractCombinedComponent) transferable.getTransferData(moduleFlavours[0]);
} catch (Exception e) {
return false;
}
JTree.DropLocation dl = (JTree.DropLocation) support.getDropLocation();
TreePath path = dl.getPath();
return false;
}
@Override
public int getSourceActions(JComponent c) {
return TransferHandler.COPY;
}
@Override
public boolean canImport(JComponent comp, DataFlavor flavor[]) {
if (!(comp instanceof JLabel) && !(comp instanceof AbstractButton)) {
}
return false;
}
@Override
public Transferable createTransferable(JComponent comp) {
// Clear
data = null;
tree=null;
if (comp instanceof JTree) {
tree = (JTree) comp;
data=tree.getSelectionPaths();
return this;
}
return null;
}
@Override
public boolean importData(JComponent comp, Transferable t) {
if (comp instanceof JLabel) {
JLabel label = (JLabel)comp;
if (t.isDataFlavorSupported(moduleFlavours[0])) {
try {
try {
JTree tr = (JTree)t.getTransferData(moduleFlavours[0]);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return true;
} catch (UnsupportedFlavorException ignored) {
}
}
return true;
}
return false;
}
@Override
public Object getTransferData(DataFlavor arg0)
throws UnsupportedFlavorException, IOException {
// TODO Auto-generated method stub
return tree;
}
@Override
public DataFlavor[] getTransferDataFlavors() {
// TODO Auto-generated method stub
return moduleFlavours;
}
@Override
public boolean isDataFlavorSupported(DataFlavor arg) {
// TODO Auto-generated method stub
return moduleFlavours[0].equals(arg);
}
@Override
public void dragEnter(DropTargetDragEvent arg0) {
}
@Override
public void dragExit(DropTargetEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void dragOver(DropTargetDragEvent arg) {
arg.rejectDrag();
}
@Override
public void drop(DropTargetDropEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void dropActionChanged(DropTargetDragEvent arg0) {
// TODO Auto-generated method stub
}
}