4 import java.awt.Component;
5 import java.awt.event.ActionEvent;
6 import java.awt.event.ActionListener;
7 import java.awt.event.MouseAdapter;
8 import java.awt.event.MouseEvent;
10 import java.util.Enumeration;
11 import java.util.Vector;
13 import javax.swing.JButton;
14 import javax.swing.JFrame;
15 import javax.swing.JLabel;
16 import javax.swing.JPanel;
17 import javax.swing.JScrollPane;
18 import javax.swing.JTable;
19 import javax.swing.JTextField;
20 import javax.swing.SwingConstants;
21 import javax.swing.border.EmptyBorder;
22 import javax.swing.table.DefaultTableCellRenderer;
23 import javax.swing.table.DefaultTableModel;
25 import businessLogic.BookingManager;
26 import domain.Booking;
29 import domain.RuralHouse;
31 public class HouseFeaturesGUI extends JFrame {
36 private static final long serialVersionUID = 1L;
37 private JPanel contentPane;
38 private JLabel lblDistrict;
39 private JTextField District_f;
40 private JLabel lblDescription;
41 private JTextField description_f;
42 private JLabel lblKitchen;
43 private JTextField kitchens_f;
44 private JLabel lblRooms;
45 private JTextField rooms_f;
46 private JLabel lblLivings;
47 private JTextField lRooms_f;
48 private JLabel lblParkings;
49 private JTextField parkings_f;
50 private JLabel lblBaths;
51 private JTextField baths_f;
53 private DefaultTableModel tableModel;
54 private RuralHouse rh;
55 private JTextField telIn;
57 private JLabel labelPhone;
58 private JLabel lblName;
59 private JTextField nameField;
60 private JLabel lblEmail;
61 private JTextField mailField;
67 public HouseFeaturesGUI(RuralHouse RH, final Date FirstDay,
70 this.getContentPane().setLayout(null);
71 setBounds(100, 100, 500, 700);
72 contentPane = new JPanel();
73 contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
74 setContentPane(contentPane);
76 lblDistrict = new JLabel("District:");
77 lblDistrict.setBounds(23, 67, 70, 14);
78 lblDistrict.setHorizontalAlignment(SwingConstants.RIGHT);
80 District_f = new JTextField();
81 District_f.setEditable(false);
82 District_f.setBounds(103, 64, 86, 20);
83 District_f.setColumns(10);
85 lblDescription = new JLabel("Description:");
86 lblDescription.setBounds(215, 67, 90, 14);
87 lblDescription.setHorizontalAlignment(SwingConstants.RIGHT);
89 description_f = new JTextField();
90 description_f.setEditable(false);
91 description_f.setBounds(238, 99, 178, 129);
92 description_f.setColumns(10);
94 lblKitchen = new JLabel("Kitchens:");
95 lblKitchen.setBounds(23, 211, 70, 14);
96 lblKitchen.setHorizontalAlignment(SwingConstants.RIGHT);
98 kitchens_f = new JTextField();
99 kitchens_f.setEditable(false);
100 kitchens_f.setBounds(103, 202, 86, 20);
101 kitchens_f.setColumns(10);
103 lblRooms = new JLabel("Rooms:");
104 lblRooms.setBounds(23, 102, 70, 14);
105 lblRooms.setHorizontalAlignment(SwingConstants.RIGHT);
107 rooms_f = new JTextField();
108 rooms_f.setEditable(false);
109 rooms_f.setBounds(103, 99, 86, 20);
110 rooms_f.setColumns(10);
112 lblLivings = new JLabel("Living rooms:");
113 lblLivings.setBounds(30, 236, 63, 14);
114 lblLivings.setHorizontalAlignment(SwingConstants.RIGHT);
116 lRooms_f = new JTextField();
117 lRooms_f.setEditable(false);
118 lRooms_f.setBounds(103, 233, 86, 20);
119 lRooms_f.setColumns(10);
121 lblParkings = new JLabel("Parkings:");
122 lblParkings.setBounds(23, 174, 70, 14);
123 lblParkings.setHorizontalAlignment(SwingConstants.RIGHT);
125 parkings_f = new JTextField();
126 parkings_f.setEditable(false);
127 parkings_f.setBounds(103, 171, 86, 20);
128 parkings_f.setColumns(10);
130 lblBaths = new JLabel("Baths:");
131 lblBaths.setBounds(23, 143, 70, 14);
132 lblBaths.setHorizontalAlignment(SwingConstants.RIGHT);
134 baths_f = new JTextField();
135 baths_f.setEditable(false);
136 baths_f.setBounds(103, 140, 86, 20);
137 baths_f.setColumns(10);
138 contentPane.setLayout(null);
139 contentPane.add(lblParkings);
140 contentPane.add(parkings_f);
141 contentPane.add(lblRooms);
142 contentPane.add(rooms_f);
143 contentPane.add(lblBaths);
144 contentPane.add(baths_f);
145 contentPane.add(lblDistrict);
146 contentPane.add(District_f);
147 contentPane.add(lblLivings);
148 contentPane.add(lRooms_f);
149 contentPane.add(lblKitchen);
150 contentPane.add(kitchens_f);
151 contentPane.add(description_f);
152 contentPane.add(lblDescription);
153 parkings_f.setText(Integer.toString(rh.getFeatures().getnParkings()));
154 rooms_f.setText(Integer.toString(rh.getFeatures().getnRooms()));
155 baths_f.setText(Integer.toString(rh.getFeatures().getnBaths()));
156 District_f.setText(rh.getDistrict());
157 kitchens_f.setText(Integer.toString(rh.getFeatures().getnKitchens()));
158 description_f.setText(rh.getDescription());
159 lRooms_f.setText(Integer.toString(rh.getFeatures().getnLivings()));
160 JLabel lblAvailbleOffers = new JLabel("Availble Offers:");
161 lblAvailbleOffers.setBounds(30, 286, 86, 14);
162 contentPane.add(lblAvailbleOffers);
163 JScrollPane scrollPane = new JScrollPane();
164 scrollPane.setBounds(40, 311, 376, 183);
165 contentPane.add(scrollPane);
167 table = new JTable() {
168 private static final long serialVersionUID = 1L;
170 public boolean isCellEditable(int row, int column) {
174 tableModel = new DefaultTableModel(null, new String[] { "Offer #",
175 "FirstDay", "LastDay", "Price" });
176 table.setModel(tableModel);
177 scrollPane.setViewportView(table);
179 JButton btnBookSelected = new JButton("Book SelectedOffer");
180 btnBookSelected.setBounds(238, 614, 178, 23);
181 contentPane.add(btnBookSelected);
183 btnBookSelected.addActionListener(new ActionListener() {
184 public void actionPerformed(ActionEvent arg0) {
186 jButton_ActionPerformed(arg0);
191 JLabel lblNewLabel = new JLabel(
192 "Green: Suit your dates. Red: Do not suit your dates");
193 lblNewLabel.setEnabled(false);
194 lblNewLabel.setBounds(170, 282, 261, 23);
195 contentPane.add(lblNewLabel);
197 JLabel lblNewLabel_1 = new JLabel("Telephone num:");
198 lblNewLabel_1.setBounds(10, 618, 83, 14);
199 contentPane.add(lblNewLabel_1);
201 telIn = new JTextField();
202 telIn.setBounds(103, 615, 129, 20);
203 contentPane.add(telIn);
204 telIn.setColumns(10);
206 labelPhone = new JLabel("");
207 labelPhone.setBounds(238, 252, 178, 14);
208 contentPane.add(labelPhone);
210 lblName = new JLabel("Name:");
211 lblName.setBounds(10, 516, 46, 14);
212 contentPane.add(lblName);
214 nameField = new JTextField();
215 nameField.setBounds(103, 513, 178, 20);
216 contentPane.add(nameField);
217 nameField.setColumns(10);
219 lblEmail = new JLabel("E-mail:");
220 lblEmail.setBounds(10, 565, 46, 14);
221 contentPane.add(lblEmail);
223 mailField = new JTextField();
224 mailField.setBounds(103, 562, 178, 20);
225 contentPane.add(mailField);
226 mailField.setColumns(10);
228 table.addMouseListener(new MouseAdapter() {
230 public void mouseClicked(MouseEvent arg0) {
231 row = table.getSelectedRow();
234 Enumeration<Offer> rhs = rh.getAllOffers().elements();
235 while (rhs.hasMoreElements()) {
236 Offer of = rhs.nextElement();
237 if (of.getBookings() == null
238 || !(of.getBookings().size() == 1 && of.isBooked())) {
239 Vector<Object> row = new Vector<Object>();
240 row.add(of.getOfferNumber());
241 row.add(of.getFirstDay());
242 row.add(of.getLastDay());
243 row.add(of.getPrice());
244 tableModel.addRow(row);
247 table.setDefaultRenderer(Object.class, new DefaultTableCellRenderer() {
251 private static final long serialVersionUID = 1L;
254 public Component getTableCellRendererComponent(JTable table,
255 Object value, boolean isSelected, boolean hasFocus,
258 super.getTableCellRendererComponent(table, value, isSelected,
261 Date firstDay = (Date) table.getModel().getValueAt(row, 1);
262 Date lastDay = (Date) table.getModel().getValueAt(row, 2);
263 if (FirstDay != null && LastDay != null) {
264 if (LastDay.before(lastDay) || FirstDay.after(firstDay)) {
265 setBackground(Color.RED);
266 setForeground(Color.BLACK);
268 setBackground(Color.GREEN);
269 setForeground(Color.BLACK);
277 private void jButton_ActionPerformed(ActionEvent arg0) {
278 BookingManager bookingM = new BookingManager();
280 if (telIn.getText().matches("[976]\\d{2}[.\\- ]?\\d{3}[.\\- ]?\\d{3}")
284 "^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$")
285 && !nameField.getText().isEmpty()) {
286 labelPhone.setText("");
287 Vector<Booking> book = null;
289 if (table.getRowCount() != 0) {
290 Client cl = new Client(nameField.getText(),
291 mailField.getText(), telIn.getText());
292 book = bookingM.createBooking(rh, rh.offers.get(row)
293 .getFirstDay(), rh.offers.get(row).getLastDay(),cl);
295 } catch (Exception e) {
299 BookRuralHouseConfirmationWindow confirmWindow = new BookRuralHouseConfirmationWindow(
301 confirmWindow.setVisible(true);
304 labelPhone.setText("Bad formatted data.");