package de.juwimm.cms.gui.controls;
import static de.juwimm.cms.client.beans.Application.getBean;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.Transferable;
import java.awt.datatransfer.UnsupportedFlavorException;
import java.io.File;
import java.io.IOException;
import javax.swing.TransferHandler;
import de.juwimm.cms.client.beans.Beans;
import de.juwimm.cms.content.ContentManager;
import de.juwimm.cms.content.panel.PanDocuments;
import de.juwimm.cms.content.panel.PanPicture;
import de.juwimm.cms.content.panel.util.PictureUploadUtil;
/**
* This is used to handle the drag and drop of pictures and documents
* @author dan.iftimi
*
*/
public class FileTransferHandler extends TransferHandler {
Object panMedia;
public FileTransferHandler(Object panMedia) {
this.panMedia = panMedia;
}
public boolean canImport(TransferHandler.TransferSupport support) {
if (!support.isDataFlavorSupported(DataFlavor.javaFileListFlavor)) { return false; }
support.setDropAction(COPY);
return true;
}
public boolean importData(TransferHandler.TransferSupport support) {
if (!canImport(support)) { return false; }
Transferable t = support.getTransferable();
try {
java.util.List<File> listOfFile = (java.util.List<File>) t.getTransferData(DataFlavor.javaFileListFlavor);
File[] filesToUpload = (File[]) listOfFile.toArray();
if (panMedia instanceof PanPicture) {
final PanPicture panel = (PanPicture) panMedia;
PictureUploadUtil pictureUploadUtil=new PictureUploadUtil(panel,"irelevant",((ContentManager) getBean(Beans.CONTENT_MANAGER)).getRootUnitId(),null) {
@Override
public void pictureSelectedAction(byte[] thumbnail, byte[] picture, String mimeType, String pictureName) throws Exception {
int retInt = this.comm.addPicture2Unit(getUnitId(), thumbnail, picture, mimeType, "", pictureName, "");
panel.setPictureId(retInt);
}
@Override
public void pictureExistsAction(int i) {
panel.setPictureId(i);
}
@Override
public int findExistingPicture(String fileName) {
return comm.getPictureIdForUnitAndName(getUnitId(), fileName);
}
};
pictureUploadUtil.uploadFiles(filesToUpload, listOfFile.get(0).getParentFile());
} else if (panMedia instanceof PanDocuments) {
PanDocuments panel = (PanDocuments) panMedia;
panel.uploadFiles(filesToUpload, ((ContentManager) getBean(Beans.CONTENT_MANAGER)).getRootUnitId(),null, panel.getDocumentId());
panel.refreshList();
}
} catch (UnsupportedFlavorException e) {
return false;
} catch (IOException e) {
return false;
}
return true;
}
}