/* * Copyright (c) 2003,2004 Aly Merchant * * This software is provided 'as-is', without any express or implied warranty. * In no event will the authors be held liable for any damages arising from the * use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * * 2. Altered source versions must be plainly marked as such, and must not * be misrepresented as being the original software. * * 3. This notice may not be removed or altered from any source * distribution. */ package tenk; import javax.swing.*; import java.awt.BorderLayout; import java.awt.Canvas; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.GridLayout; import java.awt.GraphicsEnvironment; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; import java.awt.print.PrinterJob; import java.io.*; import java.util.ArrayList; public class FRPanel { private JPanel panel, bPanel; private JButton print, addManual, addDisk, del, printCat, preview; private JList list; private JScrollPane slist; private JLabel title; public FRPanel () { panel = new JPanel(new BorderLayout() ); bPanel = new JPanel(new GridLayout(2,0,5,5) ); print = new JButton("Print"); addManual = new JButton("Add"); addDisk = new JButton("Load"); del = new JButton("Delete"); printCat = new JButton("Category Print"); preview = new JButton("Preview"); list = new JList(); slist = new JScrollPane(list); title = new JLabel("4K Fun Run",SwingConstants.CENTER); if (!Data.isConnected()) title = new JLabel("4K Fun Run [DISCONNECTED]",SwingConstants.CENTER); preview.addActionListener(new DoPreview(list) ); print.addActionListener(new DoPrint(list) ); addManual.addActionListener(new DoAdd(list) ); del.addActionListener(new DoDel(list) ); addDisk.addActionListener(new DoLoad(list) ); list.setListData( Data.getFArr() ); list.setFont(new Font("Lucida Sans Typewriter",Font.PLAIN,12)); title.setFont(new Font("SansSerif",Font.BOLD,16)); slist.setBorder(BorderFactory.createEmptyBorder(5,5,5,5)); panel.add(title,BorderLayout.NORTH); panel.add(slist,BorderLayout.CENTER); bPanel.add(addDisk); bPanel.add(addManual); bPanel.add(del); bPanel.add(preview); bPanel.add(print); //bPanel.add(printCat); bPanel.setBorder(BorderFactory.createEmptyBorder(5,5,5,5)); panel.add(bPanel,BorderLayout.SOUTH); } JPanel getPanel() { return panel; } private class AddFun { JFrame frame; JList ls; AddFun(JList l) { ls = l; JPanel p = new JPanel(new GridLayout(0,1,5,5)); p.setBorder(BorderFactory.createEmptyBorder(5,5,5,5)); JButton acc = new JButton("Accept"), rej = new JButton("Cancel"); final JTextField fname = new JTextField(); JLabel lfn = new JLabel("First Name"); lfn.setLabelFor(fname); final JTextField lname = new JTextField(); JLabel lln = new JLabel("Last Name"); lln.setLabelFor(lname); p.add(lfn); p.add(fname); p.add(lln); p.add(lname); acc.addActionListener ( new ActionListener() { public void actionPerformed(ActionEvent e) { Data.addFR( new FunRun(fname.getText(),lname.getText(),0) ); ls.setListData( Data.getFArr() ); frame.hide(); } }); rej.addActionListener ( new ActionListener() { public void actionPerformed(ActionEvent e) { frame.hide(); } }); p.add(acc); p.add(rej); frame = new JFrame("Add new runner"); frame.setContentPane(p); frame.pack(); } public void add() { frame.show(); } } private class Preview { JFrame frame; Preview () { JFrame.setDefaultLookAndFeelDecorated(true); frame = new JFrame("Certificate preview"); frame.setBounds(200,50,500,550); } public void prvCert(FunRun fr) { frame.setContentPane(new Cert(fr)); frame.show(); } } private class DoPreview implements ActionListener { JList ls; Preview pv = new Preview(); DoPreview (JList l) { ls = l; } public void actionPerformed(ActionEvent e) { if (ls.getSelectedValue() != null && ls.getSelectedValue() instanceof FunRun) pv.prvCert((FunRun)ls.getSelectedValue()); } } private class DoDel implements ActionListener { JList ls; DoDel (JList l) { ls = l; } public void actionPerformed(ActionEvent e) { if (ls.getSelectedValue() != null && ls.getSelectedValue() instanceof FunRun && JOptionPane.showConfirmDialog(panel,"Delete "+ls.getSelectedValue()+"?","Delete", JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION) Data.delFR( (FunRun)ls.getSelectedValue() ); ls.setListData(Data.getFArr()); } } private class DoLoad implements ActionListener { JList ls; DoLoad (JList l) { ls = l; } public void actionPerformed(ActionEvent e) { try { String ans; if ( (ans = JOptionPane.showInputDialog(ls,"Location of file","a:\\cert.csv")) != null ) { BufferedReader bf = new BufferedReader( new FileReader( ans ) ); ArrayList fresh = new ArrayList(); FunRun fr; bf.readLine(); while ( (ans = bf.readLine()) != null ) { fr = new FunRun(ans); if (Data.addFR(fr)) fresh.add(fr); } ls.setListData( Data.getFArr() ); if ( JOptionPane.showConfirmDialog(ls,"Print "+fresh.size() +" certificates?","Printing",JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION ) { PrinterJob printJob = PrinterJob.getPrinterJob(); if (printJob.printDialog()) { for (int i=0; i