package nl.tudelft.bw4t.scenariogui.epartner.gui;
import java.awt.BorderLayout;
import java.awt.Font;
import java.awt.GridLayout;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import nl.tudelft.bw4t.scenariogui.EPartnerConfig;
import nl.tudelft.bw4t.scenariogui.epartner.controller.EpartnerController;
/**
* This class creates the frame for the e-Partner GUI.
*/
public class EpartnerFrame extends JFrame implements EPartnerViewInterface {
private static final long serialVersionUID = 1L;
private JPanel contentPane = new JPanel();
private JPanel infoPane = new JPanel();
private JPanel buttonPane = new JPanel();
private JPanel optionPane = new JPanel();
private JPanel goalPane = new JPanel();
private JTextField epartnerNameField = new JTextField();
private JTextField epartnerAmountField = new JTextField();
private JTextField epartnerReferenceField = new JTextField();
private JTextField epartnerGoalFileField = new JTextField();
private JButton saveButton = new JButton("Save");
private JButton resetButton = new JButton("Reset");
private JButton cancelButton = new JButton("Cancel");
private JCheckBox forgetMeNotCheckbox = new JCheckBox("Forget-me-not");
private JButton fileButton = new JButton("Use existing GOAL file");
private JCheckBox gpsCheckBox = new JCheckBox("GPS");
private EPartnerConfig dataObject = new EPartnerConfig();
private EpartnerController controller;
/**
* Create the EpartnerFrame.
* @param controller The EpartnerController.
*/
public EpartnerFrame(EpartnerController controller) {
setTitle("E-Partner");
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
contentPane.setLayout(new BorderLayout(5, 5));
setContentPane(contentPane);
this.setController(controller);
createInfoPanel();
createOptionPanel();
createButtonPanel();
contentPane.add(infoPane, BorderLayout.NORTH);
contentPane.add(optionPane, BorderLayout.CENTER);
contentPane.add(buttonPane, BorderLayout.SOUTH);
getResetButton().addActionListener(new EpartnerResetButton(this));
getCancelButton().addActionListener(new EpartnerCancelButton(this));
getSaveButton().addActionListener(new EpartnerSaveButton(this));
getFileButton().addActionListener(new EGoalFileButton(this));
setResizable(false);
pack();
setLocationRelativeTo(null);
controller.addView(this);
setVisible(true);
}
private void createInfoPanel() {
infoPane.setLayout(new GridLayout(1, 0));
infoPane.add(epartnerNameField);
infoPane.add(new JLabel(" Amount of this type:"));
infoPane.add(epartnerAmountField);
}
private void createOptionPanel() {
optionPane.setLayout(new GridLayout(0, 1));
optionPane.add(new JLabel(""));
addGoalOptions();
optionPane.add(new JLabel(""));
JLabel propertiesLabel = new JLabel("Properties");
propertiesLabel.setFont(new Font("Tahoma", Font.PLAIN, 14));
optionPane.add(propertiesLabel);
optionPane.add(forgetMeNotCheckbox);
optionPane.add(gpsCheckBox);
optionPane.add(new JLabel(""));
}
private void addGoalOptions() {
JLabel goalLabel = new JLabel("GOAL options");
goalLabel.setFont(new Font("Tahoma", Font.PLAIN, 14));
optionPane.add(goalLabel);
optionPane.add(new JLabel("E-partner reference name:"));
optionPane.add(epartnerReferenceField);
optionPane.add(new JLabel("GOAL file name:"));
optionPane.add(epartnerGoalFileField);
optionPane.add(fileButton);
}
private void createButtonPanel() {
buttonPane.setLayout(new GridLayout(1, 0));
buttonPane.add(saveButton);
buttonPane.add(resetButton);
buttonPane.add(cancelButton);
}
public String getEpartnerName() {
return this.epartnerNameField.getText();
}
public int getEpartnerAmount() {
return Integer.parseInt(this.epartnerAmountField.getText());
}
public JButton getSaveButton() {
return saveButton;
}
public JButton getResetButton() {
return resetButton;
}
public JButton getCancelButton() {
return cancelButton;
}
public JCheckBox getForgetMeNotCheckbox() {
return forgetMeNotCheckbox;
}
public JCheckBox getGPSCheckbox() {
return gpsCheckBox;
}
/**
* Updates the EpartnerFrame.
*/
public void updateView() {
epartnerNameField.setText(getEpartnerController().getEpartnerName());
epartnerAmountField.setText("" + getEpartnerController().getEpartnerAmount());
forgetMeNotCheckbox.setSelected(controller.isForgetMeNot());
gpsCheckBox.setSelected(getEpartnerController().isGps());
epartnerReferenceField.setText(getEpartnerController().getReferenceName());
epartnerGoalFileField.setText(getEpartnerController().getFileName());
}
protected EpartnerController getEpartnerController() {
return controller;
}
public void setController(EpartnerController controller) {
this.controller = controller;
}
@Override
public void dispose() {
controller.removeView(this);
super.dispose();
}
@Override
public boolean getForgetMeNot() {
return forgetMeNotCheckbox.isSelected();
}
@Override
public boolean getGPS() {
return gpsCheckBox.isSelected();
}
@Override
public String getEpartnerReference() {
return epartnerReferenceField.getText();
}
@Override
public String getEpartnerGoalFile() {
return epartnerGoalFileField.getText();
}
public JTextField getEpartnerReferenceField() {
return epartnerReferenceField;
}
public JTextField getEpartnerGoalFileField() {
return epartnerGoalFileField;
}
public JButton getFileButton() {
return fileButton;
}
public JTextField getEpartnerNameField() {
return epartnerNameField;
}
public JTextField getEpartnerAmountField() {
return epartnerAmountField;
}
}