/* * VikingGUI.java * * Created on October 15, 2001, 9:34 AM */ import javax.swing.table.*; import javax.swing.*; import javax.swing.event.*; import java.awt.*; import java.awt.Color; import java.awt.event.*; import javax.swing.event.TableModelListener; import java.util.*; /* * @author Administrator * @version */ public class VikingGUI extends JFrame implements ActionListener, ListSelectionListener { private Vector allCustVtr, selectCustVtr, letterVtr; private JFrame vikingFrame; private JPanel mainPnl, allCustPnl, buttonPnl, selectCustPnl, generateLetterPnl; private GridBagLayout frameGbLay, mainGbLay, allCustGbLay, selectCustGbLay, generateLetterGbLay; private GridBagConstraints gbConstraint; private GridValue gv; private JTable allCustTbl, selectCustTbl, generateLetterTbl; private VikingTableMdl allCustMdl, selectCustMdl, generateLetterMdl; private JComboBox templateCmbo; private JScrollPane allCustScrl, selectCustScrl, generateLetterScrl; private JButton addButton, removeButton, generateButton; private JList generateLetterLst; private JTextArea generateLetterTextArea; /** Creates new VikingGUI */ public VikingGUI(Vector cList) { vikingFrame = new JFrame("The Viking 1.0"); allCustVtr = new Vector(); selectCustVtr = new Vector(); letterVtr = new Vector(); CustomerListNode addCust; Enumeration e = cList.elements(); while(e.hasMoreElements()) { addCust = new CustomerListNode((String)(e.nextElement())); allCustVtr.addElement(addCust); } frameGbLay = new GridBagLayout(); gv = new GridValue(); vikingFrame.addWindowListener (new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0);} } ); mainPnl = new JPanel(); mainGbLay = new GridBagLayout(); setObjectSize(mainPnl,800,600); gbConstraint = new GridBagConstraints(); mainPnl.setLayout(mainGbLay); //Create all customers panel allCustomerPanel(); //create Select Customer panel selectCustomerPanel(); createButtonPanel(); generateLetterPnl = new JPanel(); generateLetterGbLay = new GridBagLayout(); generateLetterLst = new JList(letterVtr); generateLetterLst.addListSelectionListener(this); generateLetterPnl.setLayout(generateLetterGbLay); setObjectSize(generateLetterPnl,800,400); setObjectSize(generateLetterLst,150,400); generateLetterScrl = new JScrollPane(generateLetterLst); setObjectSize(generateLetterScrl,150,400); generateLetterTextArea = new JTextArea(600,400); setObjectSize(generateLetterTextArea,600,400); gv.set(0,0,1,1); addComponent(generateLetterScrl,generateLetterGbLay,generateLetterPnl,gbConstraint,gv); gv.set(0,1,1,1,gbConstraint.EAST); addComponent(generateLetterTextArea,generateLetterGbLay,generateLetterPnl,gbConstraint,gv); /////////////////////// gv.set(0,0,1,1); addComponent(allCustPnl,mainGbLay,mainPnl,gbConstraint,gv); gv.set(0,1,1,1,gbConstraint.CENTER,gbConstraint.NONE); addComponent(buttonPnl,mainGbLay,mainPnl,gbConstraint,gv); gv.set(0,2,1,1,gbConstraint.WEST,gbConstraint.NONE); addComponent(selectCustPnl,mainGbLay,mainPnl,gbConstraint,gv); gv.set(1,0,3,1,gbConstraint.SOUTH,gbConstraint.HORIZONTAL); addComponent(generateLetterPnl,mainGbLay,mainPnl,gbConstraint,gv); vikingFrame.getContentPane().add(mainPnl); vikingFrame.pack(); vikingFrame.setVisible(true); } public void allCustomerPanel() { allCustPnl = new JPanel(); allCustGbLay = new GridBagLayout(); allCustPnl = new JPanel(allCustGbLay); //Create All Customers Table allCustMdl = new VikingTableMdl(); allCustMdl.setCustomerData(allCustVtr); String[] allCustClm = {"Last Name","First Name","Salut."}; allCustMdl.setColumnNames(allCustClm); allCustTbl = new JTable(allCustMdl); allCustScrl = new JScrollPane(allCustTbl); setObjectSize(allCustScrl,350,200); gv.set(0,0,1,1); addComponent(allCustScrl,allCustGbLay,allCustPnl,gbConstraint,gv); } public void selectCustomerPanel() { selectCustMdl = new VikingTableMdl(); String[] selectCustClm = {"Last Name","First Name","Salut."}; selectCustMdl.setColumnNames(selectCustClm); selectCustPnl = new JPanel(); selectCustGbLay = new GridBagLayout(); selectCustTbl = new JTable(selectCustMdl); selectCustScrl = new JScrollPane(selectCustTbl); selectCustPnl.setLayout(selectCustGbLay); JLabel templateLbl = new JLabel("Selected Template:"); String[] templates = {"Offer 1","Offer 2","Offer 3"}; generateButton = new JButton("Generate Letter"); generateButton.addActionListener(this); templateCmbo = new JComboBox(templates); templateCmbo.setBackground(Color.white); templateCmbo.setEditable(false); setObjectSize(selectCustScrl,350,150); gv.set(0,0,1,1); addComponent(selectCustScrl,selectCustGbLay,selectCustPnl,gbConstraint,gv); gv.set(1,0,1,1); addComponent(templateCmbo,selectCustGbLay,selectCustPnl,gbConstraint,gv); gv.set(2,0,1,1); addComponent(generateButton,selectCustGbLay,selectCustPnl,gbConstraint,gv); } public void createButtonPanel() { buttonPnl = new JPanel(); buttonPnl.setLayout(new GridLayout(2,1)); addButton = new JButton(">>"); addButton.addActionListener(this); removeButton = new JButton("<<"); removeButton.addActionListener(this); buttonPnl.add(addButton,0); buttonPnl.add(removeButton,1); } public void setObjectSize(JComponent c,int w, int h) { c.setPreferredSize(new Dimension(w,h)); c.setSize(new Dimension(w,h)); c.setMinimumSize(new Dimension(w,h)); } public void addComponent(Component c,GridBagLayout layout, Container contain,GridBagConstraints gbConstraint, GridValue gv) { gbConstraint.gridx = gv.column; gbConstraint.gridy = gv.row; gbConstraint.gridwidth = gv.width; gbConstraint.gridheight = gv.height; gbConstraint.anchor = gv.anchor; gbConstraint.fill = gv.fill; layout.setConstraints(c, gbConstraint); contain.add( c ); return; } public void actionPerformed(java.awt.event.ActionEvent actionEvent) { if(actionEvent.getSource() == addButton) { addSelectedRowsToSelectedCustomers(); } else if(actionEvent.getSource() == removeButton) { } else if(actionEvent.getSource() == generateButton) { Enumeration selectCustE = selectCustVtr.elements(); LetterGenerator letterGen = new LetterGenerator(); while(selectCustE.hasMoreElements()) { CustomerListNode customer = (CustomerListNode)selectCustE.nextElement(); letterGen.generateLetter(customer); Template letterTemplate = letterGen.previewLetter(); Letter letter = new Letter(); letter.setLinkCustomer(customer); letter.setLetter(letterTemplate); letterVtr.addElement(letter); } generateLetterLst.setListData(letterVtr); } } public void addSelectedRowsToSelectedCustomers() { int rowCount = allCustTbl.getSelectedRowCount(); CustomerListNode cust; if(rowCount == 1) { int row = allCustTbl.getSelectedRow(); cust = (CustomerListNode)allCustVtr.elementAt(row); selectCustVtr.add(cust); ((VikingTableMdl)selectCustTbl.getModel()).refreshTable(selectCustVtr,1); } else if(rowCount > 1) { int[] rowIndices = allCustTbl.getSelectedRows(); cust = new CustomerListNode(); for(int n=0; n< rowIndices.length; n++) { cust = (CustomerListNode)allCustVtr.elementAt(rowIndices[n]); selectCustVtr.add(cust); } ((VikingTableMdl)selectCustTbl.getModel()).refreshTable(selectCustVtr,1); } else { JOptionPane.showMessageDialog(null,"You must have a row selected to add the customer."); } } public void valueChanged(javax.swing.event.ListSelectionEvent listSelectionEvent) { JList list = (JList)listSelectionEvent.getSource(); int index = list.getSelectedIndex();//listSelectionEvent.getFirstIndex(); Letter letter = (Letter)letterVtr.elementAt(index); generateLetterTextArea.setText(letter.getLetter().getContent()); } }