/* * OpenTicketDialog.java * * Created on August 23, 2006, 11:59 PM */ package com.floreantpos.ui.dialog; import java.awt.BorderLayout; import java.awt.CardLayout; import java.awt.Color; 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.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.util.Iterator; import java.util.List; import javax.swing.ImageIcon; import org.hibernate.Session; import com.floreantpos.IconFactory; import com.floreantpos.model.Ticket; import com.floreantpos.model.dao.TicketDAO; import com.floreantpos.swing.PosButton; import com.floreantpos.swing.TransparentPanel; /** * * @author MShahriar */ public class OpenTicketDialog extends POSDialog implements ActionListener { private CardLayout cardLayout = new CardLayout(); private Dimension buttonDimension = new Dimension(100, 60); private Ticket selectedTicket; /** Creates new form OpenTicketDialog */ public OpenTicketDialog(java.awt.Frame parent, boolean modal) { super(parent, modal, true); TransparentPanel contentPane = new TransparentPanel(new BorderLayout(5, 5)); contentPane.setOpaque(true); setContentPane(contentPane); 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 } }; String[][] iconNames = new String[][] { { "7_32.png", "8_32.png", "9_32.png" }, { "4_32.png", "5_32.png", "6_32.png" }, { "1_32.png", "2_32.png", "3_32.png" }, { "0_32.png", "finish_32.png" } }; ticketNumberPanel.setLayout(new GridBagLayout()); GridBagConstraints gbc = new GridBagConstraints(); gbc.weightx = 1; gbc.weighty = 0; gbc.insets = new Insets(3, 3, 3, 3); gbc.fill = GridBagConstraints.BOTH; Dimension preferredSize = new Dimension(60, 70); 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(); ImageIcon icon = IconFactory.getIcon(iconNames[i][j]); String buttonText = String.valueOf(numbers[i][j]); if (icon == null) { posButton.setText(buttonText); } else { posButton.setIcon(icon); if ("GO".equals(buttonText)) { posButton.setText(buttonText); } } posButton.setActionCommand(buttonText); posButton.setPreferredSize(preferredSize); posButton.addActionListener(this); ticketNumberPanel.add(posButton, gbc); } } btnClear.setIcon(IconFactory.getIcon("clear_32.png")); tfTicketNumber.setBackground(Color.WHITE); btnPrev.setIcon(IconFactory.getIcon("previous_32.png")); btnPrev.setText(""); btnPrev.setActionCommand("PREV"); btnNext.setIcon(IconFactory.getIcon("next_32.png")); btnNext.setText(""); btnNext.setActionCommand("NEXT"); btnCancel.setIcon(IconFactory.getIcon("cancel_32.png")); gbc.weighty = 1; gbc.gridx = 0; gbc.gridy = GridBagConstraints.RELATIVE; gbc.gridwidth = 3; TransparentPanel transparentPanel = new TransparentPanel(); ticketNumberPanel.add(transparentPanel, gbc); ticketListPanel.setLayout(cardLayout); loadTickets(); titlePanel.setTitle("SELECT A TICKET"); setTitle("MDSS-POS"); setSize(794, 575); setResizable(false); titlePanel.addMouseListener(new MouseListener() { public void mouseClicked(MouseEvent e) { if(e.getButton() == MouseEvent.BUTTON1 && e.isControlDown()) { Dimension size = getSize(); size.width += 1; setSize(size); } else if(e.getButton() == MouseEvent.BUTTON1 && e.isAltDown()) { Dimension size = getSize(); size.height += 1; setSize(size); } else if(e.getButton() == MouseEvent.BUTTON3 && e.isControlDown()) { Dimension size = getSize(); size.width -= 1; setSize(size); } else if(e.getButton() == MouseEvent.BUTTON3 && e.isAltDown()) { Dimension size = getSize(); size.height -= 1; setSize(size); } } public void mousePressed(MouseEvent e) { } public void mouseReleased(MouseEvent e) { } public void mouseEntered(MouseEvent e) { } public void mouseExited(MouseEvent e) { } }); } public void loadTickets() { 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)); } gbc.weighty = 0; ticketPanel.add(new TicketButton(ticket), gbc); if (!iter.hasNext()) { gbc.weighty = 1; ticketPanel.add(new TransparentPanel(), gbc); } } //openTickets.clear(); } catch (Exception e) { POSMessageDialog.showMessage(e.getMessage()); } } /** 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 ">//GEN-BEGIN:initComponents private void initComponents() { titlePanel = new com.floreantpos.ui.TitlePanel(); ticketNumberOuterPanel = new com.floreantpos.swing.TransparentPanel(); transparentPanel1 = new com.floreantpos.swing.TransparentPanel(); btnClear = new com.floreantpos.swing.PosButton(); tfTicketNumber = new javax.swing.JTextField(); ticketNumberPanel = new com.floreantpos.swing.TransparentPanel(); 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(); getContentPane().setLayout(new java.awt.BorderLayout(5, 5)); setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); getContentPane().add(titlePanel, java.awt.BorderLayout.NORTH); 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)); ticketNumberOuterPanel.setPreferredSize(new java.awt.Dimension(250, 93)); transparentPanel1.setLayout(new java.awt.BorderLayout(5, 5)); transparentPanel1.setBorder(javax.swing.BorderFactory.createEmptyBorder(1, 3, 1, 3)); btnClear.setText("CLEAR"); btnClear.setPreferredSize(new java.awt.Dimension(90, 40)); btnClear.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btnCleardoClearTicketNumber(evt); } }); transparentPanel1.add(btnClear, 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, 238, Short.MAX_VALUE)); ticketNumberPanelLayout.setVerticalGroup(ticketNumberPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING).add(0, 385, Short.MAX_VALUE)); ticketNumberOuterPanel.add(ticketNumberPanel, java.awt.BorderLayout.CENTER); getContentPane().add(ticketNumberOuterPanel, java.awt.BorderLayout.WEST); 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) { btnPrevdoGoPrev(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) { btnNextdoGoNext(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) { btnCanceldoCancel(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, 534, Short.MAX_VALUE)); ticketListPanelLayout.setVerticalGroup(ticketListPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING).add(0, 377, Short.MAX_VALUE)); openTicketsPanel.add(ticketListPanel, java.awt.BorderLayout.CENTER); getContentPane().add(openTicketsPanel, java.awt.BorderLayout.CENTER); pack(); }// </editor-fold>//GEN-END:initComponents private void btnCanceldoCancel(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnCanceldoCancel selectedTicket = null; canceled = true; setVisible(false); dispose(); }//GEN-LAST:event_btnCanceldoCancel private void btnNextdoGoNext(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnNextdoGoNext cardLayout.next(ticketListPanel); }//GEN-LAST:event_btnNextdoGoNext private void btnPrevdoGoPrev(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnPrevdoGoPrev cardLayout.previous(ticketListPanel); }//GEN-LAST:event_btnPrevdoGoPrev private void btnCleardoClearTicketNumber(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnCleardoClearTicketNumber tfTicketNumber.setText(""); }//GEN-LAST:event_btnCleardoClearTicketNumber public void actionPerformed(ActionEvent e) { String actionCommand = e.getActionCommand(); if (actionCommand.equals("GO")) { Session session = null; try { String ticketNum = tfTicketNumber.getText(); if (ticketNum == null || ticketNum.trim().equals("")) { return; } int ticketId = 0; try { ticketId = Integer.parseInt(tfTicketNumber.getText()); } catch (NumberFormatException x) { return; } TicketDAO dao = new TicketDAO(); session = dao.getSession(); Ticket ticket = dao.get(ticketId, session); if (ticket == null) { POSMessageDialog.showError("Ticket not found"); return; } ticket = dao.initializeTicket(ticket); selectedTicket = ticket; canceled = false; setVisible(false); dispose(); } catch (Exception ex) { POSMessageDialog.showError(ex.getMessage()); } finally { if (session != null) { session.close(); } } } else { tfTicketNumber.setText(tfTicketNumber.getText() + actionCommand); } } // Variables declaration - do not modify//GEN-BEGIN:variables private com.floreantpos.swing.PosButton btnCancel; private com.floreantpos.swing.PosButton btnClear; private com.floreantpos.swing.PosButton btnNext; 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; // End of variables declaration//GEN-END:variables 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) { try { ticket = TicketDAO.getInstance().initializeTicket(ticket); selectedTicket = ticket; } catch (Exception ex) { POSMessageDialog.showError(ex.getMessage()); return; } canceled = false; setVisible(false); dispose(); } @Override protected void finalize() throws Throwable { ticket = null; removeActionListener(this); super.finalize(); } } public Ticket getSelectedTicket() { return selectedTicket; } public void setSelectedTicket(Ticket selectedTicket) { this.selectedTicket = selectedTicket; } }