package view;
import java.awt.Image;
import java.awt.event.ActionListener;
import java.io.File;
import java.util.Observable;
import java.util.Observer;
import javax.swing.ImageIcon;
import javax.swing.JFileChooser;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
import utils.CmdConstants;
import utils.ValueContainer;
public class Gui extends javax.swing.JFrame implements Observer{
// Components for the GUI
private javax.swing.ButtonGroup buttonGroup;
private javax.swing.JPanel consolenPanel;
private javax.swing.JPanel controlPanel;
private javax.swing.JButton convert;
private javax.swing.JProgressBar jProgressBar1;
private javax.swing.JScrollPane jScrollPane;
private javax.swing.JPanel mainPanel;
private javax.swing.JButton open;
private javax.swing.JTextField openfield;
private javax.swing.JTextArea progressArea;
private javax.swing.JCheckBox quesBox;
private javax.swing.JButton save;
private javax.swing.JTextField saveField;
private javax.swing.JCheckBox sesBox;
private Image icon = (new ImageIcon(Gui.class.getResource("/img/reset.gif"))).getImage();
private JFileChooser fileChooser;
private ValueContainer values;
// Components for the Commands
private ActionListener actionListener;
public Gui(ActionListener al) {
this.actionListener = al;
this.setIconImage(icon);
try {
// Set System L&F
UIManager.setLookAndFeel(
UIManager.getSystemLookAndFeelClassName());
}
catch (UnsupportedLookAndFeelException e) {
// handle exception
}
catch (ClassNotFoundException e) {
// handle exception
}
catch (InstantiationException e) {
// handle exception
}
catch (IllegalAccessException e) {
// handle exception
}
initComponents();
this.setVisible(true);
}
private void initComponents() {
buttonGroup = new javax.swing.ButtonGroup();
mainPanel = new javax.swing.JPanel();
consolenPanel = new javax.swing.JPanel();
jScrollPane = new javax.swing.JScrollPane();
progressArea = new javax.swing.JTextArea("Waiting for work...\n");
progressArea.setColumns(20);
progressArea.setEditable(false);
progressArea.setRows(5);
progressArea.setLineWrap(true);
jScrollPane.setViewportView(progressArea);
jProgressBar1 = new javax.swing.JProgressBar(javax.swing.JProgressBar.HORIZONTAL);
controlPanel = new javax.swing.JPanel();
open = new javax.swing.JButton();
openfield = new javax.swing.JTextField();
save = new javax.swing.JButton();
saveField = new javax.swing.JTextField();
convert = new javax.swing.JButton();
quesBox = new javax.swing.JCheckBox();
sesBox = new javax.swing.JCheckBox();
fileChooser = new JFileChooser();
values = new ValueContainer();
open.setActionCommand(CmdConstants.CMD_OPEN);
open.addActionListener(actionListener);
save.setActionCommand(CmdConstants.CMD_SAVE);
save.addActionListener(actionListener);
convert.setActionCommand(CmdConstants.CMD_CONVERT);
convert.addActionListener(actionListener);
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setTitle("Bingo - Data Analyzer");
consolenPanel.setBorder(javax.swing.BorderFactory.createTitledBorder("Progressinformation"));
// progressArea.setColumns(20);
// progressArea.setEditable(false);
// progressArea.setRows(5);
// jScrollPane.setViewportView(progressArea);
org.jdesktop.layout.GroupLayout consolenPanelLayout = new org.jdesktop.layout.GroupLayout(consolenPanel);
consolenPanel.setLayout(consolenPanelLayout);
consolenPanelLayout.setHorizontalGroup(
consolenPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(consolenPanelLayout.createSequentialGroup()
.addContainerGap()
.add(consolenPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(jScrollPane, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 332, Short.MAX_VALUE)
.add(jProgressBar1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 332, Short.MAX_VALUE))
.addContainerGap())
);
consolenPanelLayout.setVerticalGroup(
consolenPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(consolenPanelLayout.createSequentialGroup()
.add(jScrollPane, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 159, Short.MAX_VALUE)
.add(20, 20, 20)
.add(jProgressBar1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
.addContainerGap())
);
controlPanel.setBorder(javax.swing.BorderFactory.createTitledBorder("Controls"));
open.setText("Open Folder");
openfield.setBackground(new java.awt.Color(255, 255, 255));
openfield.setEditable(false);
save.setText("Save Output");
saveField.setBackground(new java.awt.Color(255, 255, 255));
saveField.setEditable(false);
convert.setText("Convert");
buttonGroup.add(quesBox);
quesBox.setText("Bingo Question Data");
quesBox.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
quesBox.setMargin(new java.awt.Insets(0, 0, 0, 0));
buttonGroup.add(sesBox);
sesBox.setSelected(true);
sesBox.setText("Bingo Session Data");
sesBox.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
sesBox.setMargin(new java.awt.Insets(0, 0, 0, 0));
org.jdesktop.layout.GroupLayout controlPanelLayout = new org.jdesktop.layout.GroupLayout(controlPanel);
controlPanel.setLayout(controlPanelLayout);
controlPanelLayout.setHorizontalGroup(
controlPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(controlPanelLayout.createSequentialGroup()
.addContainerGap()
.add(controlPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(convert, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 96, Short.MAX_VALUE)
.add(open, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 96, Short.MAX_VALUE)
.add(controlPanelLayout.createSequentialGroup()
.add(save, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 96, Short.MAX_VALUE)
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)))
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
.add(controlPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(controlPanelLayout.createSequentialGroup()
.add(controlPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(saveField, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 232, Short.MAX_VALUE)
.add(openfield, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 232, Short.MAX_VALUE))
.add(8, 8, 8))
.add(controlPanelLayout.createSequentialGroup()
.add(sesBox)
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
.add(quesBox)
.addContainerGap())))
);
controlPanelLayout.setVerticalGroup(
controlPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(controlPanelLayout.createSequentialGroup()
.add(controlPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
.add(open)
.add(openfield, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
.add(controlPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
.add(saveField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
.add(save))
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
.add(controlPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
.add(convert)
.add(sesBox)
.add(quesBox))
.addContainerGap(11, Short.MAX_VALUE))
);
org.jdesktop.layout.GroupLayout mainPanelLayout = new org.jdesktop.layout.GroupLayout(mainPanel);
mainPanel.setLayout(mainPanelLayout);
mainPanelLayout.setHorizontalGroup(
mainPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(org.jdesktop.layout.GroupLayout.TRAILING, mainPanelLayout.createSequentialGroup()
.addContainerGap()
.add(mainPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING)
.add(org.jdesktop.layout.GroupLayout.LEADING, controlPanel, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.add(org.jdesktop.layout.GroupLayout.LEADING, consolenPanel, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addContainerGap())
);
mainPanelLayout.setVerticalGroup(
mainPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(mainPanelLayout.createSequentialGroup()
.addContainerGap()
.add(consolenPanel, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
.add(controlPanel, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
);
org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(mainPanel, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(layout.createSequentialGroup()
.add(mainPanel, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addContainerGap())
);
pack();
}
public void openFolder()
{
fileChooser.addActionListener(actionListener);
fileChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
fileChooser.showOpenDialog(this);
}
public File getFile()
{
openfield.setText(fileChooser.getSelectedFile().getName());
openfield.setText(fileChooser.getSelectedFile().getAbsolutePath());
return fileChooser.getSelectedFile();
}
public void startProgress()
{
jProgressBar1.setIndeterminate(true);
}
public void stopProgress()
{
jProgressBar1.setIndeterminate(false);
}
public void setStartInformation()
{
progressArea.append("Reading Data...\n");
}
int i = 0;
public void addProgressInformation(String data)
{
progressArea.append(data + "\n");
jScrollPane.getVerticalScrollBar().setValue(i+1);
System.err.println(jScrollPane.getVerticalScrollBar().getValue());
}
public void update(Observable arg0, Object arg1)
{
values = (ValueContainer)arg1;
addProgressInformation(values.files);
System.out.println("Gui.update()");
}
}