コード例 #1
0
        public void GoToRecordHandler(object sender, GoToRecordEventArgs e)
        {
            if (this.view != null)
            {
                if (this.IsDirty)
                {
                    if (this.SaveRecord() == false)
                    {
                        return;
                    }
                }

                switch (e.RecordString)
                {
                    case "+": // add new record
                        if (this.View.IsRelatedView && this.View.ReturnToParent)
                        {
                            this.mainForm.CloseView();
                            return;
                        }

                        if (AllowOneRecordOnly) { return; }

                        this.EnterCheckCodeEngine.CheckCodeHandler(this, new RunCheckCodeEventArgs(EventActionEnum.NewRecord, e.RecordString));
                        this.canvas.UnsubscribeControlEventHandlers();
                        this.CurrentRecordId = this.EnterCheckCodeEngine.CurrentView.CurrentRecordNumber;

                        this.canvas.SetNewRecordValues();
                        this.mainForm.UpdateAppSpecificInfo(SharedStrings.NEW_RECORD);
                        this.mainForm.AddNewRecordSettings();
                        this.viewExplorer.GoToFirstPage();
                        this.OpenPageHandler(sender, new PageSelectedEventArgs(this.currentPage));
                        this.Render();
                        break;

                    default:
                        this.mainForm.UpdateAppSpecificInfo(String.Empty);
                        this.CurrentRecordId = this.EnterCheckCodeEngine.CurrentView.CurrentRecordNumber;

                        RunCheckCodeEventArgs args = new RunCheckCodeEventArgs(EventActionEnum.OpenRecord, e.RecordString);
                        this.EnterCheckCodeEngine.CheckCodeHandler(this, args);

                        this.EnterCheckCodeEngine.SaveRecord();

                        PageSelectedEventArgs pageSelectArgs = new PageSelectedEventArgs(this.currentPage);
                        this.OpenPageHandler(sender, pageSelectArgs);

                        IsDirty = false;
                        break;
                }

                isNewRecord = EnterCheckCodeEngine.CurrentView.CurrentRecordNumber == 0 ? true : false;
            }
            else
            {
                MsgBox.Show(SharedStrings.SPECIFY_VIEW, SharedStrings.ENTER);
            }
        }
コード例 #2
0
 public void CheckCodeHandler(object sender, RunCheckCodeEventArgs e)
 {
     if (this.mCurrentView.Count > 0)
     {
         switch (e.EventType)
         {
             case EventActionEnum.CloseView:
                 this.mCurrentView.Peek().CheckCodeHandler(sender, e);
                 this.mCurrentView.Pop();
                 break;
             default:
                 this.mCurrentView.Peek().CheckCodeHandler(sender, e);
                 break;
         }
     }
 }
コード例 #3
0
        public void GoToRecordHandler(object sender, GoToRecordEventArgs e)
        {
            if (this.view != null)
            {
                if (this.IsDirty)
                {
                    if (this.SaveRecord() == false)
                    {
                        return;
                    }
                }

                switch (e.RecordString)
                {
                case "+":            // add new record
                case Constants.Plus: //2101
                    if (this.View.IsRelatedView && this.View.ReturnToParent)
                    {
                        this.mainForm.CloseView();
                        return;
                    }

                    if (AllowOneRecordOnly)
                    {
                        return;
                    }
                    this.EnterCheckCodeEngine.CheckCodeHandler(this, new RunCheckCodeEventArgs(EventActionEnum.NewRecord, e.RecordString));
                    this.canvas.UnsubscribeControlEventHandlers();
                    this.CurrentRecordId = this.EnterCheckCodeEngine.CurrentView.CurrentRecordNumber;

                    this.canvas.SetNewRecordValues();
                    this.mainForm.UpdateAppSpecificInfo(SharedStrings.NEW_RECORD);
                    this.mainForm.AddNewRecordSettings();
                    this.viewExplorer.GoToFirstPage();
                    this.OpenPageHandler(sender, new PageSelectedEventArgs(this.currentPage));
                    this.Render();
                    break;

                default:
                    this.mainForm.UpdateAppSpecificInfo(String.Empty);
                    this.CurrentRecordId = this.EnterCheckCodeEngine.CurrentView.CurrentRecordNumber;

                    RunCheckCodeEventArgs args = new RunCheckCodeEventArgs(EventActionEnum.OpenRecord, e.RecordString);
                    this.EnterCheckCodeEngine.CheckCodeHandler(this, args);

                    this.EnterCheckCodeEngine.SaveRecord();

                    PageSelectedEventArgs pageSelectArgs = new PageSelectedEventArgs(this.currentPage);
                    this.OpenPageHandler(sender, pageSelectArgs);

                    IsDirty = false;
                    break;
                }

                isNewRecord = EnterCheckCodeEngine.CurrentView.CurrentRecordNumber == 0 ? true : false;
            }
            else
            {
                MsgBox.Show(SharedStrings.SPECIFY_VIEW, SharedStrings.ENTER);
            }
        }
