コード例 #1
0
        public static PersistenceHandler GetInstance(PersistenceMethod method)
        {
            switch (method)
            {
            case PersistenceMethod.CookieBased:
                return(new CookieHandler());

            default:
            case PersistenceMethod.SessionBased:
                return(new SessionHandler());
            }
        }
コード例 #2
0
        /// <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;
        }
コード例 #3
0
        /// <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;
			}
        }
コード例 #4
0
        /// <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);
                    }
                );
            }
        }
コード例 #5
0
		/// <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 );
		}
コード例 #6
0
ファイル: MainController.cs プロジェクト: otac0n/SharpBooks
        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;
                    }
                }
            }
        }
コード例 #7
0
ファイル: MainController.cs プロジェクト: otac0n/SharpBooks
        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;
        }
コード例 #8
0
        public void VerifyRandomEnumValue()
        {
            //Arrange
            var theEnum = new PersistenceMethod();

            //Act
            var result = Randomator.RandomEnumValue(theEnum);

            //Assert
            Assert.IsTrue(result.GetType() == theEnum.GetType());
        }