/*
  * Refreshes all fields displayed in the window according to
  * current system objects states.
  */
 private void refreshDisplay()
 {
     if (mFacade.IsABookingLoaded())
     {
         clearDisplay();
         refreshBookingDisplay();
         refreshCustomerDisplay();
         refreshGuestsDisplay();
     }
 }
        /*
         * Refreshes all booking detail fields displayed in the window
         * according to current booking state.
         */
        private void refreshBookDetailDisplay()
        {
            if (mFacade.IsABookingLoaded())
            {
                // update field contents:
                DateTime start;
                DateTime end;
                mFacade.GetCurrentBookDates(out start, out end);
                lblArrivalValue.Content   = start.ToString().Substring(0, 10);
                lblDepartureValue.Content = end.ToString().Substring(0, 10);
                lblCustNameValue.Content  = mFacade.GetCurrentCustName();
                lstGuests.Items.Clear();

                foreach (String g in mFacade.GetGuestNames())
                {
                    lstGuests.Items.Add(g);
                }

                // make labels visible:
                lblArrivalValue.Visibility   = Visibility.Visible;
                lblDepartureValue.Visibility = Visibility.Visible;
                lblCustNameValue.Visibility  = Visibility.Visible;
            }
            else
            {
                refreshDisplay();
            }
        }
 /*
  * Checks if the booking can be saved or updated on the basis of
  * window field values, and acts accordingly (closes the window,
  * except if the booking was a new one).
  */
 private void btnSave_Click(object sender, RoutedEventArgs e)
 {
     if (areAllValuesValid())
     {
         if (!mFacade.IsABookingLoaded())
         {
             mFacade.CreateBooking((DateTime)dtpArrival.SelectedDate,
                                   (DateTime)dtpDeparture.SelectedDate);
             mFacade.PersistCurrentBooking();
             refreshDisplay();
         }
         else
         {
             mFacade.UpdateBooking((DateTime)dtpArrival.SelectedDate,
                                   (DateTime)dtpDeparture.SelectedDate);
             mFacade.PersistCurrentBooking();
         }
     }
 }
        // METHODS:

        /*
         * The window constructor.
         */
        public WindowCreateEdit(ModelFacade modelFacade)
        {
            this.mFacade = modelFacade;

            InitializeComponent();
            lblBookingRef.Content = "Booking number\r\n";

            if (!mFacade.IsABookingLoaded())
            {
                clearDisplay();
            }
            else
            {
                lblBookingRef.Content += mFacade.GetCurrentBookNb()
                                         .ToString();
                refreshDisplay();
            }
        }