/// <summary>
        /// This method is called when user click on the sync button
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void ButtonSync_Click(object sender, RoutedEventArgs e)
        {
            debugLogger.LogMessage(actualLeftPath, actualRightPath, "ButtonSync_Click()", "Sync button clicked");

            // do a check one more time
            // handle the situation when after a sync job is setup,
            // user deletes the 2 folders n click sync again
            if (!ShowSync())
                return;

            bool leftDirectoryAccessible = IsDirectoryAccessible(actualLeftPath);
            bool rightDirectoryAccessible = IsDirectoryAccessible(actualRightPath);
            if (leftDirectoryAccessible && rightDirectoryAccessible)
            {

                // Check if exclude window is enabled in settings
                int excludeWindowStatus = settingsManager.GetExcludeWindowStatus(); // 0 for disabled, 1 for enabled, -1 for error
                if (excludeWindowStatus == 1)
                {
                    debugLogger.LogMessage(actualLeftPath, actualRightPath, "ButtonSync_Click()", "Opening Exclude Window");

                    EnableInterface(false);
                    excludeWindow = new ExcludeWindow();
                    excludeWindow.Closing += new CancelEventHandler(excludeWindow_Closing);
                    excludeWindow.LeftPath = actualLeftPath;
                    excludeWindow.RightPath = actualRightPath;
                    excludeWindow.Owner = mainWindow;
                    excludeWindow.LoadExcludeData();
                    excludeWindow.LogError += new ExcludeWindow.LogHandler(excludeWindow_LogError);
                    mainWindow.Opacity = 0.2;
                    excludeWindow.ShowDialog();
                }
                else if (excludeWindowStatus == 0)
                {
                    // Make necessary changes to UI to prepare for sync
                    LeftListBox.Visibility = Visibility.Hidden;
                    RightListBox.Visibility = Visibility.Hidden;
                    LabelProgress.Visibility = Visibility.Visible;
                    LabelProgress.Content = MESSAGE_PREPARING_FOLDERS;
                    EnableInterface(false);

                    // Feed the actualleftpath and actualrightpath into SyncEngine again
                    // Safety precaution
                    synchronizer.LeftPath = actualLeftPath;
                    synchronizer.RightPath = actualRightPath;

                    // Do PreSync Calculations: count how many changes need to be done
                    // If not enough disk space, return
                    // If enough, continue to start the real sync
                    excludeData = new ExcludeData();
                    synchronizer.ExcludeData = excludeData;
                    synchronizer.PreSync();
                }
                else
                {
                    //Do nothing if -1
                }
            }
            else
            {
                string rightsString = nsync.Properties.Resources.accessRightsInsufficient;
                if (!leftDirectoryAccessible)
                    rightsString += "\n" + ShortenPath(actualLeftPath, 50);
                if (!rightDirectoryAccessible)
                    rightsString += "\n" + ShortenPath(actualRightPath, 50);
                helper.Show(rightsString, HELPER_WINDOW_HIGH_PRIORITY, HelperWindow.windowStartPosition.windowTop);
                LabelProgress.Content = MESSAGE_ERROR_DETECTED;
                LabelProgress.Visibility = Visibility.Visible;
            }
        }
 /// <summary>
 /// References ExcludeWindow (Overloaded Method) 
 /// </summary>
 public void SetOwnerWindow(ExcludeWindow excludeWindow)
 {
     this.excludeWindow = excludeWindow;
 }