package org.rr.jeborker.gui.action;
import java.awt.event.ActionEvent;
import java.io.IOException;
import java.util.logging.Level;
import javax.swing.AbstractAction;
import org.rr.commons.log.LoggerFactory;
import org.rr.commons.mufs.IResourceHandler;
import org.rr.commons.mufs.ResourceHandlerFactory;
import org.rr.commons.utils.StringUtil;
import org.rr.jeborker.gui.MainController;
public class CopyToTargetAction extends AbstractAction {
// source file to copy
String source;
CopyToTargetAction(String text) {
this.source = text;
}
@Override
public void actionPerformed(ActionEvent e) {
IResourceHandler sourceResource = ResourceHandlerFactory.getResourceHandler(source);
IResourceHandler target = (IResourceHandler) getValue("TARGET");
try {
String message = Bundle.getFormattedString("CopyToTargetAction.copy", sourceResource.getName(), StringUtil.toString(target));
MainController.getController().getProgressMonitor().monitorProgressStart(message);
IResourceHandler targetFile = copy(sourceResource, (IResourceHandler) target);
ActionUtils.refreshFileSystemResourceParent(targetFile.getParentResource());
} catch (Exception ex) {
LoggerFactory.getLogger(this).log(Level.WARNING, "Copy " + this.source + " to " + StringUtil.toString(target) + " failed", ex);
} finally {
MainController.getController().getProgressMonitor().monitorProgressStop();
}
}
private IResourceHandler copy(IResourceHandler source, IResourceHandler target) throws IOException {
if (target.isDirectoryResource()) {
target = ResourceHandlerFactory.getResourceHandler(target, source.getName());
}
source.copyTo(target, false);
return target;
}
}