/* * OpenTicketView.java * * Created on August 16, 2006, 3:32 PM */ package com.floreantpos.ui.views; import java.awt.CardLayout; import java.awt.Dimension; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Insets; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Iterator; import java.util.List; import com.floreantpos.model.Ticket; import com.floreantpos.model.dao.TicketDAO; import com.floreantpos.swing.MessageDialog; import com.floreantpos.swing.PosButton; import com.floreantpos.swing.TransparentPanel; import com.floreantpos.ui.views.order.RootView; import com.floreantpos.util.PanelTester; /** * * @author MShahriar */ public class OpenTicketView extends TransparentPanel implements ActionListener { public final static String VIEW_NAME = "OPENTICKET_VIEW"; private CardLayout cardLayout = new CardLayout(); private Dimension buttonDimension = new Dimension(100, 50); /** Creates new form OpenTicketView */ public OpenTicketView() { initComponents(); String[][] numbers = { { "7", "8", "9" }, { "4", "5", "6" }, { "1", "2", "3" }, { "0", "GO" } }; int[][] gridwidths = { { 1, 1, 1 }, { 1, 1, 1 }, { 1, 1, 1 }, { 1, 2 } }; ticketNumberPanel.setLayout(new GridBagLayout()); GridBagConstraints gbc = new GridBagConstraints(); gbc.weightx = 1; gbc.weighty = 1; gbc.insets = new Insets(3, 3, 3, 3); gbc.fill = GridBagConstraints.BOTH; Dimension preferredSize = new Dimension(50, 60); for (int i = 0; i < numbers.length; i++) { gbc.gridy = i; for (int j = 0; j < numbers[i].length; j++) { gbc.gridx = j; gbc.gridwidth = gridwidths[i][j]; PosButton posButton = new PosButton(); posButton.setText(String.valueOf(numbers[i][j])); posButton.setActionCommand(String.valueOf(numbers[i][j])); posButton.setPreferredSize(preferredSize); posButton.addActionListener(this); ticketNumberPanel.add(posButton, gbc); } } ticketListPanel.setLayout(cardLayout); } /** * This method is called from within the constructor to initialize the form. * WARNING: Do NOT modify this code. The content of this method is always * regenerated by the Form Editor. */ // <editor-fold defaultstate="collapsed" desc=" Generated Code // <editor-fold defaultstate="collapsed" desc=" Generated Code ">//GEN-BEGIN:initComponents private void initComponents() { openTicketsPanel = new com.floreantpos.swing.TransparentPanel(); buttonPanel = new com.floreantpos.swing.TransparentPanel(); btnPrev = new com.floreantpos.swing.PosButton(); btnNext = new com.floreantpos.swing.PosButton(); btnCancel = new com.floreantpos.swing.PosButton(); ticketListPanel = new com.floreantpos.swing.TransparentPanel(); btnPanel = new com.floreantpos.swing.TransparentPanel(); transparentPanel2 = new com.floreantpos.swing.TransparentPanel(); ticketNumberOuterPanel = new com.floreantpos.swing.TransparentPanel(); transparentPanel1 = new com.floreantpos.swing.TransparentPanel(); btnGo = new com.floreantpos.swing.PosButton(); tfTicketNumber = new javax.swing.JTextField(); ticketNumberPanel = new com.floreantpos.swing.TransparentPanel(); titlePanel = new com.floreantpos.ui.TitlePanel(); setLayout(new java.awt.BorderLayout(10, 0)); setBorder(javax.swing.BorderFactory.createEmptyBorder(5, 5, 5, 5)); setOpaque(true); openTicketsPanel.setLayout(new java.awt.BorderLayout(5, 5)); openTicketsPanel.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Open Tickets", javax.swing.border.TitledBorder.CENTER, javax.swing.border.TitledBorder.DEFAULT_POSITION)); buttonPanel.setLayout(new java.awt.GridLayout(1, 0, 5, 0)); buttonPanel.setBorder(javax.swing.BorderFactory.createEmptyBorder(1, 3, 1, 3)); buttonPanel.setPreferredSize(new java.awt.Dimension(100, 50)); btnPrev.setText("PREV"); btnPrev.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { doGoPrev(evt); } }); buttonPanel.add(btnPrev); btnNext.setText("NEXT"); btnNext.setPreferredSize(new java.awt.Dimension(100, 50)); btnNext.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { doGoNext(evt); } }); buttonPanel.add(btnNext); btnCancel.setText("CANCEL"); btnCancel.setPreferredSize(new java.awt.Dimension(220, 50)); btnCancel.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { doCancel(evt); } }); buttonPanel.add(btnCancel); openTicketsPanel.add(buttonPanel, java.awt.BorderLayout.SOUTH); org.jdesktop.layout.GroupLayout ticketListPanelLayout = new org.jdesktop.layout.GroupLayout(ticketListPanel); ticketListPanel.setLayout(ticketListPanelLayout); ticketListPanelLayout.setHorizontalGroup( ticketListPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(0, 444, Short.MAX_VALUE) ); ticketListPanelLayout.setVerticalGroup( ticketListPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(0, 239, Short.MAX_VALUE) ); openTicketsPanel.add(ticketListPanel, java.awt.BorderLayout.CENTER); add(openTicketsPanel, java.awt.BorderLayout.CENTER); btnPanel.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.RIGHT)); add(btnPanel, java.awt.BorderLayout.SOUTH); transparentPanel2.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.CENTER, 0, 0)); ticketNumberOuterPanel.setLayout(new java.awt.BorderLayout(5, 5)); ticketNumberOuterPanel.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Enter Ticket Number", javax.swing.border.TitledBorder.CENTER, javax.swing.border.TitledBorder.DEFAULT_POSITION)); transparentPanel1.setLayout(new java.awt.BorderLayout(5, 5)); transparentPanel1.setBorder(javax.swing.BorderFactory.createEmptyBorder(1, 3, 1, 3)); btnGo.setText("CLEAR"); btnGo.setPreferredSize(new java.awt.Dimension(60, 50)); btnGo.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { doClearTicketNumber(evt); } }); transparentPanel1.add(btnGo, java.awt.BorderLayout.EAST); tfTicketNumber.setColumns(5); tfTicketNumber.setEditable(false); tfTicketNumber.setFont(new java.awt.Font("Tahoma", 1, 24)); transparentPanel1.add(tfTicketNumber, java.awt.BorderLayout.CENTER); ticketNumberOuterPanel.add(transparentPanel1, java.awt.BorderLayout.NORTH); org.jdesktop.layout.GroupLayout ticketNumberPanelLayout = new org.jdesktop.layout.GroupLayout(ticketNumberPanel); ticketNumberPanel.setLayout(ticketNumberPanelLayout); ticketNumberPanelLayout.setHorizontalGroup( ticketNumberPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(0, 224, Short.MAX_VALUE) ); ticketNumberPanelLayout.setVerticalGroup( ticketNumberPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(0, 29, Short.MAX_VALUE) ); ticketNumberOuterPanel.add(ticketNumberPanel, java.awt.BorderLayout.CENTER); transparentPanel2.add(ticketNumberOuterPanel); add(transparentPanel2, java.awt.BorderLayout.WEST); add(titlePanel, java.awt.BorderLayout.NORTH); }// </editor-fold>//GEN-END:initComponents private void doCancel(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_doCancel RootView.getInstance().showView(SwitchboardView.VIEW_NAME); }//GEN-LAST:event_doCancel private void doGoNext(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_doGoNext cardLayout.next(ticketListPanel); }//GEN-LAST:event_doGoNext private void doGoPrev(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_doGoPrev cardLayout.previous(ticketListPanel); }//GEN-LAST:event_doGoPrev private void doClearTicketNumber(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_doClearTicketNumber tfTicketNumber.setText(""); }// GEN-LAST:event_doClearTicketNumber // Variables declaration - do not modify//GEN-BEGIN:variables private com.floreantpos.swing.PosButton btnCancel; private com.floreantpos.swing.PosButton btnGo; private com.floreantpos.swing.PosButton btnNext; private com.floreantpos.swing.TransparentPanel btnPanel; private com.floreantpos.swing.PosButton btnPrev; private com.floreantpos.swing.TransparentPanel buttonPanel; private com.floreantpos.swing.TransparentPanel openTicketsPanel; private javax.swing.JTextField tfTicketNumber; private com.floreantpos.swing.TransparentPanel ticketListPanel; private com.floreantpos.swing.TransparentPanel ticketNumberOuterPanel; private com.floreantpos.swing.TransparentPanel ticketNumberPanel; private com.floreantpos.ui.TitlePanel titlePanel; private com.floreantpos.swing.TransparentPanel transparentPanel1; private com.floreantpos.swing.TransparentPanel transparentPanel2; // End of variables declaration//GEN-END:variables public static void main(String[] args) { OpenTicketView openTicketView = new OpenTicketView(); openTicketView.setVisible(true); PanelTester.test(openTicketView); } public void setVisible(boolean visible) { if (visible) { updateView(); } else { ticketListPanel.removeAll(); } super.setVisible(visible); } public void updateView() { try { TicketDAO dao = new TicketDAO(); List<Ticket> openTickets = dao.findOpenTickets(); TransparentPanel ticketPanel = null; int count = 0; GridBagConstraints gbc = new GridBagConstraints(); gbc.weightx = 1; gbc.gridx = 0; gbc.gridy = GridBagConstraints.RELATIVE; gbc.fill = GridBagConstraints.HORIZONTAL; gbc.insets = new Insets(3, 3, 3, 3); for (Iterator iter = openTickets.iterator(); iter.hasNext(); count++) { Ticket ticket = (Ticket) iter.next(); if (count % 6 == 0) { ticketPanel = new TransparentPanel(new GridBagLayout()); ticketListPanel.add(ticketPanel, String.valueOf(count)); } ticketPanel.add(new TicketButton(ticket), gbc); } openTickets.clear(); } catch (Exception e) { MessageDialog.showError(e); } } public void actionPerformed(ActionEvent e) { String actionCommand = e.getActionCommand(); if (actionCommand.equals("GO")) { try { TicketDAO dao = new TicketDAO(); int ticketId = 0; try { ticketId = Integer.parseInt(tfTicketNumber.getText()); } catch (NullPointerException x) { } Ticket ticket = dao.get(ticketId); if (ticket == null) { MessageDialog.showError("Ticket not found"); return; } SettleTicketView view = SettleTicketView.getInstance(); view.setCurrentTicket(ticket); RootView.getInstance().showView(SettleTicketView.VIEW_NAME); } catch (Exception ex) { MessageDialog.showError(ex); } } else { tfTicketNumber.setText(tfTicketNumber.getText() + actionCommand); } } class TicketButton extends PosButton implements ActionListener { Ticket ticket; public TicketButton(Ticket t) { this.ticket = t; setText(ticket.getTitle()); setPreferredSize(buttonDimension); addActionListener(this); } public void actionPerformed(ActionEvent e) { SettleTicketView view = SettleTicketView.getInstance(); view.setCurrentTicket(ticket); RootView.getInstance().showView(SettleTicketView.VIEW_NAME); } @Override protected void finalize() throws Throwable { ticket = null; removeActionListener(this); super.finalize(); } } }