package org.jboss.seam.rest.examples.client.ui; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.inject.Inject; import javax.inject.Singleton; import javax.swing.*; import javax.swing.border.EmptyBorder; import org.jboss.seam.rest.examples.client.ConnectionException; import org.jboss.seam.rest.examples.client.StatusException; import org.jboss.seam.rest.examples.client.geo.SearchAction; @Singleton public class ZipPanel extends JPanel { private static final long serialVersionUID = 4668520540534987240L; private JPanel header; private JTable results; private JButton searchButton; private JTextField searchQuery; private JLabel messageLabel; private JLabel searchLabel; @Inject private ZipSearchResultTableModel model; @Inject private SearchAction action; @Inject public void initialize() { setBorder(new EmptyBorder(5, 5, 5, 5)); setLayout(new BorderLayout(0, 0)); header = new JPanel(); add(header, BorderLayout.NORTH); header.setLayout(new FlowLayout(FlowLayout.CENTER, 5, 5)); searchLabel = new JLabel("Enter zip code:"); header.add(searchLabel); searchQuery = new JTextField(); header.add(searchQuery); searchQuery.setColumns(10); searchButton = new JButton("Search"); searchButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { buttonAction(); } }); messageLabel = new JLabel(""); messageLabel.setForeground(Color.RED); header.add(messageLabel); header.add(searchButton); results = new JTable(model); JScrollPane scrollPane = new JScrollPane(results); results.setFillsViewportHeight(true); add(scrollPane, BorderLayout.CENTER); } private void buttonAction() { try { action.search(searchQuery.getText()); model.fireTableDataChanged(); messageLabel.setText(""); } catch (IllegalArgumentException iae) { messageLabel.setText("Incorrect ZIP format."); } catch (ConnectionException ce) { messageLabel.setText("Connection problem"); } catch (StatusException se) { messageLabel.setText(se.getMessage()); } } }