mirror of
https://git.huckle.dev/Huckles-Minecraft-Archive/jpexs-decompiler.git
synced 2026-05-26 04:06:12 +00:00
Added: #1625 Error log frame - Save all to file button
This commit is contained in:
@@ -30,10 +30,17 @@ import java.awt.datatransfer.Clipboard;
|
||||
import java.awt.datatransfer.StringSelection;
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
import java.io.File;
|
||||
import java.io.FileWriter;
|
||||
import java.io.IOException;
|
||||
import java.io.PrintWriter;
|
||||
import java.io.StringWriter;
|
||||
import java.io.Writer;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
import java.util.logging.Handler;
|
||||
import java.util.logging.Level;
|
||||
@@ -45,12 +52,15 @@ import javax.swing.BoxLayout;
|
||||
import javax.swing.ImageIcon;
|
||||
import javax.swing.JButton;
|
||||
import javax.swing.JComponent;
|
||||
import javax.swing.JFileChooser;
|
||||
import javax.swing.JFrame;
|
||||
import javax.swing.JLabel;
|
||||
import javax.swing.JOptionPane;
|
||||
import javax.swing.JPanel;
|
||||
import javax.swing.JScrollPane;
|
||||
import javax.swing.JTextArea;
|
||||
import javax.swing.JToggleButton;
|
||||
import javax.swing.filechooser.FileFilter;
|
||||
|
||||
/**
|
||||
* @author JPEXS
|
||||
@@ -75,6 +85,10 @@ public class ErrorLogFrame extends AppFrame {
|
||||
|
||||
private final AtomicInteger logItemCount = new AtomicInteger();
|
||||
|
||||
private List<String> logHistory = new ArrayList<>();
|
||||
|
||||
private JButton saveToFileButton;
|
||||
|
||||
public Handler getHandler() {
|
||||
return handler;
|
||||
}
|
||||
@@ -138,8 +152,61 @@ public class ErrorLogFrame extends AppFrame {
|
||||
clearLog();
|
||||
}
|
||||
});
|
||||
saveToFileButton = new JButton(translate("saveToFile"));
|
||||
saveToFileButton.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
JFileChooser fc = View.getFileChooserWithIcon("save");
|
||||
fc.setCurrentDirectory(new File(Configuration.lastSaveDir.get()));
|
||||
|
||||
FileFilter txtFilter = new FileFilter() {
|
||||
@Override
|
||||
public boolean accept(File f) {
|
||||
return (f.getName().toLowerCase(Locale.ENGLISH).endsWith(".txt"))
|
||||
|| (f.isDirectory());
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getDescription() {
|
||||
return translate("filter.txt");
|
||||
}
|
||||
};
|
||||
fc.addChoosableFileFilter(txtFilter);
|
||||
fc.setAcceptAllFileFilterUsed(true);
|
||||
if (fc.showSaveDialog(Main.getDefaultMessagesComponent()) != JFileChooser.APPROVE_OPTION) {
|
||||
return;
|
||||
}
|
||||
File file = Helper.fixDialogFile(fc.getSelectedFile());
|
||||
try (Writer w = new FileWriter(file); PrintWriter pw = new PrintWriter(w);) {
|
||||
List<String> logHistoryCopy = new ArrayList<>(logHistory);
|
||||
boolean first = true;
|
||||
for (String entry : logHistoryCopy) {
|
||||
if (!first) {
|
||||
pw.println("-------------------------");
|
||||
}
|
||||
pw.println(entry);
|
||||
first = false;
|
||||
}
|
||||
} catch (IOException ex) {
|
||||
ViewMessages.showMessageDialog(Main.getDefaultMessagesComponent(), translate("error.cannotSave").replace("%error%", ex.getLocalizedMessage()), AppStrings.translate("error"), JOptionPane.ERROR_MESSAGE);
|
||||
}
|
||||
}
|
||||
});
|
||||
buttonsPanel.add(clearButton);
|
||||
|
||||
/*
|
||||
JButton makeErrorButton = new JButton("Do error");
|
||||
makeErrorButton.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
Logger.getLogger(ErrorLogFrame.class.getName()).log(Level.SEVERE, "Test message", new Exception());
|
||||
}
|
||||
});
|
||||
buttonsPanel.add(makeErrorButton);
|
||||
*/
|
||||
saveToFileButton.setEnabled(false);
|
||||
buttonsPanel.add(saveToFileButton);
|
||||
|
||||
expandIcon = View.getIcon("expand16");
|
||||
collapseIcon = View.getIcon("collapse16");
|
||||
cnt.add(buttonsPanel, BorderLayout.SOUTH);
|
||||
@@ -167,6 +234,8 @@ public class ErrorLogFrame extends AppFrame {
|
||||
}
|
||||
|
||||
public void clearLog() {
|
||||
saveToFileButton.setEnabled(false);
|
||||
logHistory.clear();
|
||||
logViewInner.removeAll();
|
||||
logItemCount.set(0);
|
||||
Main.clearLogFile();
|
||||
@@ -239,6 +308,7 @@ public class ErrorLogFrame extends AppFrame {
|
||||
}
|
||||
SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
|
||||
final String dateStr = format.format(new Date());
|
||||
final String logEntry = dateStr + " " + level.toString() + " " + msg + "\r\n" + detail;
|
||||
|
||||
JToggleButton copyButton = new JToggleButton(View.getIcon("copy16"));
|
||||
copyButton.setFocusPainted(false);
|
||||
@@ -252,10 +322,11 @@ public class ErrorLogFrame extends AppFrame {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
|
||||
StringSelection stringSelection = new StringSelection(dateStr + " " + level.toString() + " " + msg + "\r\n" + detail);
|
||||
StringSelection stringSelection = new StringSelection(logEntry);
|
||||
clipboard.setContents(stringSelection, null);
|
||||
}
|
||||
});
|
||||
logHistory.add(logEntry);
|
||||
|
||||
final JToggleButton expandButton = new JToggleButton(collapseIcon);
|
||||
expandButton.setFocusPainted(false);
|
||||
@@ -316,6 +387,7 @@ public class ErrorLogFrame extends AppFrame {
|
||||
if (logViewInner != null) { //may be disposed or what? #1904
|
||||
logViewInner.add(pan);
|
||||
}
|
||||
saveToFileButton.setEnabled(true);
|
||||
revalidate();
|
||||
repaint();
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user