From 1b9bcaf4f2e68f94fd116ef177f9460a221a224b Mon Sep 17 00:00:00 2001 From: mms37 Date: Fri, 15 Jul 2022 09:05:56 -0700 Subject: [PATCH] update --- ...github_lgooddatepicker_LGoodDatePicker.xml | 10 + .idea/vcs.xml | 1 + cmpt213-a3.iml | 1 + .../packagedeliveries/view/Input$1$1.class | Bin 0 -> 1405 bytes .../packagedeliveries/view/Input$1.class | Bin 1602 -> 2346 bytes .../packagedeliveries/view/Input.class | Bin 1934 -> 4526 bytes .../packagedeliveries/view/Input.java | 182 ++++++++++++++++-- 7 files changed, 177 insertions(+), 17 deletions(-) create mode 100644 .idea/libraries/github_lgooddatepicker_LGoodDatePicker.xml create mode 100644 out/production/cmpt213-a3/cmpt213/assignment3/packagedeliveries/view/Input$1$1.class diff --git a/.idea/libraries/github_lgooddatepicker_LGoodDatePicker.xml b/.idea/libraries/github_lgooddatepicker_LGoodDatePicker.xml new file mode 100644 index 0000000..e807631 --- /dev/null +++ b/.idea/libraries/github_lgooddatepicker_LGoodDatePicker.xml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml index 77a3cc7..0ec4c2b 100644 --- a/.idea/vcs.xml +++ b/.idea/vcs.xml @@ -3,5 +3,6 @@ + \ No newline at end of file diff --git a/cmpt213-a3.iml b/cmpt213-a3.iml index b5d0958..0140e85 100644 --- a/cmpt213-a3.iml +++ b/cmpt213-a3.iml @@ -8,5 +8,6 @@ + \ No newline at end of file diff --git a/out/production/cmpt213-a3/cmpt213/assignment3/packagedeliveries/view/Input$1$1.class b/out/production/cmpt213-a3/cmpt213/assignment3/packagedeliveries/view/Input$1$1.class new file mode 100644 index 0000000000000000000000000000000000000000..3951418fdd9953780f429bed81c8f651118a5941 GIT binary patch literal 1405 zcmbtUZBG+H5Pr5)j+PV3t3^~$tF}cr3J4!+Fj_H^R3MS?{d%{y3)kDr-L|Oz$^IX3?ZgRV~Gqcam%riSbe|`S}U=te|q%dG1ZQ}+88P>dZq*f}cj+-Q+ z8Mb+-R-MT8j@%~qc_6wx7Cdpff*(8EVboEDN}<9qs9GY?KWp{=0jgOHA!8wHV;D9= z?$GVJPT+=3XSZ?4Jw^D>MJUuJ!$7fgkiiH>E#z#BVVq&5{~IqHUZ&H1J6z3R5>pnY zZQMehVY%P?8B*M5Sg(7s?KFjIbsA34l+yQI#UtSz@z^0%Bty!6;=Cs5zG(A3qoHKo z#;k=qHtyn{ChQs@3{y?6E`fR67DRWKGt3rCb(4NYH#&9cxxs~*iF@A0eLP^u@{f^- zKWQDq%#}wh6c}p%a8X7|$j}Ws36GVOK`-1|iwc0(MWT4fV}^}l-%J%M)zSe&x+Z<{ za54ctxMUkbB&i!Wf=1*C%ds`>?{PL`W5+pHBFyI zsCZ0C_*(+Dx>N)vj0p|ggEb0<7ypS&RKAy;*yC@6PD$20>LpzQl(DVQ3uGd~<~y!h z(zmgSH4?j?CT)+$A7tFtr94+Ws{r>{Ib1vJyfh{~=ZAK9qTb4c-m<+N5}~z#It))R zPyJ^I3=hF_Io*S(Ev4ui#v_tGHccvJB-!%9DOmX%tS`pq3C)9K1C&vudHT!>CEDwe zHE4`17Vz{OYmaO+dcJ%Dc7mJd%LyjFV&)WcJ>;yhTcjtx^apzW5GX z&-%Ea_$r7Oe6Uy|Sn$C|!QbEy5PUC%;@Mn~Y84!I=M3k3bLM>CocS!i@wmS1e*6Sr z6vl>YhdJtv^&F2anN7BXMHfy$a-c^Rp3Tk zDJTh*GYGzUf4l)c1Vs#Bkio_YG8kFZvr&ERRy8$nzl=hOH7t7=r(wfak3`LLyG#G(&^MEFvek%5WgEhfCQTa^ehwTV65J zdfuza*-q}l7{(o#5HX1<2G5_HOxbp%-hp#epE+yqYwqfGA&m1PnlQsKIS>~yhwH!dtZuYZ*$e?+Svg5wHKd8!wT1lqIh~j%Ir&jut?PE;7K2EXlPa~4cZqWc?!13(d&<~7b4(avx6KDad)-~wuwXtDyi+nYW<40q z9Z1mJN)eE>i%62SR(0h#r?m~ugj_<3<^_Pgffb{6M&JXcOSn+MU9Ki7;p$v1(Tx&{ zl&QO#=`Y9Kq~kWIDmyIJYAzHEXBN(k2J{CBx5Z|Lm`RWtRBnAkRU3-+Th&9umf%MvBpMsN7oLf hx9MyFSqj^rK_@HF$vNc99v=#1JruJvwMMvNegZ1y42b{$ delta 455 zcmXw!%P#{_6vlsdXgj7&TcRb34hw{MKTEx-_hV&YH)1@ZN~982`~eb+S%^r)PQt1o z78Vwk{u@h?h%==(_nhy1=YIE|?>>~h2aJ!O*Ee8<)tvFIjFRl>p}lBr*l8!A#p-n0 z6n^VCyK``4W~_bNpo2~yT>-l3QAC}v7IkKe>Kk`8=6FjA;F~c={2W^g?mwwOT{8Y{}rQ* z33IjXJ;k`x8eyp>n3S9ZWlF~*{YPibw|AD3%3bb+YKaz!!RBYwGmT}fFSOrNTcEvp z8Y<9!p*fKk;o7N3mt2mY27H@v;NHHT$ uW0l=d85d;eV$rs`q<2?&>(SYA}R|Ky-nr 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 W;E>OU8C<4Srr02IWNB544B#g){oH*3 diff --git a/src/cmpt213/assignment3/packagedeliveries/view/Input.java b/src/cmpt213/assignment3/packagedeliveries/view/Input.java index 3549f4a..d8da7d0 100644 --- a/src/cmpt213/assignment3/packagedeliveries/view/Input.java +++ b/src/cmpt213/assignment3/packagedeliveries/view/Input.java @@ -1,46 +1,194 @@ 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 class Input { - JTextField typeLabel; - public Input(Frame main){ + public Input(Frame main) { + super(main, "add a package", true); JPanel p = new JPanel(); - String[] type={"book", "perishable", "electronic"}; p.setLayout(new BoxLayout(p, BoxLayout.Y_AXIS)); - JComboBox packageType=new JComboBox<>(type); + String[] type = {"book", "perishable", "electronic"}; + + JComboBox 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){ + 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": + case "electronic": + typeTf.setVisible(true); + ed.setVisible(false); typeLabel.setText("handling fee"); + pType=2; } } }); - -JPanel name=new JPanel(); -JLabel nameLabel=new JLabel(); -JTextField namefield= new JTextField(); -name.setLayout(new BoxLayout(name, BoxLayout.X_AXIS)); -nameLabel.setText("name:"); -nameLabel.setPreferredSize(new Dimension(50, 25)); -name.add(nameLabel); - name.add(namefield); + // 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); } +} + } }