import java.io.*; import java.awt.*; import javax.swing.*; import java.awt.event.*; import javax.swing.event.*; import java.util.Vector; public class LetterBrowser extends JInternalFrame { private CustomerCollection cCollection; private JList list; private JButton sendButton, cancelButton; private Container container, windowContainer; private JPanel westPanel, eastPanel, northPanel, southPanel, centerPanel, centerLeftPanel, centerRightPanel; private Vector vletters; private String [] custNames; private JComboBox jsend; private JTextArea letterText; private Mailer mailer; private Container window; public LetterBrowser( Vector v, Mailer mail, Container c ) { vletters = v; mailer = mail; window = c; setTitle( "Letter Browser" ); // Draw the frame! custNames = new String[v.size()]; westPanel = new JPanel(); eastPanel = new JPanel(); northPanel = new JPanel(); southPanel = new JPanel(); centerPanel = new JPanel(); centerLeftPanel = new JPanel(); centerRightPanel = new JPanel(); centerPanel.setLayout( new BorderLayout() ); centerLeftPanel.setLayout( new BoxLayout( centerLeftPanel, BoxLayout.Y_AXIS ) ); centerRightPanel.setLayout( new BorderLayout() ); sendButton = new JButton("Send"); sendButton.addActionListener( new ActionListener() { public void actionPerformed( ActionEvent e ) { MailingSystem ms = null; if ( jsend.getSelectedIndex() == 0 ) { ms = new PrinterSystem(); } else if ( jsend.getSelectedIndex() == 1 ) { ms = new EMailSystem(); } int [] indices = list.getSelectedIndices(); Vector v = new Vector(); for ( int i = 0; i < indices.length; i++ ) { v.addElement( vletters.elementAt( indices[i] ) ); } mailer.send( ms, v ); if ( jsend.getSelectedIndex() == 1 ) JOptionPane.showInternalMessageDialog( window, "Messages Sent By Email", "Mailer", JOptionPane.INFORMATION_MESSAGE ); else JOptionPane.showInternalMessageDialog( window, "Messages Printed", "Printer", JOptionPane.INFORMATION_MESSAGE ); mailer.storeRecords(); } } ); cancelButton = new JButton("Cancel"); cancelButton.addActionListener( new ActionListener() { public void actionPerformed( ActionEvent e ) { dispose(); } } ); letterText = new JTextArea(""); letterText.setLineWrap( true ); letterText.setEditable( false ); letterText.setWrapStyleWord( true ); letterText.setBackground( Color.white ); for ( int i = 0; i < vletters.size(); i++ ) { custNames[i] = new String( ((Letter) vletters.elementAt(i)).getCustomer().getName() ); } jsend = new JComboBox(); jsend.setPreferredSize( new Dimension( 100, 25 ) ); jsend.setSize( 100, 25 ); jsend.addItem("Printer"); jsend.addItem("E-Mail"); setBounds( 10, 10, 500, 300 ); windowContainer = getContentPane(); windowContainer.setBounds( 10, 10, 500, 300 ); windowContainer.setLayout( new BorderLayout() ); JPanel buttonPanel = new JPanel(); buttonPanel.setLayout( new BorderLayout() ); buttonPanel.add( sendButton, BorderLayout.WEST ); buttonPanel.add( cancelButton, BorderLayout.EAST ); list = new JList( custNames ); JScrollPane scrollpane = new JScrollPane( list ); scrollpane.setPreferredSize( new Dimension(100, 200) ); list.addListSelectionListener( new ListSelectionListener() { public void valueChanged( ListSelectionEvent e ) {System.out.println("jake is rad"); letterText.setText( "" ); int [] indices = list.getSelectedIndices(); for ( int i = 0; i < indices.length; i++ ) { letterText.append( "Letter " + (i+1) + "\n\n" ); letterText.append( ((Letter) vletters.elementAt( indices[i] )).getLetter() ); letterText.append ("\n\n"); } } } ); JScrollPane scrolltext = new JScrollPane(letterText); centerLeftPanel.add( scrollpane ); centerLeftPanel.add( jsend ); centerLeftPanel.add( buttonPanel ); centerRightPanel.add( scrolltext, BorderLayout.CENTER ); centerPanel.add( centerLeftPanel, BorderLayout.WEST ); centerPanel.add( centerRightPanel, BorderLayout.CENTER ); northPanel.setLayout( new BorderLayout() ); northPanel.add( new JLabel(" Customers"), BorderLayout.WEST ); northPanel.add( new JLabel(" Letters"), BorderLayout.CENTER ); windowContainer.add( centerPanel, BorderLayout.CENTER ); windowContainer.add( eastPanel, BorderLayout.EAST ); windowContainer.add( southPanel, BorderLayout.SOUTH ); windowContainer.add( westPanel, BorderLayout.WEST ); windowContainer.add( northPanel, BorderLayout.NORTH ); windowContainer.setVisible( true ); show(); } }