package gui; import java.awt.Color; import java.awt.Component; import java.util.Date; import java.util.Enumeration; import java.util.Vector; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.JTextField; import javax.swing.SwingConstants; import javax.swing.border.EmptyBorder; import javax.swing.table.DefaultTableCellRenderer; import javax.swing.table.DefaultTableModel; import domain.Offer; import domain.RuralHouse; public class HouseFeaturesGUI extends JFrame { /** * */ private static final long serialVersionUID = 1L; private JPanel contentPane; private JLabel lblDistrict; private JTextField District_f; private JLabel lblDescription; private JTextField description_f; private JLabel lblKitchen; private JTextField kitchens_f; private JLabel lblRooms; private JTextField rooms_f; private JLabel lblLivings; private JTextField lRooms_f; private JLabel lblParkings; private JTextField parkings_f; private JLabel lblBaths; private JTextField baths_f; private JTable table; private DefaultTableModel tableModel; private DefaultTableCellRenderer tableRenderer = new DefaultTableCellRenderer(); /** * Create the frame. */ public HouseFeaturesGUI(RuralHouse rh, Date FirstDay, Date LastDay) { this.getContentPane().setLayout(null); setBounds(100, 100, 500, 583); contentPane = new JPanel(); contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); setContentPane(contentPane); lblDistrict = new JLabel("District:"); lblDistrict.setBounds(23, 67, 70, 14); lblDistrict.setHorizontalAlignment(SwingConstants.RIGHT); District_f = new JTextField(); District_f.setEditable(false); District_f.setBounds(103, 64, 86, 20); District_f.setColumns(10); lblDescription = new JLabel("Description:"); lblDescription.setBounds(215, 67, 90, 14); lblDescription.setHorizontalAlignment(SwingConstants.RIGHT); description_f = new JTextField(); description_f.setEditable(false); description_f.setBounds(238, 99, 178, 129); description_f.setColumns(10); lblKitchen = new JLabel("Kitchens:"); lblKitchen.setBounds(23, 211, 70, 14); lblKitchen.setHorizontalAlignment(SwingConstants.RIGHT); kitchens_f = new JTextField(); kitchens_f.setEditable(false); kitchens_f.setBounds(103, 202, 86, 20); kitchens_f.setColumns(10); lblRooms = new JLabel("Rooms:"); lblRooms.setBounds(23, 102, 70, 14); lblRooms.setHorizontalAlignment(SwingConstants.RIGHT); rooms_f = new JTextField(); rooms_f.setEditable(false); rooms_f.setBounds(103, 99, 86, 20); rooms_f.setColumns(10); lblLivings = new JLabel("Living rooms:"); lblLivings.setBounds(30, 236, 63, 14); lblLivings.setHorizontalAlignment(SwingConstants.RIGHT); lRooms_f = new JTextField(); lRooms_f.setEditable(false); lRooms_f.setBounds(103, 233, 86, 20); lRooms_f.setColumns(10); lblParkings = new JLabel("Parkings:"); lblParkings.setBounds(23, 174, 70, 14); lblParkings.setHorizontalAlignment(SwingConstants.RIGHT); parkings_f = new JTextField(); parkings_f.setEditable(false); parkings_f.setBounds(103, 171, 86, 20); parkings_f.setColumns(10); lblBaths = new JLabel("Baths:"); lblBaths.setBounds(23, 143, 70, 14); lblBaths.setHorizontalAlignment(SwingConstants.RIGHT); baths_f = new JTextField(); baths_f.setEditable(false); baths_f.setBounds(103, 140, 86, 20); baths_f.setColumns(10); contentPane.setLayout(null); contentPane.add(lblParkings); contentPane.add(parkings_f); contentPane.add(lblRooms); contentPane.add(rooms_f); contentPane.add(lblBaths); contentPane.add(baths_f); contentPane.add(lblDistrict); contentPane.add(District_f); contentPane.add(lblLivings); contentPane.add(lRooms_f); contentPane.add(lblKitchen); contentPane.add(kitchens_f); contentPane.add(description_f); contentPane.add(lblDescription); parkings_f.setText(Integer.toString(rh.getFeatures().getnParkings())); rooms_f.setText(Integer.toString(rh.getFeatures().getnRooms())); baths_f.setText(Integer.toString(rh.getFeatures().getnBaths())); District_f.setText(rh.getDistrict()); kitchens_f.setText(Integer.toString(rh.getFeatures().getnKitchens())); description_f.setText(rh.getDescription()); lRooms_f.setText(Integer.toString(rh.getFeatures().getnLivings())); JLabel lblAvailbleOffers = new JLabel("Availble Offers:"); lblAvailbleOffers.setBounds(30, 286, 86, 14); contentPane.add(lblAvailbleOffers); JScrollPane scrollPane = new JScrollPane(); scrollPane.setBounds(40, 311, 376, 183); contentPane.add(scrollPane); table = new JTable(); tableModel = new DefaultTableModel(null,new String[] {"Offer #", "FirstDay", "LastDay", "Price"}); table.setModel(tableModel); scrollPane.setViewportView(table); JButton btnBookSelected = new JButton("Book SelectedOffer"); btnBookSelected.setBounds(127, 511, 178, 23); contentPane.add(btnBookSelected); JLabel lblNewLabel = new JLabel("Green: Suit your dates. Red: Do not suit your dates"); lblNewLabel.setEnabled(false); lblNewLabel.setBounds(152, 277, 261, 23); contentPane.add(lblNewLabel); Enumeration rhs = rh.getAllOffers().elements(); while(rhs.hasMoreElements()){ Offer of = rhs.nextElement(); Vector row = new Vector(); row.add(of.getOfferNumber()); row.add(of.getFirstDay()); row.add(of.getLastDay()); row.add(of.getPrice()); tableModel.addRow(row); } table.setDefaultRenderer(Object.class, new DefaultTableCellRenderer(){ @Override public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int col) { super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, col); Date firstDay = (Date) table.getModel().getValueAt(row, 1); Date lastDay = (Date) table.getModel().getValueAt(row, 2); if (FirstDay.before(firstDay)&&LastDay.after(lastDay)) { setBackground(Color.GREEN); setForeground(Color.BLACK); } else { setBackground(Color.RED); setForeground(Color.BLACK); } return this; } }); } }