package org.wildstang.wildrank.desktop.modes;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JProgressBar;
import org.wildstang.wildrank.desktop.utils.FileUtilities;
import org.wildstang.wildrank.desktop.utils.Logger;
public class SyncWithFlashDrive extends Mode implements ActionListener, Runnable {
JProgressBar progressBar;
JButton sync;
Thread thread;
@Override
protected void initializePanel() {
progressBar = new JProgressBar();
sync = new JButton("Sync with flash drive");
sync.addActionListener(this);
c.gridx = 0;
c.gridy = 0;
c.gridwidth = 3;
panel.add(sync, c);
c.gridx = 0;
c.gridy = 1;
c.gridwidth = 3;
panel.add(progressBar, c);
update.setMode("Sync");
}
@Override
public void actionPerformed(ActionEvent event) {
if (event.getSource() == sync) {
attemptSyncronization();
}
}
@Override
public void run() {
update.updateData("Syncing", 0, 0);
progressBar.setIndeterminate(true);
try {
FileUtilities.syncWithFlashDrive();
} catch (IOException e) {
e.printStackTrace();
}
update.updateData("Done syncing with flashdrive", 0, 0);
progressBar.setIndeterminate(false);
progressBar.setMaximum(1);
progressBar.setValue(1);
setMode(new MainMenu());
}
public void attemptSyncronization() {
if (FileUtilities.isUSBConnected()) {
Logger.getInstance().log("USB connected!");
thread = new Thread(this);
thread.start();
sync.setEnabled(false);
} else {
Logger.getInstance().log("USB not connected!");
JFrame frame = new JFrame();
String[] options = { "Cancel", "Try again" };
int choice = JOptionPane.showOptionDialog(frame, "Please connect a flash drive before trying to sync", "Connect Flash Drive", JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE, null,
options, options[0]);
if (choice == 0) {
setMode(new MainMenu());
} else {
attemptSyncronization();
}
}
}
}