You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
195 lines
6.7 KiB
195 lines
6.7 KiB
package cmpt213.assignment3.packagedeliveries.view;
|
|
|
|
import com.github.lgooddatepicker.components.DateTimePicker;
|
|
import com.github.lgooddatepicker.optionalusertools.DateTimeChangeListener;
|
|
import com.github.lgooddatepicker.zinternaltools.DateTimeChangeEvent;
|
|
|
|
import javax.swing.*;
|
|
import java.awt.*;
|
|
import java.awt.event.ActionEvent;
|
|
import java.awt.event.ActionListener;
|
|
import java.time.LocalDateTime;
|
|
|
|
public class Input extends JDialog implements ActionListener, DateTimeChangeListener {
|
|
private JLabel typeLabel;
|
|
private JPanel typePanel;
|
|
private JTextField typeTf;
|
|
private DateTimePicker dd, ed;
|
|
private LocalDateTime deliveryDate, expiryDate;
|
|
private JTextField nameField;
|
|
private JTextField noteField;
|
|
private JTextField priceField;
|
|
private JTextField weightField;
|
|
private JTextField dateField;
|
|
private int pType;
|
|
|
|
public Input(Frame main) {
|
|
super(main, "add a package", true);
|
|
JPanel p = new JPanel();
|
|
p.setLayout(new BoxLayout(p, BoxLayout.Y_AXIS));
|
|
String[] type = {"book", "perishable", "electronic"};
|
|
|
|
JComboBox<String> packageType = new JComboBox<>(type);
|
|
packageType.setPreferredSize(new Dimension(300, 30));
|
|
packageType.addActionListener(new ActionListener() {
|
|
@Override
|
|
public void actionPerformed(ActionEvent e) {
|
|
String p = (String) packageType.getSelectedItem();
|
|
switch (p) {
|
|
case "book":
|
|
typeTf.setVisible(true);
|
|
ed.setVisible(false);
|
|
typeLabel.setText("author name");
|
|
pType=0;
|
|
break;
|
|
case "perishable":
|
|
typeTf.setVisible(false);
|
|
ed.setVisible(true);
|
|
ed.addDateTimeChangeListener(new DateTimeChangeListener() {
|
|
@Override
|
|
public void dateOrTimeChanged(DateTimeChangeEvent dateTimeChangeEvent) {
|
|
expiryDate=ed.getDateTimePermissive();
|
|
}
|
|
});
|
|
typePanel.add(ed);
|
|
typeLabel.setText("expiry date");
|
|
pType=1;
|
|
break;
|
|
case "electronic":
|
|
typeTf.setVisible(true);
|
|
ed.setVisible(false);
|
|
typeLabel.setText("handling fee");
|
|
pType=2;
|
|
}
|
|
}
|
|
});
|
|
// Panel for package name
|
|
nameField = new JTextField();
|
|
JPanel name = new JPanel();
|
|
JLabel nameLabel = new JLabel();
|
|
name.setLayout(new BoxLayout(name, BoxLayout.X_AXIS));
|
|
nameLabel.setText("name:");
|
|
nameLabel.setPreferredSize(new Dimension(50, 25));
|
|
name.add(nameLabel);
|
|
name.add(nameField);
|
|
name.setPreferredSize(new Dimension(200, 50));
|
|
|
|
p.add(packageType);
|
|
p.add(name);
|
|
JPanel note = new JPanel();
|
|
JLabel noteLabel = new JLabel();
|
|
noteField = new JTextField();
|
|
note.setLayout(new BoxLayout(note, BoxLayout.X_AXIS));
|
|
noteLabel.setText("note:");
|
|
noteLabel.setPreferredSize(new Dimension(50, 25));
|
|
note.add(noteLabel);
|
|
note.add(noteField);
|
|
note.setPreferredSize(new Dimension(200, 50));
|
|
p.add(note);
|
|
|
|
JPanel price = new JPanel();
|
|
JLabel priceLabel = new JLabel();
|
|
JTextField priceField = new JTextField();
|
|
price.setLayout(new BoxLayout(price, BoxLayout.X_AXIS));
|
|
priceLabel.setText("price:");
|
|
priceLabel.setPreferredSize(new Dimension(50, 25));
|
|
price.add(priceLabel);
|
|
price.add(priceField);
|
|
price.setPreferredSize(new Dimension(200, 50));
|
|
p.add(price);
|
|
|
|
JPanel weight = new JPanel();
|
|
JLabel weightLabel = new JLabel();
|
|
weightField = new JTextField();
|
|
weight.setLayout(new BoxLayout(weight, BoxLayout.X_AXIS));
|
|
weightLabel.setText("weight:");
|
|
weightLabel.setPreferredSize(new Dimension(50, 25));
|
|
weight.add(weightLabel);
|
|
weight.add(weightField);
|
|
weight.setPreferredSize(new Dimension(200, 50));
|
|
p.add(weight);
|
|
|
|
JPanel date = new JPanel();
|
|
JLabel dateLabel = new JLabel();
|
|
dateField = new JTextField();
|
|
date.setLayout(new BoxLayout(date, BoxLayout.X_AXIS));
|
|
dateLabel.setText("date:");
|
|
dateLabel.setPreferredSize(new Dimension(50, 25));
|
|
dd=new DateTimePicker();
|
|
dd.addDateTimeChangeListener(this);
|
|
date.add(dateLabel);
|
|
date.add(dd);
|
|
date.setPreferredSize(new Dimension(200, 50));
|
|
p.add(date);
|
|
|
|
typePanel=new JPanel();
|
|
typePanel.setLayout(new BoxLayout(typePanel, BoxLayout.X_AXIS));
|
|
typeLabel=new JLabel();
|
|
typeLabel.setText("author:");
|
|
typeLabel.setPreferredSize(new Dimension(50, 25));
|
|
typeTf=new JTextField();
|
|
typePanel.add(typeLabel);
|
|
typePanel.add(typeTf);
|
|
typePanel.setPreferredSize(new Dimension(200, 50));
|
|
ed=new DateTimePicker();
|
|
p.add(typePanel);
|
|
|
|
JPanel actionButton = new JPanel();
|
|
actionButton.setLayout(new BoxLayout(actionButton, BoxLayout.X_AXIS));
|
|
JButton ok=new JButton("ok");
|
|
JButton cancel=new JButton("cancel");
|
|
ok.addActionListener(this);
|
|
cancel.addActionListener(this);
|
|
actionButton.add(ok);
|
|
actionButton.add(cancel);
|
|
p.add(actionButton);
|
|
// Dialog box dimensions
|
|
getContentPane().setSize(500, 500);
|
|
getContentPane().add(p);
|
|
pack();
|
|
this.setVisible(true);
|
|
}
|
|
|
|
@Override
|
|
public void dateOrTimeChanged(DateTimeChangeEvent dateTimeChangeEvent) {
|
|
deliveryDate=dd.getDateTimePermissive();
|
|
}
|
|
|
|
@Override
|
|
public void actionPerformed(ActionEvent e) {
|
|
String actionString=e.getActionCommand();
|
|
switch(actionString){
|
|
case "ok":
|
|
addPackage();
|
|
break;
|
|
case "cancel":
|
|
this.dispose();
|
|
break;
|
|
}
|
|
}
|
|
|
|
private void addPackage(){
|
|
String pName=nameField.getText();
|
|
String pNote=noteField.getText();
|
|
double pPrice=Double.parseDouble(priceField.getText());
|
|
double pWeight=Double.parseDouble(weightField.getText());
|
|
String pAuthor="";
|
|
double pHandlingFee=0.0;
|
|
if (pType==0){
|
|
|
|
pAuthor= typeTf.getText();
|
|
if (pAuthor.equals("")){
|
|
JOptionPane.showMessageDialog(this, "author name can not be empty", "error", JOptionPane.WARNING_MESSAGE);
|
|
return;
|
|
}
|
|
}
|
|
else if (pType==1){
|
|
pHandlingFee = Double.parseDouble(typeTf.getText());
|
|
if (pHandlingFee<=0){
|
|
JOptionPane.showMessageDialog(this, "Handling fee should be positive", "error", JOptionPane.WARNING_MESSAGE);
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|