Example #1
0
        /// <summary>
        /// 应用新状态的修改
        /// </summary>
        /// <param name="newState">新状态</param>
        /// <param name="changeType">状态变换种类</param>
        /// <param name="isNeededKeyCheck"></param>
        /// <returns>应用是否成功</returns>
        protected bool Apply(MaskManagerState newState, StateChangeType changeType, bool isNeededKeyCheck)
        {
            if (!IsValid(newState))
            {
                return(false);
            }
            if (newState.IsSame(CurrentState))
            {
                return(false);
            }
            string editText = GetEditText(newState);

            if (!isNeededKeyCheck)
            {
                if (GetCurrentEditText() != editText)
                {
                    if (!RaiseEditTextChanging(editText))
                    {
                        return(false);
                    }
                    ApplyInternal(newState, changeType);
                    base.RaiseEditTextChanged();
                }
                else
                {
                    ApplyInternal(newState, changeType);
                }
            }
            return(true);
        }
Example #2
0
 /// <summary>
 /// 记录状态及状态变换类别
 /// </summary>
 /// <param name="newState"></param>
 /// <param name="changeType"></param>
 void ApplyInternal(MaskManagerState newState, StateChangeType changeType)
 {
     if (backupType != changeType)
     {
         if (changeType != StateChangeType.Terminator)
         {
             backupState = currentState;
         }
         backupType = changeType;
     }
     currentState = newState;
 }
Example #3
0
 /// <summary>
 /// 同步状态缓存
 /// </summary>
 void VerifyCache()
 {
     if (!object.ReferenceEquals(cachedDState, CurrentState))
     {
         cachedDState = CurrentState;
         // 光标位置
         cachedDCP = -1;
         // 选中区域的起始位置
         cachedDSA = -1;
         // 显示文本
         cachedDT = null;
     }
 }
Example #4
0
        /// <summary>
        /// 撤消操作
        /// </summary>
        /// <returns></returns>
        public override bool Undo()
        {
            if (!CanUndo)
            {
                return(false);
            }
            if (!RaiseEditTextChanging(GetEditText(backupState)))
            {
                return(false);
            }
            backupType = StateChangeType.Terminator;
            MaskManagerState currentState = this.currentState;

            currentState = backupState;
            backupState  = currentState;
            base.RaiseEditTextChanged();
            return(true);
        }
Example #5
0
 /// <summary>
 /// 根据给的掩码状态构造掩码员
 /// </summary>
 /// <param name="initialState"></param>
 protected MaskManagerStated(MaskManagerState initialState)
 {
     SetInitialState(initialState);
 }
Example #6
0
 /// <summary>
 /// 是否有效
 /// </summary>
 /// <param name="newState"></param>
 /// <returns></returns>
 protected virtual bool IsValid(MaskManagerState newState)
 {
     return(true);
 }
Example #7
0
 /// <summary>
 /// 选择区域的起始位置
 /// </summary>
 /// <param name="state"></param>
 /// <returns></returns>
 protected abstract int GetSelectionAnchor(MaskManagerState state);
Example #8
0
 /// <summary>
 /// 获取给定掩码状态的显示文本
 /// </summary>
 /// <param name="state"></param>
 /// <returns></returns>
 protected abstract string GetDisplayText(MaskManagerState state);
Example #9
0
 /// <summary>
 /// 根据掩码状态获取当前光标位置
 /// </summary>
 /// <param name="state"></param>
 /// <returns></returns>
 protected abstract int GetCursorPosition(MaskManagerState state);
Example #10
0
 /// <summary>
 /// 根据掩码状态获取当前文本
 /// </summary>
 /// <returns></returns>
 protected abstract string GetEditText(MaskManagerState state);
Example #11
0
 /// <summary>
 /// 根据掩码状态获取当前值
 /// </summary>
 /// <returns></returns>
 protected abstract object GetEditValue(MaskManagerState state);
Example #12
0
 /// <summary>
 /// 应用新状态的修改
 /// </summary>
 /// <param name="newState">新状态</param>
 /// <param name="changeType">状态变换种类</param>
 /// <returns>应用是否成功</returns>
 protected bool Apply(MaskManagerState newState, StateChangeType changeType)
 {
     return(Apply(newState, changeType, false));
 }
Example #13
0
 /// <summary>
 /// 设置初始掩码状态
 /// </summary>
 /// <param name="newState"></param>
 protected void SetInitialState(MaskManagerState newState)
 {
     backupState  = null;
     currentState = newState;
     backupType   = StateChangeType.Terminator;
 }
Example #14
0
 /// <summary>
 /// 比较掩码状态是否和当前状态相同
 /// </summary>
 /// <param name="comparedState">掩码状态实例</param>
 /// <returns></returns>
 public abstract bool IsSame(MaskManagerState comparedState);
Example #15
0
 /// <summary>
 /// 比较掩码状态是否和当前状态相同
 /// </summary>
 /// <param name="comparedState">掩码状态实例</param>
 /// <returns></returns>
 public override bool IsSame(MaskManagerState comparedState)
 {
     return((base.IsSame(comparedState) && (this.IsNegative == ((NumericMaskManagerState)comparedState).IsNegative)) && (this.IsNull == ((NumericMaskManagerState)comparedState).IsNull));
 }