package me.escapeNT.pail.GUIComponents;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.ImageIcon;
import javax.swing.JCheckBoxMenuItem;
import javax.swing.JFileChooser;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.KeyStroke;
import javax.swing.text.Document;
import me.escapeNT.pail.Util.Localizable;
import me.escapeNT.pail.Util.Util;
import org.bukkit.Bukkit;
import org.bukkit.World;
/**
* Class representing the File dropdown menu.
* @author escapeNT
*/
public class FileMenu extends JMenu implements Localizable {
private JMenuItem saveSelection;
private JCheckBoxMenuItem say;
public FileMenu() {
super(Util.translate("File"));
setMnemonic('F');
JMenuItem about = new JMenuItem(Util.translate("About"));
about.setIcon(new ImageIcon(getClass().getResource("images/about.png")));
about.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
new AboutView().setVisible(true);
}
});
add(about);
JMenuItem saveConsole = new JMenuItem(Util.translate("Save console text..."));
saveConsole.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, InputEvent.CTRL_MASK + InputEvent.SHIFT_DOWN_MASK));
saveConsole.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
JFileChooser fc = new JFileChooser();
fc.setSelectedFile(new File("console.log"));
int res = fc.showSaveDialog(null);
if (res == JFileChooser.APPROVE_OPTION) {
File saveTo = fc.getSelectedFile();
Document doc = Util.getServerControls().getServerConsolePanel().getConsoleOutput().getDocument();
try {
String text = doc.getText(0, doc.getLength());
Util.saveTextFile(text, saveTo);
} catch (Exception ex) {
Logger.getLogger(FileMenu.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
});
add(saveConsole);
saveSelection = new JMenuItem(Util.translate("Save selected text..."));
saveSelection.setEnabled(false);
saveSelection.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
JFileChooser fc = new JFileChooser();
fc.setSelectedFile(new File("console.log"));
String text = Util.getServerControls().getServerConsolePanel().getConsoleOutput().getSelectedText();
int res = fc.showSaveDialog(null);
if (res == JFileChooser.APPROVE_OPTION && text != null) {
File saveTo = fc.getSelectedFile();
try {
Util.saveTextFile(text, saveTo);
} catch (Exception ex) {
Logger.getLogger(FileMenu.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
});
add(saveSelection);
JMenuItem backup = new JMenuItem(Util.translate("Backup world..."));
backup.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
List<String> worlds = new ArrayList<String>();
for (World w : Bukkit.getServer().getWorlds()) {
worlds.add(w.getName());
}
final String worldName = (String) JOptionPane.showInputDialog(Util.getPlugin().getMainWindow(),
Util.translate("What world do you want to back up?"),
Util.translate("Choose world"), JOptionPane.QUESTION_MESSAGE, null,
worlds.toArray(), worlds.get(0));
if (worldName == null) {
return;
}
final File worldFolder = new File(worldName);
final File backupFolder = new File(Util.getPlugin().getDataFolder(), "backups");
final File backup = new File(backupFolder, worldName
+ new SimpleDateFormat("'@'MM-dd-yy_hh.mm.ss").format(new Date(System.currentTimeMillis())) + ".zip");
if (!backupFolder.exists()) {
backupFolder.mkdir();
}
Bukkit.getServer().getScheduler().scheduleAsyncDelayedTask(Util.getPlugin(), new Runnable() {
public void run() {
Util.log("Starting backup for " + worldName);
long start = System.currentTimeMillis();
Util.zipDir(worldFolder, backup);
int seconds = (int) (System.currentTimeMillis() - start) / 1000;
Util.log("Backup completed in " + seconds + (seconds == 1 ? " second" : " seconds") + " for " + worldName);
}
});
}
});
add(backup);
say = new JCheckBoxMenuItem(Util.translate("Say input"));
say.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_T, InputEvent.CTRL_MASK));
add(say);
Util.setFileMenu(this);
}
/**
* @return the saveSelection
*/
public JMenuItem getSaveSelection() {
return saveSelection;
}
public void translateComponent() {
}
/**
* @return the say
*/
public JCheckBoxMenuItem getSay() {
return say;
}
}