/// <summary> /// Decide whether to update or ignore the row /// </summary> /// <param name="a"></param> /// <returns></returns> private String getAction(SessionAction.ACTION a) { switch (a) { case SessionAction.ACTION.DELETE: { return ACTION_UPDATE; } case SessionAction.ACTION.ADD: { return ACTION_UPDATE; } case SessionAction.ACTION.UPDATE: { return ACTION_UPDATE; } case SessionAction.ACTION.RENAME: { return ACTION_UPDATE; } case SessionAction.ACTION.NONE: { return ACTION_IGNORE; } default: { return ACTION_IGNORE; } } }
/// <summary> /// Get the values to populate each row of the table /// </summary> /// <param name="action">The session action to process</param> /// <returns>The row data</returns> private String[] getCellValues( SessionAction action ) { string sessionName = ""; string newSessionFolder = ""; string existingSessionFolder = ""; string newSessionHostname = ""; string existingSessionHostname = ""; string newProtocol = ""; string existingProtocol = ""; string newPort = ""; string existingPort = ""; if (action.NewSession != null) { sessionName = action.NewSession.SessionDisplayText; newSessionFolder = action.NewSession.FolderDisplayText; newSessionHostname = action.NewSession.Hostname; newProtocol = action.NewSession.Protocol; newPort = action.NewSession.Portnumber.ToString(); } if (action.ExistingSession != null) { if (action.Action != SessionAction.ACTION.RENAME) { sessionName = action.ExistingSession.SessionDisplayText; } else { sessionName = action.NewSession.SessionDisplayText + " [" + action.ExistingSession.SessionDisplayText + "]"; } existingSessionFolder = action.ExistingSession.FolderDisplayText; existingSessionHostname = action.ExistingSession.Hostname; existingProtocol = action.ExistingSession.Protocol; existingPort = action.ExistingSession.Portnumber.ToString(); } String[] cellValues = new String[] { sessionName , existingSessionFolder , newSessionFolder , existingSessionHostname , newSessionHostname , existingProtocol , newProtocol , existingPort , newPort , action.getActionDescription() , getAction(action.Action) }; return cellValues; }
/// <summary> /// Load sessions into the table /// </summary> /// <param name="ea"></param> public void LoadSessions(SyncSessionsLoadedEventArgs ea) { DataGridViewRow dgvr = null; sessionList = ea.SessionList; templateSession = ea.SessionTemplate; ignoreExistingSessions = ea.IgnoreExistingSessions; Dictionary<String,Session> sessionsDictionary = new Dictionary<string,Session>(); dataGridView1.SuspendLayout(); dataGridView1.Rows.Clear(); foreach (Session newSession in sessionList) { Session existingSession = sc.findSession(newSession); SessionAction action = new SessionAction(existingSession, newSession); // Make sure we skip over duplicate sessions if (!sessionsDictionary.ContainsKey(newSession.SessionKey)) { sessionsDictionary.Add(newSession.SessionKey, newSession); dgvr = new DataGridViewRow(); dgvr.CreateCells(dataGridView1, getCellValues(action)); dgvr.Tag = action; dataGridView1.Rows.Add(dgvr); } } if (ea.IgnoreExistingSessions == false) { foreach (Session existingSession in sc.getSessionList()) { if (!sessionsDictionary.ContainsKey(existingSession.SessionKey)) { SessionAction action = new SessionAction(existingSession, null); dgvr = new DataGridViewRow(); dgvr.CreateCells(dataGridView1, getCellValues(action)); dgvr.Tag = action; dataGridView1.Rows.Add(dgvr); } } } dataGridView1.ResumeLayout(); }