/// <summary>
        /// 
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        /// <returns></returns>
        public int syncSessions(BackgroundWorker worker, SyncSessionsRequestedEventArgs e)
        {
            int modifiedCount = 0;
            List<Session> delList = new List<Session>();

            // Disable session refreshes
            BeginUpdate();

            foreach ( SessionAction sa in e.SessionActionList )
            {

                if ( sa.Action == SessionAction.ACTION.ADD )
                {
                    NewSessionRequest nsr = new NewSessionRequest(e.SessionTemplate
                                                                , sa.NewSession.FolderName
                                                                , sa.NewSession.Hostname
                                                                , sa.NewSession.SessionDisplayText
                                                                , sa.NewSession.Protocol
                                                                , sa.NewSession.Portnumber
                                                                , true, false);
                    createNewSession(nsr, worker);
                }
                else if ( sa.Action == SessionAction.ACTION.DELETE )
                {
                    delList.Add(sa.ExistingSession);
                }
                else if ( sa.Action == SessionAction.ACTION.UPDATE )
                {
                    Session existingSession = findSession(sa.NewSession);
                    if (existingSession != null)
                    {
                        sessionProvider.updateHostname(sa.NewSession);
                        sessionProvider.updateFolder(sa.NewSession);
                        sessionProvider.updateProtocol(sa.NewSession);
                        sessionProvider.updatePortnumber(sa.NewSession);
                    }
                }
                else if (sa.Action == SessionAction.ACTION.RENAME)
                {
                    Session existingSession = findSession(sa.ExistingSession);
                    sessionProvider.renameSession(existingSession, sa.NewSession.SessionDisplayText);
                    existingSession.FolderName = sa.NewSession.FolderName;
                    sessionProvider.updateFolder(existingSession);
                }
                modifiedCount++;
                worker.ReportProgress(modifiedCount);
            }

            if (delList.Count > 0)
                deleteSessions(delList, worker);

            worker.ReportProgress(e.SessionActionList.Count);

            // Re-enable session refreshes
            EndUpdate();

            return modifiedCount;
        }
 /// <summary>
 /// Fire the SyncSessionsRequested event
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 protected virtual void OnSyncSessionsRequested(Object sender, SyncSessionsRequestedEventArgs e)
 {
     if (SyncSessionsRequested != null)
         SyncSessionsRequested(sender, e);
 }
 /// <summary>
 /// 
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void syncButton_Click(object sender, EventArgs e)
 {
     SyncSessionsRequestedEventArgs ssre = new SyncSessionsRequestedEventArgs(getSessionsToUpdate(),templateSession,ignoreExistingSessions);
     if ( ssre.SessionActionList.Count > 0 )
         OnSyncSessionsRequested(this, ssre);
     else
         MessageBox.Show("No sessions selected for modification"
             , "Warning"
             , MessageBoxButtons.OK
             , MessageBoxIcon.Warning);
 }
        private void tableControl1_SyncSessionsRequested(object sender, SyncSessionsRequestedEventArgs e)
        {
            // Double check that the template session still exists
            // or else that will cause issues later
            if (sc.findSession(e.SessionTemplate) == null)
            {
                MessageBox.Show("Template session:\n" + e.SessionTemplate.SessionDisplayText
                    + "\nhas been removed.\n"
                    + "Please clear your selection and try again."
                    , "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            // Attempt to backup the existing sessions
            DialogResult dr = backupSessions(sc.getSessionList());
            if (( dr == DialogResult.Yes ) ||
                ( dr == DialogResult.No) )
            {
                sessionsCount = e.SessionActionList.Count;
                progressDialog.reset(sessionsCount);

                backgroundWorker.RunWorkerAsync(e);
            }
        }