package com.james.uicomparerunner.ui;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Reader;
import java.io.Writer;
import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JTextArea;
import com.james.uicomparerunner.res.R;
import com.james.uicomparerunner.ui.dialog.DialogBuilder;
import com.james.uicomparerunner.ui.uiinterface.OnWindowCloseListener;
public class SharedPreferenceEditFrame extends JFrame {
private JTextArea textArea;
public SharedPreferenceEditFrame(JFrame parentFrame, final File xmlFile, final OnWindowCloseListener onWindowCloseListener) {
super();
try {
textArea = new JTextArea(loadSharedPreference(xmlFile));
textArea.setBorder(
BorderFactory.createCompoundBorder(
BorderFactory.createTitledBorder("Shared Preference"),
BorderFactory.createEmptyBorder(5, 5, 5, 5)));
this.setTitle(xmlFile.getAbsolutePath());
this.add(textArea);
this.setLocation(parentFrame.getX() + parentFrame.getWidth() / 10, parentFrame.getY() + parentFrame.getHeight() / 10);
this.setSize(parentFrame.getWidth() * 8 / 10, parentFrame.getHeight() * 8 / 10);
this.setVisible(true);
this.addWindowListener(new WindowListener() {
@Override
public void windowOpened(WindowEvent arg0) {
}
@Override
public void windowIconified(WindowEvent arg0) {
}
@Override
public void windowDeiconified(WindowEvent arg0) {
}
@Override
public void windowDeactivated(WindowEvent arg0) {
}
@Override
public void windowClosing(WindowEvent arg0) {
int confirm = DialogBuilder.showConfirmDialog(SharedPreferenceEditFrame.this, R.string.dialog_alert_save_before_leaving);
if (confirm != 0)
return;
try {
saveChange(xmlFile, textArea.getText());
} catch (IOException e) {
e.printStackTrace();
}
onWindowCloseListener.onWindowClosing();
}
@Override
public void windowClosed(WindowEvent arg0) {
}
@Override
public void windowActivated(WindowEvent arg0) {
}
});
} catch (IOException e) {
e.printStackTrace();
}
}
private String loadSharedPreference(File xmlFile) throws IOException {
Reader rd = new FileReader(xmlFile.getAbsolutePath());
BufferedReader reader = new BufferedReader(rd);
String line = null;
String allText = null;
while ((line = reader.readLine()) != null) {
if (allText == null) {
allText = line;
}
else {
allText = allText + "\n" + line;
}
}
reader.close();
return allText;
}
private void saveChange(File xmlFile, String allText) throws IOException {
Writer wr = new FileWriter(xmlFile.getAbsolutePath());
BufferedWriter writer = new BufferedWriter(wr);
String[] lines = allText.split("\n");
for (int i = 0; i < lines.length; i++) {
writer.write(lines[i]);
writer.newLine();
}
writer.close();
}
}