public KeyPresenter(IMainPanel panel, IKeyForm form) : base(panel) { this.form = form; SetupForm(); form.KeyNameChanged += (sender, e) => { if (!Detached) { Key.Name = form.KeyName; } }; form.KeytypeChanged += (sender, e) => { if (!Detached) { Key.Keytype = form.Keytype; } }; form.DescriptionChanged += (sender, e) => { if (!Detached) { Key.Description = form.Description; } }; form.EditColumn += (sender, e) => { if (!Detached) { mainPanel.ShowObjectPropertyGrid(form.SelectedColumn); } }; form.DeleteKey += form_DeleteKey; form.AddNewColumn += form_AddNewColumn; form.RemoveColumn += form_RemoveColumn; }
public void Property_Changed_Registered() { IKeyForm form = MockRepository.GenerateMock <IKeyForm>(); IKey obj = MockRepository.GenerateMock <IKey>(); IMainPanel panel = MockRepository.GenerateMock <IMainPanel>(); //var presenter = new KeyPresenter(panel, form); //presenter.AttachToModel(obj); obj.AssertWasCalled(o => o.PropertyChanged += null, c => c.IgnoreArguments()); }
public void Clear_Called() { IKeyForm form = MockRepository.GenerateMock <IKeyForm>(); IKey obj = MockRepository.GenerateMock <IKey>(); IMainPanel panel = MockRepository.GenerateMock <IMainPanel>(); //var presenter = new KeyPresenter(panel, form); //presenter.AttachToModel(obj); form.AssertWasCalled(f => f.Clear()); }
public void Show_Property_Grid_Called() { IKeyForm form = MockRepository.GenerateMock <IKeyForm>(); IKey obj = MockRepository.GenerateMock <IKey>(); IMainPanel panel = MockRepository.GenerateMock <IMainPanel>(); //KeyPresenter presenter = new KeyPresenter(panel, form); //presenter.AttachToModel(obj); //presenter.Show(); //panel.AssertWasCalled(p => p.ShowPropertyGrid(form)); }
private void Test_Property_Called(Action <Key> setPropertyAction, Action <IKeyForm> action) { IKeyForm form = MockRepository.GenerateMock <IKeyForm>(); Key obj = new Key("PrimaryKey"); IMainPanel panel = MockRepository.GenerateMock <IMainPanel>(); //var presenter = new KeyPresenter(panel, form); //presenter.AttachToModel(obj); setPropertyAction(obj); form.AssertWasCalled(action); }
public void Events_Are_Registered() { IKeyForm form = MockRepository.GenerateMock <IKeyForm>(); IMainPanel panel = MockRepository.GenerateMock <IMainPanel>(); //new KeyPresenter(panel, form); form.AssertWasCalled(x => x.KeyNameChanged += null, c => c.IgnoreArguments()); form.AssertWasCalled(x => x.DescriptionChanged += null, c => c.IgnoreArguments()); form.AssertWasCalled(x => x.KeytypeChanged += null, c => c.IgnoreArguments()); form.AssertWasCalled(x => x.EditColumn += null, c => c.IgnoreArguments()); form.AssertWasCalled(x => x.AddNewColumn += null, c => c.IgnoreArguments()); form.AssertWasCalled(x => x.RemoveColumn += null, c => c.IgnoreArguments()); form.AssertWasCalled(x => x.DeleteKey += null, c => c.IgnoreArguments()); }
public void The_Form_Is_Set_Up() { IKeyForm form = MockRepository.GenerateMock <IKeyForm>(); IKey obj = MockRepository.GenerateMock <IKey>(); IMainPanel panel = MockRepository.GenerateMock <IMainPanel>(); //KeyPresenter presenter = new KeyPresenter(panel, form); //presenter.AttachToModel(obj); form.AssertWasCalled(x => x.KeyName = obj.Name); form.AssertWasCalled(x => x.Description = obj.Description); form.AssertWasCalled(x => x.Keytype = obj.Keytype); form.AssertWasCalled(x => x.Columns = obj.Columns); form.AssertWasCalled(x => x.SetVirtualProperties(obj.Ex)); form.AssertWasCalled(x => x.SetAvailableColumns(null), c => c.IgnoreArguments()); }
private void Property_Changed_Called_After_Form_Updates(Action <IKeyForm> setFormPropertyReturnValue, Action <IKeyForm> @event, Action <IKeyForm> expectedCall, object newPropertyValue, Func <Key, object> getParameter) { IKeyForm form = MockRepository.GenerateMock <IKeyForm>(); Key obj = new Key("PrimaryKey"); IMainPanel panel = MockRepository.GenerateMock <IMainPanel>(); //var presenter = new KeyPresenter(panel, form); //presenter.AttachToModel(obj); IEventRaiser raiser = form.GetEventRaiser(@event); setFormPropertyReturnValue(form); raiser.Raise(form, null); form.AssertWasCalled(expectedCall); Assert.That(getParameter(obj), Is.EqualTo(newPropertyValue)); }
public void Columns_Changed_Called() { IKeyForm form = MockRepository.GenerateMock <IKeyForm>(); IKey obj = MockRepository.GenerateStub <IKey>(); IMainPanel panel = MockRepository.GenerateMock <IMainPanel>(); //var presenter = new KeyPresenter(panel, form); //presenter.AttachToModel(obj); List <IColumn> columns = new List <IColumn>(); obj.Stub(o => o.Columns).Return(columns.AsReadOnly()); // Raise the PropertyChanged event for the Columns collection on the Key IEventRaiser raiser = obj.GetEventRaiser(e => e.PropertyChanged += null); raiser.Raise(obj, new PropertyChangedEventArgs("Columns")); form.AssertWasCalled(f => f.Columns = columns); }
public void Column_Selection_Changed_Called() { IKeyForm form = MockRepository.GenerateMock <IKeyForm>(); IKey obj = MockRepository.GenerateStub <IKey>(); IMainPanel panel = MockRepository.GenerateMock <IMainPanel>(); //var presenter = new KeyPresenter(panel, form); //presenter.AttachToModel(obj); Column toReturn = new Column("Column1"); form.Stub(o => o.SelectedColumn).Return(toReturn); // Raise the PropertyChanged event for the Columns collection on the Key IEventRaiser raiser = form.GetEventRaiser(e => e.EditColumn += null); raiser.Raise(obj, null); panel.AssertWasCalled(p => p.ShowObjectPropertyGrid(toReturn)); }
public static bool switchToView(IXContainerControl container, IKeyForm Link, CMenuItem mnu, ref UpdateData data, List <UpdateData> injectedatas) { if (mnu == null) { return(false); } if (mnu.LinkValue == null || mnu.LinkValue.Trim().Length == 0) { return(false); } Type tFrm = Appasmb.GetType(string.Format(mnu.LinkValue, GlobalShare.SystemAppInfo.AssemName)); if (true) { if (tFrm == null) { MessageBox.Show(string.Format("未找到类{0}!", mnu.LinkValue)); return(false); } } if (mnu.linkType == LinkType.WebPage) { if (AllModules.ContainsKey(mnu.MnuId)) { container.CurrMainControl = AllModules[mnu.MnuId]; return(true); } } Ifrm_Model objInst; if (container == null) { return(false); } //container.Controls.Clear(); //container.Controls.Clear();//清除所有控件 if (mnu.Params == null || mnu.Params.Trim().Length == 0) { object obj = Activator.CreateInstance(tFrm, null); objInst = obj as Ifrm_Model; } else { objInst = Activator.CreateInstance(tFrm, mnu.Params) as Ifrm_Model; } if (objInst == null) { return(false); } objInst.FromMenu = mnu; objInst.strUid = mnu.strUid; objInst.SetDock(XPlatformDockStyle.Fill); if (objInst.lb_Title != null) { objInst.lb_Title.Text = mnu.MnuName; } objInst.GridSource = mnu.GridSource; objInst.DetailSource = mnu.DetailSrouce; objInst.UseSubItems = mnu.UseSubItems; objInst.strKey = mnu.Key; if (mnu.Module.Trim().Length > 0) { objInst.strModule = mnu.Module; } if (mnu.Screen.Trim().Length > 0) { objInst.strScreen = mnu.Screen; } if (mnu.Target.Trim().Length > 0) { objInst.strTarget = mnu.Target; } objInst.strKey = mnu.Key; objInst.Link = Link; if (objInst is IMutliDataInterface) { (objInst as IMutliDataInterface).InjectedDatas = injectedatas; } if (objInst is ITranslateableInterFace && (Link is IKeyForm || Link == null)) { FillTranData(Link, objInst as ITranslateableInterFace, ref mnu, ref data); (objInst as ITranslateableInterFace).NeedUpdateData = data; } objInst.TranData = mnu.TranDataMapping; //菜单数据下传 //if (objInst.InjectedDatas == null) //{ // objInst.InjectedDatas = new List<UpdateData>(); //} //if(data != null) //{ // objInst.InjectedDatas.Add(data); //} if (container != null) { container.Controls_Add(objInst); objInst.ToTopLevel(); } if (!AllModules.ContainsKey(mnu.MnuId)) { AllModules.Add(mnu.MnuId, objInst); } container.CurrMainControl = objInst; switch (mnu.linkType) { case LinkType.WebPage: //winform专用 { break; } case LinkType.Dialog: { if (container is IXPanel) //容器是ixpanel 并且 { if ((container as IXPanel).InForm) //容器是在最外层main/mdi_main { } else { break; } } else //如果是form { //自加载 break; } IXForm frmobj = CreateForm(objInst.ControlType); frmobj.InitForm(mnu, SystemIcon); frmobj.Controls_Add(objInst); frmobj.ShowIXDialog(); break; } case LinkType.Form: { break; } case LinkType.UserControl: { break; } case LinkType.PrintToPDF: { if (container is IXPanel) //容器是ixpanel 并且 { if ((container as IXPanel).InForm) //容器是在最外层main/mdi_main { break; } else { } } else //如果是form { //自加载 break; } IXForm frmobj = CreateForm(objInst.ControlType); frmobj.InitForm(mnu, SystemIcon); frmobj.Controls_Add(objInst); frmobj.ShowIXDialog(); break; } default: { break; } } return(true); }
public static bool switchToView(IXContainerControl container, IKeyForm Link, CMenuItem mnu, ref UpdateData data) { return(switchToView(container, Link, mnu, ref data, null)); }
public static void FillTranData(IKeyForm currfrm, ITranslateableInterFace ifrm, ref CMenuItem mnu, ref UpdateData data, bool TranData) { if (data == null) { data = new UpdateData(); } if (TranData) { ifrm.NeedUpdateData = data.Clone() as UpdateData;//传入 } ifrm.TranData = mnu.CopyTranDatas(); //上个页面查询条件下传 if (currfrm != null && currfrm is ITranslateableInterFace && (currfrm as ITranslateableInterFace).TranData != null) { if (ifrm.TranData == null) { ifrm.TranData = new List <DataTranMapping>(); } if (ifrm.TranData != null) { List <DataTranMapping> prevdata = (currfrm as ITranslateableInterFace).TranData; for (int i = 0; i < prevdata.Count; i++) { DataTranMapping inputdata = prevdata[i]; var mp = ifrm.TranData.Where(a => a.FromDataPoint.Name == inputdata.ToDataPoint); if (mp.Count() == 0) { ifrm.TranData.Add(inputdata); } else { mp.First().FromDataPoint.Text = inputdata.FromDataPoint.Text; } if (!data.Items.ContainsKey(inputdata.ToDataPoint)) { data.Items.Add(inputdata.ToDataPoint, new UpdateItem(inputdata.ToDataPoint, inputdata.FromDataPoint.Text)); } data.Items[inputdata.ToDataPoint].text = inputdata.FromDataPoint.Text; } } } #region 输数据不为空 if (mnu.TranDataMapping != null) { for (int i = 0; i < mnu.TranDataMapping.Count; i++) { DataTranMapping dtm = mnu.TranDataMapping[i]; if (currfrm != null && currfrm is IKeyForm && currfrm.strKey == dtm.FromDataPoint.Name)//如果匹配到关键字,传送到下一个界面 { string val = currfrm.strRowId; if (mnu.Params != null && mnu.Params.Trim().Length > 0) { if (val.Trim().Length == 0) { val = mnu.Params; } } if (data.Items.ContainsKey(dtm.ToDataPoint)) { data.Items[dtm.ToDataPoint].value = val; } else { data.Items.Add(dtm.ToDataPoint, new UpdateItem(dtm.ToDataPoint, val)); } //break; } else { string strPoint = dtm.FromDataPoint.Name.Replace("{", "").Replace("}", ""); if (GlobalShare.DataPointMappings.ContainsKey(strPoint))//如果是数据点,传数据 { if (!TranData) { continue; } //暂时无法处理 if (currfrm is ITranslateableInterFace)//获得该界面的所有数据 { UpdateData currframedata = (currfrm as ITranslateableInterFace).GetCurrFrameData(); if (currframedata.Items.ContainsKey(strPoint))//如果数据中包括要传送的数据点 { if (data.Items.ContainsKey(dtm.ToDataPoint)) { data.Items[dtm.ToDataPoint].value = currframedata.Items[strPoint].value; } else { data.Items.Add(dtm.ToDataPoint, new UpdateItem(dtm.ToDataPoint, currframedata.Items[strPoint].value)); //dtm.FromDataPoint = currframedata.Items[dtm.FromDataPoint.Name].value; } dtm.FromDataPoint.Text = currframedata.Items[strPoint].value; } } else//如果是顶层菜单传入,并且是系统的用户常量 { if (GlobalShare.UserAppInfos.First().Value.appinfo.UserInfo.Items.ContainsKey(strPoint)) { UpdateData ud = GlobalShare.UserAppInfos.First().Value.appinfo.UserInfo; if (data.Items.ContainsKey(strPoint)) { data.Items[dtm.ToDataPoint].value = ud.Items[strPoint].value; } else { data.Items.Add(dtm.ToDataPoint, new UpdateItem(strPoint, ud.Items[strPoint].value)); //dtm.FromDataPoint = currframedata.Items[dtm.FromDataPoint.Name].value; } dtm.FromDataPoint.Text = ud.Items[strPoint].value; } } } else//传常量 { if (data.Items.ContainsKey(dtm.ToDataPoint)) { data.Items[dtm.ToDataPoint].value = dtm.FromDataPoint.Text; } else { data.Items.Add(dtm.ToDataPoint, new UpdateItem(dtm.ToDataPoint, dtm.FromDataPoint.Name)); } } } } } #endregion if (!TranData) { return; } //关键字下传 if (currfrm == null) { return; } if (data == null) { data = new UpdateData(); } if (data.Items.ContainsKey(currfrm.strKey) && currfrm.strRowId != "") { data.Items[currfrm.strKey].value = currfrm.strRowId; } else { if (!data.Items.ContainsKey(currfrm.strKey)) { data.Items.Add(currfrm.strKey, new UpdateItem(currfrm.strKey, currfrm.strRowId)); } } }
public static void FillTranData(IKeyForm currfrm, ITranslateableInterFace ifrm, ref CMenuItem mnu, ref UpdateData data) { FillTranData(currfrm, ifrm, ref mnu, ref data, true); }
public static bool ShowDialoger(IXPanel container, IKeyForm Link, CMenuItem mnu, ref UpdateData data, bool MultiSelected) { if (mnu == null) { return(false); } if (mnu.LinkValue == null || mnu.LinkValue.Trim().Length == 0) { return(false); } Type tFrm = Appasmb.GetType(string.Format(mnu.LinkValue, GlobalShare.SystemAppInfo.AssemName)); if (mnu.linkType != LinkType.WebPage) { if (tFrm == null) { MessageBox.Show(string.Format("未找到类{0}!", mnu.LinkValue)); return(false); } } switch (mnu.linkType) { case LinkType.WebPage: { if (container != null) //support the tab frame { ////WebBrowser wb = new WebBrowser(); ////wb.Url = new Uri(mnu.LinkValue); ////container.ControlsAdd(wb); ////wb.Dock = DockStyle.Fill; break; } WebForm wbfrm = null; if (ShowWebForms.ContainsKey(mnu.MnuId)) { wbfrm = ShowWebForms[mnu.MnuId]; } else { wbfrm = new WebForm(mnu.MnuId, mnu.LinkValue); } wbfrm.ShowDialog(ParentForm); break; } case LinkType.Dialog: { Ifrm_Model objInst; if (mnu.Params == null || mnu.Params.Trim().Length == 0) { objInst = Activator.CreateInstance(tFrm, null) as Ifrm_Model; } else { objInst = Activator.CreateInstance(tFrm, mnu.Params) as Ifrm_Model; } if (objInst == null) { return(false); } objInst.FromMenu = mnu; objInst.SetDock(XPlatformDockStyle.Fill); objInst.strUid = mnu.strUid; objInst.FromMenu = mnu; objInst.lb_Title.Text = mnu.MnuName; objInst.GridSource = mnu.GridSource; objInst.DetailSource = mnu.DetailSrouce; if (mnu.Module.Trim().Length > 0) { objInst.strModule = mnu.Module; } if (mnu.Screen.Trim().Length > 0) { objInst.strScreen = mnu.Screen; } if (mnu.Target.Trim().Length > 0) { objInst.strTarget = mnu.Target; } objInst.strKey = mnu.Key; objInst.Link = Link; IXForm frm = CreateForm(objInst.ControlType); frm.InitForm(mnu, SystemIcon); //objInst.AllowClose = false; if (objInst is ITranslateableInterFace && (Link is IKeyForm || Link == null)) { FillTranData(Link, objInst as ITranslateableInterFace, ref mnu, ref data); } objInst.TranData = mnu.TranDataMapping; objInst.FromMenu = mnu; if (objInst is ITranslateableInterFace) { data.ReqType = DataRequestType.Update; if (mnu.Params == null || mnu.Params.Trim().Length == 0) { data.ReqType = DataRequestType.Add; data.Updated = true; } (objInst as ITranslateableInterFace).NeedUpdateData = data; } frm.Controls_Add(objInst); if (!frm.ShowIXDialog()) { return(false); } if (objInst is ITranslateableInterFace) { data = (objInst as ITranslateableInterFace).NeedUpdateData; //传出 } break; } case LinkType.Select: { Dlg_CommModel objInst; if (mnu.Params == null || mnu.Params.Trim().Length == 0) { objInst = Activator.CreateInstance(tFrm, null) as Dlg_CommModel; } else { objInst = Activator.CreateInstance(tFrm, mnu.Params) as Dlg_CommModel; } if (objInst == null) { return(false); } objInst.FromMenu = mnu; objInst.strUid = mnu.strUid; //objInst.Dock = DockStyle.Fill; //objInst.lb_Title.Text = mnu.MnuName; objInst.MultiSelect = MultiSelected; objInst.GridSource = mnu.GridSource; objInst.DetailSource = mnu.DetailSrouce; if (mnu.Module.Trim().Length > 0) { objInst.strModule = mnu.Module; } if (mnu.Screen.Trim().Length > 0) { objInst.strScreen = mnu.Screen; } if (mnu.Target.Trim().Length > 0) { objInst.strTarget = mnu.Target; } objInst.strKey = mnu.Key; objInst.Link = Link; if (container != null) { objInst.Icon = SystemIcon; } objInst.Text = mnu.Title; objInst.MaximizeBox = false; objInst.MinimizeBox = false; objInst.FormBorderStyle = FormBorderStyle.FixedDialog; objInst.StartPosition = FormStartPosition.CenterParent; //objInst.AllowClose = false; //(objInst as Dlg_CommModel).ReturnData = data;//传入 if (objInst is ITranslateableInterFace) { FillTranData(Link, objInst as ITranslateableInterFace, ref mnu, ref data, false); } if (objInst.ShowDialog() != DialogResult.Yes) { return(false); } if (objInst is ITranslateableInterFace && Link is IKeyForm) { data = (objInst as ITranslateableInterFace).NeedUpdateData; //传出 } break; } case LinkType.Form: { Ifrm_Model objInst; if (mnu.Params == null || mnu.Params.Trim().Length == 0) { objInst = Activator.CreateInstance(tFrm, null) as Ifrm_Model; } else { objInst = Activator.CreateInstance(tFrm, mnu.Params) as Ifrm_Model; } if (objInst == null) { return(false); } objInst.FromMenu = mnu; objInst.strUid = mnu.strUid; objInst.SetDock(XPlatformDockStyle.Fill); objInst.lb_Title.Text = mnu.MnuName; objInst.GridSource = mnu.GridSource; objInst.DetailSource = mnu.DetailSrouce; if (mnu.Module.Trim().Length > 0) { objInst.strModule = mnu.Module; } if (mnu.Screen.Trim().Length > 0) { objInst.strScreen = mnu.Screen; } if (mnu.Target.Trim().Length > 0) { objInst.strTarget = mnu.Target; } objInst.strKey = mnu.Key; objInst.Link = Link; IXForm frm = CreateForm(objInst.ControlType); frm.InitForm(mnu, SystemIcon); //objInst.AllowClose = false; if (objInst is ITranslateableInterFace && (Link is IKeyForm || Link == null)) { FillTranData(Link, objInst as ITranslateableInterFace, ref mnu, ref data); //(objInst as ITranslateableInterFace).NeedUpdateData = data; } frm.Controls_Add(objInst); frm.ShowIXDialog(); if (objInst is ISaveableInterFace) { data = (objInst as ISaveableInterFace).NeedUpdateData; //传出 } break; } case LinkType.UserControl: { container.Controls_Clear(); //清除所有控件 Ifrm_Model objInst; if (mnu.Params == null || mnu.Params.Trim().Length == 0) { objInst = Activator.CreateInstance(tFrm, null) as Ifrm_Model; } else { objInst = Activator.CreateInstance(tFrm, mnu.Params) as Ifrm_Model; } if (objInst == null) { return(false); } objInst.FromMenu = mnu; objInst.strUid = mnu.strUid; objInst.SetDock(XPlatformDockStyle.Fill); objInst.lb_Title.Text = mnu.MnuName; objInst.GridSource = mnu.GridSource; objInst.DetailSource = mnu.DetailSrouce; objInst.strKey = mnu.Key; if (mnu.Module.Trim().Length > 0) { objInst.strModule = mnu.Module; } if (mnu.Screen.Trim().Length > 0) { objInst.strScreen = mnu.Screen; } if (mnu.Target.Trim().Length > 0) { objInst.strTarget = mnu.Target; } objInst.strKey = mnu.Key; objInst.Link = Link; if (objInst is ITranslateableInterFace && (Link is IKeyForm || Link == null)) { FillTranData(Link, objInst as ITranslateableInterFace, ref mnu, ref data); } container.Controls_Add(objInst); objInst.ToTopLevel(); //objInst.Focus(); break; } default: { break; } } return(true); }
public static bool ShowDialoger(IXPanel container, IKeyForm Link, CMenuItem mnu, ref UpdateData data) { return(ShowDialoger(container, Link, mnu, ref data, false)); }
public static void FillTranData(IKeyForm currfrm, ITranslateableInterFace ifrm, CMenuItem mnu, ref UpdateData data) { if (data == null) { data = new UpdateData(); } ifrm.NeedUpdateData = data;//传入 ifrm.TranData = mnu.TranDataMapping; #region if (mnu.TranDataMapping != null) { for (int i = 0; i < mnu.TranDataMapping.Count; i++) { DataTranMapping dtm = mnu.TranDataMapping[i]; if (currfrm != null && currfrm.strKey == dtm.FromDataPoint.Name)//如果匹配到关键字,传送到下一个界面 { //break; } else { if (GlobalShare.DataPointMappings.ContainsKey(dtm.FromDataPoint.Name))//如果是数据点,传数据 { //暂时无法处理 if (currfrm is ITranslateableInterFace)//获得该界面的所有数据 { UpdateData currframedata = (currfrm as ITranslateableInterFace).GetCurrFrameData(); if (currframedata.Items.ContainsKey(dtm.FromDataPoint.Name))//如果数据中包括要传送的数据点 { if (data.Items.ContainsKey(dtm.ToDataPoint)) { data.Items[dtm.ToDataPoint].value = currframedata.Items[dtm.FromDataPoint.Name].value; } else { data.Items.Add(dtm.ToDataPoint, new UpdateItem(dtm.ToDataPoint, currframedata.Items[dtm.FromDataPoint.Name].value)); } } } } else//传常量 { if (data.Items.ContainsKey(dtm.ToDataPoint)) { data.Items[dtm.ToDataPoint].value = dtm.FromDataPoint.Text; } else { data.Items.Add(dtm.ToDataPoint, new UpdateItem(dtm.ToDataPoint, dtm.FromDataPoint.Text)); } } } } } #endregion //关键字下传 if (data == null) { data = new UpdateData(); } if (data.Items.ContainsKey(currfrm.strKey) && currfrm.strRowId != "") { data.Items[currfrm.strKey].value = currfrm.strRowId; } else { data.Items.Add(currfrm.strKey, new UpdateItem(currfrm.strKey, currfrm.strRowId)); } }