diff --git a/src/frames/IMainFrame.java b/src/frames/IMainFrame.java new file mode 100644 index 0000000..678a2b1 --- /dev/null +++ b/src/frames/IMainFrame.java @@ -0,0 +1,10 @@ +package frames; + +import javax.swing.JPanel; + +// ------------------------------------------------------------------------- +// +public interface IMainFrame { + void showMainPanel(JPanel nowPanel); + void showHistoryPanel(JPanel nowPanel, int index); +} diff --git a/src/frames/MainFrame.java b/src/frames/MainFrame.java index af9b221..485a2a0 100644 --- a/src/frames/MainFrame.java +++ b/src/frames/MainFrame.java @@ -12,7 +12,7 @@ //------------------------------------------------------------------------- // -public class MainFrame extends JFrame { +public class MainFrame extends JFrame implements IMainFrame { // field private State state; diff --git a/src/panels/MainPanel.java b/src/panels/MainPanel.java index 5a691bd..c2e566c 100644 --- a/src/panels/MainPanel.java +++ b/src/panels/MainPanel.java @@ -20,6 +20,7 @@ import javax.swing.table.DefaultTableModel; import javax.swing.table.TableModel; +import frames.IMainFrame; import frames.MainFrame; import frames.State; import resources.Customer; @@ -30,7 +31,7 @@ public class MainPanel extends JPanel { // frame - private MainFrame mainFrame; + private IMainFrame mainFrame; // model private CustomersModel model; @@ -50,7 +51,7 @@ // constructor // ------------------------------------------------------------------------- // - public MainPanel(MainFrame mainFrame, CustomersModel model) { + public MainPanel(IMainFrame mainFrame, CustomersModel model) { super(new BorderLayout()); @@ -114,7 +115,7 @@ // private // ------------------------------------------------------------------------- // - private void transitionToHistory(MainFrame mainFrame, int index) { + private void transitionToHistory(IMainFrame mainFrame, int index) { mainFrame.showHistoryPanel(this, index); } @@ -162,7 +163,7 @@ // ------------------------------------------------------------------------- // transition to history - private class ShowHistoryActionHandler implements ActionListener, EventListener { + private class ShowHistoryActionHandler implements ActionListener { // ------------------------------------------------------------------------- // diff --git a/src/panels/ShowHistoryPanel.java b/src/panels/ShowHistoryPanel.java index ff77477..acd6a7d 100644 --- a/src/panels/ShowHistoryPanel.java +++ b/src/panels/ShowHistoryPanel.java @@ -1,20 +1,29 @@ package panels; import java.awt.BorderLayout; +import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.text.DecimalFormat; import java.util.ArrayList; import java.util.HashMap; +import javax.swing.BoxLayout; import javax.swing.DefaultListModel; import javax.swing.JButton; +import javax.swing.JComponent; +import javax.swing.JFormattedTextField; +import javax.swing.JLabel; import javax.swing.JList; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; +import javax.swing.JTextField; +import javax.swing.border.Border; import javax.swing.table.DefaultTableModel; +import frames.IMainFrame; import frames.MainFrame; import resources.Customer; import resources.CustomersModel; @@ -24,7 +33,7 @@ public class ShowHistoryPanel extends JPanel { // frame - private MainFrame mainFrame; + private IMainFrame mainFrame; // model private Customer selectedCustomer; @@ -35,6 +44,8 @@ private DefaultListModel historiesListModel; // buttons + private JLabel nameLabel; + private JTextField textField; private JButton backButton; private JButton payButton; @@ -43,7 +54,7 @@ // constructor // ------------------------------------------------------------------------- // - public ShowHistoryPanel(MainFrame mainFrame, CustomersModel model) { + public ShowHistoryPanel(IMainFrame mainFrame, CustomersModel model) { super(new BorderLayout()); // initialize frame @@ -56,22 +67,35 @@ historiesListModel = new DefaultListModel(); historiesList = new JList(historiesListModel); - // add buttons - JPanel buttonPane = new JPanel(); - backButton = new JButton("Back"); +// this.setLayout(new BoxLayout(this, BoxLayout.Y_AXIS)); + + // add labels + nameLabel = new JLabel(); + add(nameLabel, BorderLayout.NORTH); + + // add scroll menu + JScrollPane scrollPanel = new JScrollPane(historiesList); + add(scrollPanel, BorderLayout.CENTER); + + // add payment fields + textField = new JTextField(1); payButton = new JButton("Payment"); - buttonPane.add(backButton); - buttonPane.add(payButton); - add(buttonPane, BorderLayout.SOUTH); + + JPanel panel = new JPanel(); + panel.setLayout(new BoxLayout(panel, BoxLayout.X_AXIS)); + panel.add(payButton); + panel.add(textField, new Dimension(1,1)); + add(panel); + + // add back button + backButton = new JButton("Back"); + add(backButton, BorderLayout.NORTH); + // add listener backButton.addActionListener(new BackActionHandler()); payButton.addActionListener(new PaymentActionHandler()); - // add scroll menu - JScrollPane scrollPanel = new JScrollPane(historiesList); - add(scrollPanel, BorderLayout.NORTH); - } // ------------------------------------------------------------------------- @@ -81,8 +105,11 @@ // public void updateListModelByIndex(int index) { selectedCustomer = model.getCustomers().get(index); + historiesListModel.removeAllElements(); historiesListModel.addAll(model.getCustomers().get(index).getHistory()); + + nameLabel.setText("name: " + selectedCustomer.getName()); } // ------------------------------------------------------------------------- @@ -90,7 +117,7 @@ // private // ------------------------------------------------------------------------- // - private void transitionToMain(MainFrame mainFrame) { + private void transitionToMain(IMainFrame mainFrame) { mainFrame.showMainPanel(this); } @@ -112,10 +139,18 @@ // payment button's event private class PaymentActionHandler implements ActionListener { public void actionPerformed(ActionEvent e) { - selectedCustomer.purchase(1000); + + String text = textField.getText(); + + // filtering + if (!text.matches("^[0-9]+$")) + return; + if (Integer.parseInt(text) <= 0) + return; + + selectedCustomer.purchase(Integer.parseInt(textField.getText())); historiesListModel.removeAllElements(); historiesListModel.addAll(selectedCustomer.getHistory()); } } - }