diff --git a/src/Main.java b/src/Main.java index c21df79..2dce076 100644 --- a/src/Main.java +++ b/src/Main.java @@ -1,27 +1,14 @@ -import java.awt.BorderLayout; -import java.awt.Container; -import javax.swing.JComponent; import javax.swing.JFrame; -import javax.swing.SwingUtilities; import frames.MainFrame; -import panels.*; public class Main { - + // ------------------------------------------------------------------------- // public static void main(String[] args) { - // ------------------------------------------------------------------------- - // - SwingUtilities.invokeLater(new Runnable() { - public void run() { - - // generate window - JFrame mainFrame = new MainFrame(); - } - }); - // ------------------------------------------------------------------------- + // generate window + JFrame mainFrame = new MainFrame(); } } 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..56a61cb 100644 --- a/src/frames/MainFrame.java +++ b/src/frames/MainFrame.java @@ -1,28 +1,21 @@ package frames; import java.awt.BorderLayout; -import java.util.HashMap; import javax.swing.JFrame; import javax.swing.JPanel; -import panels.*; -import resources.Customer; +import panels.MainPanel; +import panels.ShowHistoryPanel; import resources.CustomersModel; //------------------------------------------------------------------------- // -public class MainFrame extends JFrame { - - // field - private State state; +public class MainFrame extends JFrame implements IMainFrame { // model private CustomersModel model; - // panel - private JPanel curPanel; - // cache private MainPanel mainPanel; private ShowHistoryPanel historyPanel; diff --git a/src/panels/MainPanel.java b/src/panels/MainPanel.java index 5a691bd..862a32a 100644 --- a/src/panels/MainPanel.java +++ b/src/panels/MainPanel.java @@ -5,23 +5,14 @@ import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; -import java.util.EventListener; -import java.util.HashMap; -import java.util.Random; -import javax.swing.DefaultListModel; import javax.swing.JButton; -import javax.swing.JList; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; -import javax.swing.JTextField; -import javax.swing.event.TableModelEvent; import javax.swing.table.DefaultTableModel; -import javax.swing.table.TableModel; -import frames.MainFrame; -import frames.State; +import frames.IMainFrame; import resources.Customer; import resources.CustomersModel; @@ -30,7 +21,7 @@ public class MainPanel extends JPanel { // frame - private MainFrame mainFrame; + private IMainFrame mainFrame; // model private CustomersModel model; @@ -43,14 +34,14 @@ // buttons private JButton addButton; private JButton removeButton; - private JButton showDetailButton; + private JButton showHistoryButton; // ------------------------------------------------------------------------- // ------------------------------------------------------------------------- // constructor // ------------------------------------------------------------------------- // - public MainPanel(MainFrame mainFrame, CustomersModel model) { + public MainPanel(IMainFrame mainFrame, CustomersModel model) { super(new BorderLayout()); @@ -70,22 +61,22 @@ // add buttons addButton = new JButton("Add"); removeButton = new JButton("Remove"); - showDetailButton = new JButton("Show History"); + showHistoryButton = new JButton("Show History"); // add listener addButton.addActionListener(new AddActionHandler()); removeButton.addActionListener(new RemoveActionHandler()); - showDetailButton.addActionListener(new ShowHistoryActionHandler()); + showHistoryButton.addActionListener(new ShowHistoryActionHandler()); JPanel buttonPanel = new JPanel(); buttonPanel.add(addButton, BorderLayout.WEST); buttonPanel.add(removeButton, BorderLayout.EAST); add(buttonPanel, BorderLayout.CENTER); - // add show detail + // add show history JPanel showButtonPanel = new JPanel(); FlowLayout flowLayout = new FlowLayout(); - showButtonPanel.add(showDetailButton, BorderLayout.SOUTH); + showButtonPanel.add(showHistoryButton, BorderLayout.SOUTH); showButtonPanel.setLayout(flowLayout); add(showButtonPanel, BorderLayout.SOUTH); @@ -114,7 +105,7 @@ // private // ------------------------------------------------------------------------- // - private void transitionToHistory(MainFrame mainFrame, int index) { + private void transitionToHistory(IMainFrame mainFrame, int index) { mainFrame.showHistoryPanel(this, index); } @@ -162,7 +153,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..628fb45 100644 --- a/src/panels/ShowHistoryPanel.java +++ b/src/panels/ShowHistoryPanel.java @@ -1,21 +1,19 @@ package panels; import java.awt.BorderLayout; -import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; -import java.util.ArrayList; -import java.util.HashMap; +import javax.swing.BoxLayout; import javax.swing.DefaultListModel; import javax.swing.JButton; +import javax.swing.JLabel; import javax.swing.JList; import javax.swing.JPanel; import javax.swing.JScrollPane; -import javax.swing.JTable; -import javax.swing.table.DefaultTableModel; +import javax.swing.JTextField; -import frames.MainFrame; +import frames.IMainFrame; import resources.Customer; import resources.CustomersModel; @@ -24,7 +22,7 @@ public class ShowHistoryPanel extends JPanel { // frame - private MainFrame mainFrame; + private IMainFrame mainFrame; // model private Customer selectedCustomer; @@ -35,6 +33,8 @@ private DefaultListModel historiesListModel; // buttons + private JLabel nameLabel; + private JTextField textField; private JButton backButton; private JButton payButton; @@ -43,7 +43,7 @@ // constructor // ------------------------------------------------------------------------- // - public ShowHistoryPanel(MainFrame mainFrame, CustomersModel model) { + public ShowHistoryPanel(IMainFrame mainFrame, CustomersModel model) { super(new BorderLayout()); // initialize frame @@ -53,25 +53,41 @@ this.model = model; // initialize table - historiesListModel = new DefaultListModel(); + historiesListModel = new DefaultListModel(); historiesList = new JList(historiesListModel); - // add buttons - JPanel buttonPane = new JPanel(); - backButton = new JButton("Back"); + BoxLayout layout = new BoxLayout(this, BoxLayout.Y_AXIS); + this.setLayout(layout); + + // + nameLabel = new JLabel(); + nameLabel.setAlignmentX(CENTER_ALIGNMENT); + add(nameLabel); + + // add scroll menu + JScrollPane scrollPanel = new JScrollPane(historiesList); + add(scrollPanel); + + // add payment fields + JLabel inputLabel = new JLabel("payment?"); + textField = new JTextField(25); payButton = new JButton("Payment"); - buttonPane.add(backButton); - buttonPane.add(payButton); - add(buttonPane, BorderLayout.SOUTH); + backButton = new JButton("Back"); + backButton.setAlignmentX(CENTER_ALIGNMENT); + + JPanel panel = new JPanel(); + panel.add(inputLabel); + panel.add(textField); + panel.add(payButton); + panel.add(backButton); + + this.add(panel); + this.add(backButton); // add listener backButton.addActionListener(new BackActionHandler()); payButton.addActionListener(new PaymentActionHandler()); - // add scroll menu - JScrollPane scrollPanel = new JScrollPane(historiesList); - add(scrollPanel, BorderLayout.NORTH); - } // ------------------------------------------------------------------------- @@ -79,10 +95,13 @@ // public // ------------------------------------------------------------------------- // - public void updateListModelByIndex(int index) { - selectedCustomer = model.getCustomers().get(index); + public void updateListModelByIndex(int customerId) { + selectedCustomer = model.getCustomers().get(customerId); + historiesListModel.removeAllElements(); - historiesListModel.addAll(model.getCustomers().get(index).getHistory()); + historiesListModel.addAll(model.getCustomers().get(customerId).getHistory()); + + nameLabel.setText("name: " + selectedCustomer.getName()); } // ------------------------------------------------------------------------- @@ -90,7 +109,7 @@ // private // ------------------------------------------------------------------------- // - private void transitionToMain(MainFrame mainFrame) { + private void transitionToMain(IMainFrame mainFrame) { mainFrame.showMainPanel(this); } @@ -111,11 +130,22 @@ // ------------------------------------------------------------------------- // 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()); } } - } diff --git a/src/resources/Customer.java b/src/resources/Customer.java index 225b25d..70c0fdd 100644 --- a/src/resources/Customer.java +++ b/src/resources/Customer.java @@ -1,5 +1,6 @@ package resources; -import java.util.*; + +import java.util.List; //------------------------------------------------------------------------- // todo: add name field @@ -9,31 +10,36 @@ private History history; private Payment payment; private String name; // added - public Customer(String name) { + + public Customer(String name) { // added points = new Points(); total = new Total(); history = new History(total); - payment = new Payment(points,history); - - // added - this.name = name; + payment = new Payment(points, history); + + this.name = name; // added } + public void purchase(int x) { this.payment.purchase(x); } + public int getTotal() { return total.getValue(); } + public int getPayment() { return payment.getValue(); } + public List getHistory() { return history.getValue(); } + public int getPoints() { return points.getValue(); } - + // added public String getName() { return this.name;