package gui; import businessLogic.ApplicationFacadeInterface; import com.toedter.calendar.*; import domain.Booking; import domain.RuralHouse; import exceptions.OfferCanNotBeBooked; import java.beans.*; import java.sql.Date; import java.text.*; import java.util.*; import javax.swing.*; import java.awt.*; import java.awt.event.*; public class BookRuralHouseGUI extends JFrame { private static final long serialVersionUID = 1L; private JLabel jLabel1 = new JLabel(); private JComboBox jComboBox1; private JLabel jLabel2 = new JLabel(); private JLabel jLabel3 = new JLabel(); private JLabel jLabel4 = new JLabel(); private JTextField jTextField2 = new JTextField(); private JTextField jTextField3 = new JTextField(); private JTextField jTextField4 = new JTextField(); private JButton jButton2 = new JButton(); private JButton jButton3 = new JButton(); // Code for JCalendar private JCalendar jCalendar1 = new JCalendar(); private Calendar myCalendar = null; private JLabel jLabel5 = new JLabel(); public BookRuralHouseGUI() { try { jbInit(); } catch(Exception e) { e.printStackTrace(); } } public BookRuralHouseGUI(int houseNumber, Date firstDay, Date lastDay) { try { jbInit(); /*jTextField1.setText(Integer.toString(houseNumber)); long nights=(lastDay.getTime()-firstDay.getTime())/(1000*60*60*24); jTextField3.setText(Long.toString(nights)); DateFormat dateformat1 = DateFormat.getDateInstance(1); Date first= new Date((long)(firstDay.getTime())); jTextField2.setText(dateformat1.format(first)); GregorianCalendar cal=new GregorianCalendar(); cal.setTime(first); int year=cal.get(Calendar.YEAR); int month=cal.get(Calendar.MONTH); int day=cal.get(Calendar.DAY_OF_MONTH); JYearChooser yc=jCalendar1.getYearChooser(); JMonthChooser mc= jCalendar1.getMonthChooser(); JDayChooser dc= jCalendar1.getDayChooser(); yc.setYear(year); mc.setMonth(month); dc.setDay(day); */ } catch(Exception e) { e.printStackTrace(); } } private void jbInit() throws Exception { this.getContentPane().setLayout(null); this.setSize(new Dimension(430, 440)); this.setTitle("Book Rural House"); jLabel1.setText("Rural house:"); ApplicationFacadeInterface facade=StartWindow.getBusinessLogic(); Vector ruralHouses=facade.getAllRuralHouses(); jComboBox1 = new JComboBox(ruralHouses); jLabel1.setBounds(new Rectangle(15, 10, 115, 20)); jComboBox1.setBounds(new Rectangle(120, 10, 175, 20)); jTextField3.addFocusListener(new FocusListener() { public void focusGained(FocusEvent e) {} public void focusLost(FocusEvent e) { jTextField3_focusLost(); } }); jTextField4.addFocusListener(new FocusListener() { public void focusGained(FocusEvent e) { } public void focusLost(FocusEvent e) { jTextField4_focusLost(); } }); jLabel2.setText("Arrival day:"); jLabel2.setBounds(new Rectangle(15, 40, 115, 20)); jLabel3.setText("Number of nights:"); jLabel3.setBounds(new Rectangle(15, 240, 115, 20)); jLabel4.setText("Telephone contact number:"); jLabel4.setBounds(new Rectangle(15, 270, 140, 20)); jTextField2.setBounds(new Rectangle(155, 205, 140, 20)); jTextField2.setEditable(false); jTextField3.setBounds(new Rectangle(155, 240, 140, 20)); jTextField3.setText("0"); jTextField4.setBounds(new Rectangle(155, 270, 140, 20)); jTextField4.setText("0"); jButton2.setText("Accept"); jButton2.setBounds(new Rectangle(50, 345, 130, 30)); jButton2.setSize(new Dimension(130, 30)); jButton2.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { // House code RuralHouse house=(RuralHouse)jComboBox1.getSelectedItem(); // Arrival date Date firstDay= new Date(jCalendar1.getCalendar().getTime().getTime()); firstDay=Date.valueOf(firstDay.toString()); // Last day // Number of days expressed in milliseconds long nights=1000*60*60*24* Integer.parseInt(jTextField3.getText()); Date lastDay= new Date((long)(firstDay.getTime()+nights)); // Contact telephone String telephone=jTextField4.getText(); try { //Obtain the business logic from a StartWindow class (local or remote) ApplicationFacadeInterface facade=StartWindow.getBusinessLogic(); Booking book=facade.createBooking(house, firstDay, lastDay, telephone); System.out.println(book.getPrice()); if (book!=null) { BookRuralHouseConfirmationWindow confirmWindow=new BookRuralHouseConfirmationWindow(book); confirmWindow.setVisible(true); } } catch (OfferCanNotBeBooked e1) { jLabel5.setText("Error: Booking is not possible"); JFrame a = new SearchOffersGUI(); a.setVisible(true); } catch (Exception e1) { e1.printStackTrace(); } } }); jButton3.setText("Cancel"); jButton3.setBounds(new Rectangle(220, 345, 130, 30)); jButton3.setSize(new Dimension(130, 30)); jButton3.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { jButton3_actionPerformed(e); } }); jLabel5.setBounds(new Rectangle(50, 310, 300, 20)); jLabel5.setForeground(Color.red); jCalendar1.setBounds(new Rectangle(155, 50, 235, 145)); this.getContentPane().add(jCalendar1, null); this.getContentPane().add(jLabel5, null); this.getContentPane().add(jButton3, null); this.getContentPane().add(jButton2, null); this.getContentPane().add(jTextField4, null); this.getContentPane().add(jTextField3, null); this.getContentPane().add(jTextField2, null); this.getContentPane().add(jLabel4, null); this.getContentPane().add(jLabel3, null); this.getContentPane().add(jLabel2, null); this.getContentPane().add(jComboBox1, null); this.getContentPane().add(jLabel1, null); // Code for JCalendar this.jCalendar1.addPropertyChangeListener(new PropertyChangeListener() { public void propertyChange(PropertyChangeEvent propertychangeevent) { if (propertychangeevent.getPropertyName().equals("locale")) { jCalendar1.setLocale((Locale) propertychangeevent.getNewValue()); DateFormat dateformat = DateFormat.getDateInstance(1, jCalendar1.getLocale()); jTextField2.setText(dateformat.format(myCalendar.getTime())); } else if (propertychangeevent.getPropertyName().equals("calendar")) { myCalendar = (Calendar) propertychangeevent.getNewValue(); DateFormat dateformat1 = DateFormat.getDateInstance(1, jCalendar1.getLocale()); jTextField2.setText(dateformat1.format(myCalendar.getTime())); jCalendar1.setCalendar(myCalendar); } } }); } private void jButton3_actionPerformed(ActionEvent e) { this.setVisible(false); } private void jTextField3_focusLost() { try { new Integer (jTextField3.getText()); jLabel5.setText(""); } catch (NumberFormatException ex) { jLabel5.setText("Error: Please introduce a number"); } } private void jTextField4_focusLost() { try { new Integer (jTextField4.getText()); jLabel5.setText(""); } catch (NumberFormatException ex) { jLabel5.setText("Error: Please introduce a number"); } } }