コード例 #4
0
ファイル: RunTimeView.cs プロジェクト: NALSS/epiinfo-82474
 private void OpenRecord(object sender, RunCheckCodeEventArgs e)
 {
     this.UnRollRecord();
     // push after_record onto stack
     this.AfterStack.Push(new KeyValuePair<EventActionEnum, StackCommand>(EventActionEnum.CloseRecord, new StackCommand(this.EpiInterpreter,"record","after","")));
     this.ExecuteCheckCode("record", "before", "");
     //this.RunCheckCodeCommands(this.mView.RecordCheckCodeBefore);
 }
コード例 #5
0
ファイル: RunTimeView.cs プロジェクト: NALSS/epiinfo-82474
        private void PreviousRecord(object sender, RunCheckCodeEventArgs e)
        {
            this.UnRollRecord();
            this.AfterStack.Push(new KeyValuePair<EventActionEnum, StackCommand>(EventActionEnum.CloseRecord, new StackCommand(this.EpiInterpreter, "record", "after", "")));
            this.ResetFields();

            if (this.mView.IsRelatedView)
            {
                this.mView.ForeignKeyField.CurrentRecordValueString = this.ParentGlobalRecordId;
            }

            this.mView.GlobalRecordIdField.NewValue();
            this.mView.LoadPreviousRecord(this.mView.CurrentRecordId);
            this.UpdateCurrentRecordNumber();
            this.ExecuteCheckCode("record", "before", "");
        }
コード例 #6
0
ファイル: RunTimeView.cs プロジェクト: NALSS/epiinfo-82474
        private void OpenField(object sender, RunCheckCodeEventArgs e)
        {
            this.mCurrentField = this.mView.Fields[e.Parameter];

            this.UnRollField();

            // push after_field onto stack

            if (this.mCurrentField is IFieldWithCheckCodeAfter)
            {
                this.AfterStack.Push(new KeyValuePair<EventActionEnum, StackCommand>(EventActionEnum.CloseField, new StackCommand(this.EpiInterpreter, "field", "after", this.mCurrentField.Name)));
            }

            if (this.mCurrentField is IFieldWithCheckCodeBefore)
            {
                this.ExecuteCheckCode("field", "before", this.mCurrentField.Name);
            }
        }
コード例 #7
0
ファイル: RunTimeView.cs プロジェクト: NALSS/epiinfo-82474
        private void OpenPage(object sender, RunCheckCodeEventArgs e)
        {
            this.UnRollPage();

            // push after_page onto stack
            if (this.AfterStack.Peek().Key == EventActionEnum.CloseView)
            {
                this.OpenRecord(sender, new RunCheckCodeEventArgs(EventActionEnum.OpenRecord,"<<"));
            }

            Epi.Page page = this.mView.Pages.Find(x => x.Name.ToUpper() == e.Parameter.ToUpper());
            this.mCurrentPage = page;
            this.AfterStack.Push(new KeyValuePair<EventActionEnum, StackCommand>(EventActionEnum.ClosePage, new StackCommand(this.EpiInterpreter, "page", "after", page.Name)));
            this.ExecuteCheckCode("page", "before", page.Name);
        }
コード例 #8
0
ファイル: RunTimeView.cs プロジェクト: NALSS/epiinfo-82474
        private void CloseRecord(object sender, RunCheckCodeEventArgs e)
        {
            EventActionEnum Level = this.AfterStack.Peek().Key;

            switch (Level)
            {
                case EventActionEnum.CloseRecord:
                    this.AfterStack.Pop().Value.Execute();
                    break;
                case EventActionEnum.ClosePage:
                    this.AfterStack.Pop().Value.Execute();
                    this.AfterStack.Pop().Value.Execute();
                    break;
                case EventActionEnum.CloseField:
                    this.AfterStack.Pop().Value.Execute();
                    this.AfterStack.Pop().Value.Execute();
                    this.AfterStack.Pop().Value.Execute();
                    break;
                default:
                    break;
            }

            if (View.IsEmptyNewRecord() == false)
            {
                this.View.SaveRecord(this.View.CurrentRecordId);
            }
        }
