import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;
class DataSetExplorer {
public static final String DATA_URL = System.getProperty("user.dir") + "\\data";
public static final String DATA_FILE = "MeineDatei.txt";
public static final String SEPARATOR = ",";
private JTextField field1, field2, field3;
private int cur_pos = 0;
private int setsize = 0;
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new DataSetExplorer();
}
});
}
public DataSetExplorer() {
JFrame frame = new JFrame("DataSetExplorer");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(600, 300);
JPanel mainPanel = new JPanel(new BorderLayout());
mainPanel.add(getFieldPanel(), BorderLayout.CENTER);
mainPanel.add(getButtonPanel(), BorderLayout.SOUTH);
setsize = getDataSetSize();
setFields(loadDataSet(cur_pos));
frame.add(mainPanel);
frame.setVisible(true);
}
private void setFields(String[] data) {
field1.setText(data[0]);
field2.setText(data[1]);
field3.setText(data[2]);
}
private void clearFields() {
setFields(new String[] {"", "", ""});
}
private String[] getFields() {
return new String[] {field1.getText(), field2.getText(), field3.getText()};
}
private JPanel getButtonPanel() {
JPanel panel = new JPanel(new GridLayout(2, 1));
JPanel navigationPanel = new JPanel(new FlowLayout());
JButton prevButton = new JButton("<");
prevButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
if(cur_pos > 0) {
setFields(loadDataSet(--cur_pos));
}
}
});
JButton newDataSet = new JButton("New");
newDataSet.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
clearFields();
cur_pos = setsize-1;
}
});
JButton nextButton = new JButton(">");
nextButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
if(cur_pos < setsize-1) {
setFields(loadDataSet(++cur_pos));
}
}
});
navigationPanel.add(prevButton);
navigationPanel.add(newDataSet);
navigationPanel.add(nextButton);
panel.add(navigationPanel);
JPanel filePanel = new JPanel(new FlowLayout());
JButton saveSetToFile = new JButton("Save");
saveSetToFile.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
saveDataSet(getFields());
}
});
JButton loadSetFromFile = new JButton("LoadData");
loadSetFromFile.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
cur_pos = 0;
setFields(loadDataSet(cur_pos));
}
});
filePanel.add(saveSetToFile);
filePanel.add(loadSetFromFile);
panel.add(filePanel);
return panel;
}
private JPanel getFieldPanel() {
JPanel panel = new JPanel(new FlowLayout());
field1 = new JTextField(10);
field2 = new JTextField(10);
field3 = new JTextField(10);
panel.add(field1);
panel.add(field2);
panel.add(field3);
return panel;
}
public void saveDataSet(String[] data) {
File file = new File(DATA_URL + "\\" + DATA_FILE);
try {
FileWriter writer = new FileWriter(file, true);
for (int i = 0; i < data.length; i++) {
writer.write(data[i]);
if (i < data.length - 1) {
writer.write(SEPARATOR);
}
}
writer.write(System.getProperty("line.separator"));
writer.flush();
writer.close();
} catch (IOException e1) {
e1.printStackTrace();
}
setsize ++;
}
public String[] loadDataSet(int pos) {
String[] result = new String[] {"", "", ""};
try {
File file = new File(DATA_URL + "\\" + DATA_FILE);
FileReader freader = new FileReader(file);
BufferedReader breader = new BufferedReader(freader);
String line;
for(int i = 0; i < pos; i++) breader.readLine();
line = breader.readLine();
if(line != null) result = line.split(SEPARATOR);
breader.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return result;
}
public int getDataSetSize() {
int result = 0;
try {
File file = new File(DATA_URL + "\\" + DATA_FILE);
FileReader freader = new FileReader(file);
BufferedReader breader = new BufferedReader(freader);
while(breader.readLine() != null) result ++;
breader.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return result;
}
}