package forge; import forge.properties.ForgeProps; import forge.properties.NewConstants; import javax.swing.*; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.util.List; /** * <p>CopyFiles class.</p> * * @author Forge * @version $Id: $ */ public class CopyFiles extends SwingWorker<Void, Integer> implements NewConstants { private List<File> FileList; JLabel jLb; JProgressBar jB; JCheckBox jCheck; JButton jSource; int count; /** * <p>Constructor for CopyFiles.</p> * * @param FileList a {@link java.util.List} object. * @param jLabelTotalFiles a {@link javax.swing.JLabel} object. * @param Jbar a {@link javax.swing.JProgressBar} object. * @param jCheckBox a {@link javax.swing.JCheckBox} object. * @param jButtonSource a {@link javax.swing.JButton} object. */ public CopyFiles(List<File> FileList, JLabel jLabelTotalFiles, JProgressBar Jbar, JCheckBox jCheckBox, JButton jButtonSource) { this.FileList = FileList; jLb = jLabelTotalFiles; jB = Jbar; jCheck = jCheckBox; jSource = jButtonSource; } /** {@inheritDoc} */ @Override protected Void doInBackground() { for (int i = 0; i < this.FileList.size(); i++) { publish(); String cName, name, source; name = this.FileList.get(i).getName(); source = this.FileList.get(i).getAbsolutePath(); cName = name.substring(0, name.length() - 8); cName = GuiDisplayUtil.cleanString(cName) + ".jpg"; File sourceFile = new File(source); File base = ForgeProps.getFile(IMAGE_BASE); File reciever = new File(base, cName); reciever.delete(); try { reciever.createNewFile(); FileOutputStream fos = new FileOutputStream(reciever); FileInputStream fis = new FileInputStream(sourceFile); byte[] buff = new byte[32 * 1024]; int length; while (fis.available() > 0) { length = fis.read(buff); if (length > 0) fos.write(buff, 0, length); } fos.flush(); fis.close(); fos.close(); count = i * 100 / this.FileList.size() + 1; setProgress(count); } catch (IOException e1) { e1.printStackTrace(); } } return null; } /** {@inheritDoc} */ @Override protected void done() { jLb.setText("All files were copied successfully."); jB.setIndeterminate(false); jCheck.setEnabled(true); jSource.setEnabled(true); } }