コード例 #9
0
ファイル: RunTimeView.cs プロジェクト: NALSS/epiinfo-82474
        private void NewRecord(object sender, RunCheckCodeEventArgs e)
        {
            //----2101
            this.ClearPageEventForNewRecord(e.Parameter);
            //--
            this.UnRollRecord();
            this.AfterStack.Push(new KeyValuePair<EventActionEnum, StackCommand>(EventActionEnum.CloseRecord, new StackCommand(this.EpiInterpreter, "record", "after", "")));
            this.ResetFields();

            foreach (IDataField dataField in this.mView.Fields.DataFields)
            {
                if (dataField is IInputField && ((IInputField)dataField).ShouldRepeatLast)
                {
                    this.mView.IsDirty = true;
                }
                else
                {
                    dataField.CurrentRecordValueObject = null;
                }
            }

            if (this.mView.IsRelatedView)
            {
                this.mView.ForeignKeyField.CurrentRecordValueString = this.ParentGlobalRecordId;
            }

            this.mView.GlobalRecordIdField.NewValue();
            this.ExecuteCheckCode("record", "before", "");
        }
コード例 #10
0
ファイル: RunTimeView.cs プロジェクト: NALSS/epiinfo-82474
        private void ClosePage(object sender, RunCheckCodeEventArgs e)
        {
            EventActionEnum Level = this.AfterStack.Peek().Key;

            switch (Level)
            {
                case EventActionEnum.ClosePage:
                    this.AfterStack.Pop().Value.Execute();
                    break;
                case EventActionEnum.CloseField:
                    this.AfterStack.Pop().Value.Execute();
                    this.AfterStack.Pop().Value.Execute();
                    break;
                default:
                    break;
            }
        }
コード例 #11
0
ファイル: RunTimeView.cs プロジェクト: NALSS/epiinfo-82474
 private void CloseField(object sender, RunCheckCodeEventArgs e)
 {
     if (this.AfterStack.Peek().Key == EventActionEnum.CloseField)
     {
         this.AfterStack.Pop().Value.Execute();
     }
 }
コード例 #12
0
ファイル: RunTimeView.cs プロジェクト: NALSS/epiinfo-82474
 private void ClickField(object sender, RunCheckCodeEventArgs e)
 {
     if (this.mCurrentField is IFieldWithCheckCodeClick)
     {
         this.ExecuteCheckCode("field", "click", this.mCurrentField.Name);
     }
 }
コード例 #13
0
ファイル: RunTimeView.cs プロジェクト: NALSS/epiinfo-82474
        /*private void OpenView(object sender, RunCheckCodeEventArgs e)
        {

        }*/
        public void CloseView(object sender, RunCheckCodeEventArgs e)
        {
            //execute after stack until current level = view
            while (this.AfterStack.Count > 0)
            {
                    this.AfterStack.Pop().Value.Execute();
            }

            this.mCurrentField = null;
            this.mCurrentPage = null;
            this.mView = null;

            // then execute current level after_view
            //this.RunCheckCodeCommands(this.mView.CheckCodeAfter);
        }
コード例 #14
0
ファイル: RunTimeView.cs プロジェクト: NALSS/epiinfo-82474
 public void CheckCodeHandler(object sender, RunCheckCodeEventArgs e)
 {
     switch (e.EventType)
     {
         /*case EventActionEnum.OpenView:
             this.OpenView(sender, e);
             break;*/
         case EventActionEnum.CloseView:
             this.CloseView(sender, e);
             break;
         case EventActionEnum.OpenRecord:
             switch (e.Parameter)
             {
                 case "+":
                 case Constants.Plus:
                     this.NewRecord(sender, e);
                     break;
                 case "<<":
                     this.FirstRecord(sender, e);
                     break;
                 case "<":
                     this.PreviousRecord(sender, e);
                     break;
                 case ">":
                     this.NextRecord(sender, e);
                     break;
                 case ">>":
                     this.LastRecord(sender, e);
                     break;
                 default:
                     this.GotoRecord(sender, e);
                     break;
             }
             break;
         case EventActionEnum.CloseRecord:
             this.CloseRecord(sender, e);
             break;
         case EventActionEnum.OpenPage:
             this.OpenPage(sender, e);
             break;
         case EventActionEnum.ClosePage:
             this.ClosePage(sender, e);
             break;
         case EventActionEnum.OpenField:
             this.OpenField(sender, e);
             break;
         case EventActionEnum.CloseField:
             this.CloseField(sender, e);
             break;
         case EventActionEnum.ClickField:
             this.ClickField(sender, e);
             break;
         case EventActionEnum.FirstRecord:
             this.FirstRecord(sender, e);
             break;
         case EventActionEnum.NextRecord:
             this.NextRecord(sender, e);
             break;
         case EventActionEnum.PreviousRecord:
             this.PreviousRecord(sender, e);
             break;
         case EventActionEnum.LastRecord:
             this.LastRecord(sender, e);
             break;
         case EventActionEnum.GotoRecord:
             this.GotoRecord(sender, e);
             break;
         case EventActionEnum.NewRecord:
             this.NewRecord(sender, e);
             break;
         default:
             break;
     }
 }