public static PersistenceHandler GetInstance(PersistenceMethod method) { switch (method) { case PersistenceMethod.CookieBased: return(new CookieHandler()); default: case PersistenceMethod.SessionBased: return(new SessionHandler()); } }
/// <summary> /// Gets the GridViewSearchPanel State from the cookie /// </summary> /// <param name="controlStateName">Name of the control state.</param> /// <param name="persistenceMethod">The persistent method.</param> /// <returns></returns> public static GridViewSearchPanelState GetGridViewSearchPanelState( string controlStateName, PersistenceMethod persistenceMethod ) { GridViewSearchPanelState controlState = null; switch ( persistenceMethod ) { case PersistenceMethod.Session : #region Uses Session state if ( HttpContext.Current.Session[ controlStateName ] != null ) { controlState = HttpContext.Current.Session[ controlStateName ] as GridViewSearchPanelState; } #endregion break; case PersistenceMethod.Cookie : case PersistenceMethod.PersistentCookie : #region Uses a client session cookie HttpCookie cookie = HttpContext.Current.Request.Cookies[ controlStateName ]; if ( cookie != null ) { controlState = DeserializeGridViewSearchPanelState( HttpContext.Current.Server.UrlDecode( cookie.Value ) ); } #endregion break; } return controlState; }
/// <summary> /// Saves the GridViewSearchPanel State. /// </summary> /// <param name="controlState">State of the control.</param> /// <param name="controlStateName">Name of the control state.</param> /// <param name="persistenceMethod">The persistent method.</param> /// <param name="persistentCookieExpiryDateTime">The persistent cookie expiry datetime.</param> public static void SaveGridViewSearchPanelState( GridViewSearchPanelState controlState, string controlStateName, PersistenceMethod persistenceMethod, DateTime? persistentCookieExpiryDateTime ) { switch ( persistenceMethod ) { case PersistenceMethod.Session : #region Uses Session state HttpContext.Current.Session[ controlStateName ] = controlState; #endregion break; case PersistenceMethod.Cookie : case PersistenceMethod.PersistentCookie : #region Uses a client cookie string serializedString = SerializeGridViewSearchPanelState( controlState ); HttpCookie cookie = new HttpCookie( controlStateName, HttpContext.Current.Server.UrlEncode( serializedString ) ); // Determine if this should be persisted longer than just the current session if ( persistentCookieExpiryDateTime != null ) { cookie.Expires = persistentCookieExpiryDateTime.Value; } HttpContext.Current.Response.Cookies.Add( cookie ); #endregion break; } }
/// <summary> /// Handles the state of the GridViewSearchPanel /// </summary> /// <param name="searchPanel">The search panel.</param> /// <param name="gridView">The grid view.</param> /// <param name="persistenceMethod">The persistence method</param> /// <param name="persistentCookieExpiryDateTime">The date and time the persistent cookie expires</param> public static void HandleGridViewSearchPanelState( GridViewSearchPanel searchPanel, GridView gridView, PersistenceMethod persistenceMethod, DateTime? persistentCookieExpiryDateTime ) { if ( gridView == null ) { // try and find the GridView control if it hasn't been explicitly supplied gridView = FindControl( searchPanel.NamingContainer, searchPanel.GridViewControlID ) as GridView; } if ( gridView != null ) { // restore any previously saved state gridView.Page.Load += new EventHandler( delegate( object sender, EventArgs e ) { if ( !gridView.Page.IsPostBack ) { GridViewSearchPanelState controlState = GetGridViewSearchPanelState( GetUniqueGridViewName( gridView ), persistenceMethod ); if ( controlState != null ) { controlState.RestoreState( ref gridView, ref searchPanel ); } } } ); // save state on row command, and rebind searchPanel gridView.RowCommand += new GridViewCommandEventHandler( delegate(object sender, GridViewCommandEventArgs e) { GridViewSearchPanelState controlState = new GridViewSearchPanelState(gridView, searchPanel); SaveGridViewSearchPanelState(controlState, GetUniqueGridViewName(gridView), persistenceMethod, persistentCookieExpiryDateTime); searchPanel.DataBind(); } ); // save state when page index changes gridView.PageIndexChanged += new EventHandler( delegate( object sender, EventArgs e ) { GridViewSearchPanelState controlState = new GridViewSearchPanelState( gridView, searchPanel ); SaveGridViewSearchPanelState( controlState, GetUniqueGridViewName( gridView ), persistenceMethod, persistentCookieExpiryDateTime ); } ); // save state when grid is sorted gridView.Sorted += new EventHandler( delegate( object sender, EventArgs e ) { GridViewSearchPanelState controlState = new GridViewSearchPanelState( gridView, searchPanel ); SaveGridViewSearchPanelState( controlState, GetUniqueGridViewName( gridView ), persistenceMethod, persistentCookieExpiryDateTime ); } ); if (gridView is EntityGridView) { // save state when grid's page size changed ((EntityGridView)gridView).PageSizeChanged += new EventHandler( delegate(object sender, EventArgs e) { GridViewSearchPanelState controlState = new GridViewSearchPanelState(gridView, searchPanel); SaveGridViewSearchPanelState(controlState, GetUniqueGridViewName(gridView), persistenceMethod, persistentCookieExpiryDateTime); } ); } // save state when search id done searchPanel.SearchButtonClicked += new EventHandler( delegate( object sender, EventArgs e ) { GridViewSearchPanelState controlState = new GridViewSearchPanelState( gridView, searchPanel ); SaveGridViewSearchPanelState( controlState, GetUniqueGridViewName( gridView ), persistenceMethod, persistentCookieExpiryDateTime ); } ); // save state when reset is done searchPanel.ResetButtonClicked += new EventHandler( delegate( object sender, EventArgs e ) { GridViewSearchPanelState controlState = new GridViewSearchPanelState( gridView, searchPanel ); SaveGridViewSearchPanelState(controlState, GetUniqueGridViewName(gridView), persistenceMethod, persistentCookieExpiryDateTime); } ); } }
/// <summary> /// Handles the state of the GridViewSearchPanel /// </summary> /// <param name="searchPanel">The search panel.</param> /// <param name="persistenceMethod">The persistence method.</param> public static void HandleGridViewSearchPanelState( GridViewSearchPanel searchPanel, PersistenceMethod persistenceMethod ) { HandleGridViewSearchPanelState( searchPanel, null, persistenceMethod, null ); }
public bool Save(bool forceSaveAs) { if (this.book == null) { return false; } var saveMethod = this.currentSaveMethod; while (true) { if (forceSaveAs || saveMethod == null) { var plugins = this.GetPersistenceStrategies(); using (var selector = new PersistencePluginSelector(plugins)) { var result = selector.ShowDialog(); if (result == DialogResult.Cancel) { return false; } var factory = selector.StrategyFactory; saveMethod = new PersistenceMethod(factory.CreateInstance(), null); } saveMethod.Uri = saveMethod.Strategy.SaveAs(saveMethod.Uri); if (saveMethod.Uri == null) { return false; } } forceSaveAs = true; try { saveMethod.Strategy.SetDestination(saveMethod.Uri); saveMethod.Strategy.Save(this.book); this.currentSaveMethod = saveMethod; return true; } catch (Exception ex) { var result = MessageBox.Show(ex.ToString(), "Error Saving", MessageBoxButtons.RetryCancel); if (result == DialogResult.Cancel) { return false; } } } }
public bool Close() { if (this.book != null) // TODO: If the book has unsaved changes. { var result = MessageBox.Show("Save changes to your current book?", "Unsaved Changes", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question); if (result == DialogResult.Cancel) { return false; } else if (result == DialogResult.Yes) { var success = this.Save(forceSaveAs: false); if (!success) { return false; } } } this.currentSaveMethod = null; this.SetBook(null); return true; }
public void VerifyRandomEnumValue() { //Arrange var theEnum = new PersistenceMethod(); //Act var result = Randomator.RandomEnumValue(theEnum); //Assert Assert.IsTrue(result.GetType() == theEnum.GetType()); }