Пример #1
0
 public override void SetFormState(Form form)
 {
     form.MaximizeBox   = false;
     form.MinimizeBox   = false;
     form.TopMost       = true;
     form.ShowInTaskbar = true;
     form.FormClosing  += (sender, e) =>
     {
         if (form.DialogResult == DialogResult.OK)
         {
             try {
                 string hashPassword = null;
                 if (SecurtiyService == null)
                 {
                     throw new Exception("安全服务还未初始化");
                 }
                 if (TextEditPassword.Text.IsNotNullOrEmpty())
                 {
                     hashPassword = SecurityPublic.ComputeHashString(TextEditPassword.Text);
                 }
                 var userID = SecurtiyService.Login(TextEditUser.Text, hashPassword);
                 SecurityPublic.ApplicationUser = new UserToken()
                 {
                     UserID = userID,
                 };
             }
             catch (Exception err) {
                 UIPublic.ShowExceptionDialog(err);
                 e.Cancel = true;
             }
         }
     };
     base.SetFormState(form);
 }
Пример #2
0
 private void ButtonRecoverLayout_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
 {
     if (UIPublic.ShowYesNoDialog("您确定要清除当前的布局并恢复默认布局吗?") == DialogReturn.Yes)
     {
         this.DockManager.SetLayoutData(DefaultLayoutData);
     }
 }
Пример #3
0
        private void ButtonProperty_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            UIPublic.ShowWaitingForm();
            var propertyValue = EditValue;

            var objectType = propertyValue.GetType();
            BaseObjectEditControl editControl = null;

            // 如果不是PaoObject类型,则显示默认编辑控件
            if (!objectType.IsAddonType())
            {
                editControl = EditorPublic.CreateEditControl(objectType) as BaseObjectEditControl;
            }

            if (editControl == null)
            {
                var editController = EditorPublic.GetOrCreateEditControllerFromStorage <ObjectLayoutEditController>(objectType);
                editControl = editController.CreateEditControl(objectType) as BaseObjectEditControl;
            }

            editControl.EditValue = IOPublic.ObjectClone(propertyValue);
            UIPublic.CloseWaitingForm();
            if (WinFormPublic.ShowDialog(editControl) == DialogReturn.OK)
            {
                EditValue = editControl.EditValue;
            }
            SetControlStatus();
        }
Пример #4
0
        /// <summary>
        /// 导出当前对象
        /// </summary>
        public static void ExportObject(object obj
                                        , string defaultFileName = null
                                        , params string[] defaultFileExtentions)
        {
            string fileName = defaultFileName;

            string[] fileExtentions;
            if (defaultFileExtentions.IsNotNullOrEmpty())
            {
                fileExtentions = defaultFileExtentions;
            }
            else
            {
                fileExtentions = new string[]
                {
                    FileExtentions.CONFIG
                    , FileExtentions.XML
                    , FileExtentions.All
                };
            }
            if (UIPublic.ShowSaveFileDialog("导出", ref fileName
                                            , fileExtentions) == DialogReturn.OK)
            {
                if (fileName.IsNullOrEmpty())
                {
                    UIPublic.ShowErrorDialog("输入了错误的文件名");
                }
                else
                {
                    IOPublic.WriteObjectToFile(fileName, obj);
                }
            }
        }
Пример #5
0
 private void ButtonRecoverFormat_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
 {
     if (UIPublic.ShowYesNoCancelDialog("您是否需要默认格式?") == DialogReturn.Yes)
     {
         this.DataLayoutControl.RestoreDefaultLayout();
     }
 }
Пример #6
0
 private void ButtonRecoverLayout_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
 {
     if (UIPublic.ShowYesNoDialog("您是否要恢复表格的默认格式?") == DialogReturn.Yes)
     {
         RecoverLayout();
     }
 }
Пример #7
0
        /// <summary>
        /// 显示异常对话框
        /// </summary>
        /// <param name="exception">异常对话框</param>
        protected virtual void ShowExceptionDialog(Exception exception)
        {
            UIPublic.ShowWaitingForm();
            var eventInfo = new ExceptionEventInfo(exception, true, true);

            UIPublic.CloseWaitingForm();
            UIPublic.ShowEventDialog(eventInfo);
        }
Пример #8
0
        private void ButtonConfigTools_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            UIPublic.ShowWaitingForm();
            var objectTreeControl = new ObjectTreeEditControl();

            objectTreeControl.EditValue = PaoApplication.Default;
            UIPublic.CloseWaitingForm();
            WinFormPublic.ShowDialog(objectTreeControl);
        }
Пример #9
0
 private void ButtonRecoverFormat_ItemClick(object sender, ItemClickEventArgs e)
 {
     if (DefaultLayoutData.IsNotNullOrEmpty())
     {
         if (UIPublic.ShowYesNoDialog("您是否需要默认格式?") == DialogReturn.Yes)
         {
             EditorPublic.RemoveEditControllerFromStorage(EditValue.GetType(), Controller.GetType());
             this.PropertyGridControl.SetLayoutData(DefaultLayoutData);
         }
     }
 }
Пример #10
0
 private void Edit_ButtonClick(object sender, DevExpress.XtraEditors.Controls.ButtonPressedEventArgs e)
 {
     if (e.Button.Kind == ButtonPredefines.Plus)
     {
         if (UIPublic.ShowYesNoDialog("您是否要创建一个新的Guid?") == DialogReturn.Yes)
         {
             var edit = sender as ButtonEdit;
             edit.EditValue = Guid.NewGuid().ToString();
         }
     }
 }
Пример #11
0
 public void Waiting(Action action, string message = "程序运行中...")
 {
     SetStatusText(message);
     UIPublic.ShowWaitingForm();
     this.EditItemWaitingBar.Visibility = DevExpress.XtraBars.BarItemVisibility.Always;
     this.Refresh();
     action();
     this.EditItemWaitingBar.Visibility = DevExpress.XtraBars.BarItemVisibility.Never;
     SetStatusText(Message_Status_Ready);
     UIPublic.CloseWaitingForm();
 }
Пример #12
0
 /// <summary>
 /// 创建事件
 /// </summary>
 /// <param name="source">源</param>
 /// <param name="message">消息</param>
 /// <param name="type">事件类型</param>
 /// <param name="screenshot">是否截屏</param>
 /// <param name="snapshot">是否进行快照</param>
 /// <returns></returns>
 public EventInfo(string type
                  , string message
                  , bool screenshot = false
                  , bool snapshot   = false)
 {
     Source        = "PAO";
     Time          = DateTime.Now;
     Message       = message;
     Type          = type;
     ScreenShot    = screenshot ? UIPublic.ScreenShot() : (Image)null;
     AssetSnapshot = snapshot ? IOPublic.ObjectClone(PaoApplication.Default) : null;
 }
Пример #13
0
        private void ButtonAddonSelect_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            UIPublic.ShowWaitingForm();
            var typeSelectControl = new TypeSelectControl();

            typeSelectControl.Initialize(p =>
            {
                return(p.IsDerivedFrom <DataFilter>());
            });
            UIPublic.CloseWaitingForm();
            WinFormPublic.ShowDialog(typeSelectControl);
        }
Пример #14
0
        private void ButtonTestException_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            UIPublic.ShowWaitingForm();
            var eventInfo = new ExceptionEventInfo(new Exception("这是测试消息")
                                                   , true
                                                   , true).AddEventData("测试", "测试");
            var eventControl = new EventControl();

            eventControl.Initialize(eventInfo);
            UIPublic.CloseWaitingForm();
            WinFormPublic.ShowDialog(eventControl);
        }
Пример #15
0
 private void ButtonClearDataFields_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
 {
     if (UIPublic.ShowYesNoDialog("您确定要清空所有表的列并重建吗?") == DialogReturn.Yes)
     {
         var controller = Controller as ReportController;
         foreach (var reportTable in controller.Tables)
         {
             reportTable.DataColumns = null;
             RebuildTableColumns();
         }
     }
 }
Пример #16
0
        /// <summary>
        /// 添加菜单到子菜单中(包含下级菜单)
        /// </summary>
        /// <param name="barSubItem">子菜单</param>
        /// <param name="uiItem">菜单项</param>
        /// <param name="container">视图容器</param>
        public static void AddMenuToSubItem(object barSubItem, IUIItem uiItem, IViewContainer container)
        {
            BarItem barItem = null;

            if (uiItem is FolderItem)
            {
                var menuItem = uiItem as FolderItem;
                if (menuItem.ChildMenuItems.IsNotNull())
                {
                    var newSubItem = new BarSubItem();
                    foreach (var childFunctionItem in menuItem.ChildMenuItems)
                    {
                        AddMenuToSubItem(newSubItem, childFunctionItem, container);
                    }
                    barItem = newSubItem;
                }
            }
            if (barItem == null)
            {
                barItem = new BarButtonItem();
            }

            barItem.Caption    = uiItem.Caption;
            barItem.Glyph      = uiItem.Icon;
            barItem.LargeGlyph = uiItem.LargeIcon;
            barItem.ItemClick += (sender, e) =>
            {
                try {
                    if (uiItem is BaseController)
                    {
                        var controller = uiItem as BaseController;
                        controller.CreateAndOpenView(container);
                    }
                } catch (Exception err) {
                    UIPublic.ShowErrorDialog(err.FormatException());
                }
            };

            if (barSubItem is BarSubItem)
            {
                var barItemLink = barSubItem.As <BarSubItem>().AddItem(barItem);
                barItemLink.RecentIndex = 1;
            }
            else if (barSubItem is Bar)
            {
                var barItemLink = barSubItem.As <Bar>().AddItem(barItem);
            }
            else
            {
                throw new Exception("此对象不支持添加子菜单");
            }
        }
Пример #17
0
 public override void SetFormState(Form form)
 {
     form.WindowState     = FormWindowState.Normal;
     form.FormBorderStyle = FormBorderStyle.FixedDialog;
     form.FormClosing    += (sender, e) =>
     {
         if (form.DialogResult == DialogResult.OK && KeyValue.IsNullOrEmpty())
         {
             UIPublic.ShowWarningDialog("键值不能为空");
             e.Cancel = true;
         }
     };
 }
Пример #18
0
        /// <summary>
        /// 导出
        /// </summary>
        public void Export()
        {
            if (ExportFileFilters == null)
            {
                throw new Exception("未定义可导出的扩展名");
            }
            string fileName = "";

            if (UIPublic.ShowSaveFileDialog("导出", ref fileName, ExportFileFilters) == DialogReturn.OK)
            {
                OnExport(fileName);
            }
        }
Пример #19
0
        private void ButtonSave_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            string fileName = "*.png";

            if (UIPublic.ShowSaveFileDialog("保存图片", ref fileName
                                            , FileExtentions.PNG
                                            , FileExtentions.JPG
                                            , FileExtentions.BMP
                                            , FileExtentions.All) == DialogReturn.OK)
            {
                PictureEdit.Image.Save(fileName);
            }
        }
Пример #20
0
 private void ButtonRemoteException_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
 {
     UIPublic.ShowWaitingForm();
     try {
         var testService = new TcpRemoteFactory <ITestService>()
         {
             ServerAddress = "localhost:7990",
             ServiceName   = "TestService"
         }.Value;
         testService.GetString("Exception");
     } catch (Exception err) {
         UIPublic.CloseWaitingForm();
         UIPublic.ShowEventDialog(new ExceptionEventInfo(err, true, true));
     }
 }
Пример #21
0
        private void ButtonTestInformation_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            EventControl eventControl = null;

            UIPublic.ShowWaitingForm();
            var eventInfo = new EventInfo(EventInfo.EventType_Information
                                          , "这是测试消息"
                                          , true
                                          , true);

            eventControl = new EventControl();
            eventControl.Initialize(eventInfo);
            UIPublic.CloseWaitingForm();

            WinFormPublic.ShowDialog(eventControl);
        }
Пример #22
0
        private void ButtonCallRemote_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            UIPublic.ShowWaitingForm();
            string resultString = "";
            var    task         = Task.Factory.StartNew(() =>
            {
                var testService = new TcpRemoteFactory <ITestService>()
                {
                    ServerAddress = "localhost:7990",
                    ServiceName   = "TestService"
                }.Value;
                resultString = testService.GetString("Hello world!");
            });

            task.Wait();
            UIPublic.CloseWaitingForm();
            UIPublic.ShowInfomationDialog(resultString);
        }
Пример #23
0
        /// <summary>
        /// 导入对象
        /// </summary>
        public static void ImportObject(Action <object> action
                                        , string defaultFileName = null
                                        , params string[] defaultFileExtentions)
        {
            string fileName = defaultFileName;

            string[] fileExtentions;
            if (defaultFileExtentions.IsNotNullOrEmpty())
            {
                fileExtentions = defaultFileExtentions;
            }
            else
            {
                fileExtentions = new string[]
                {
                    FileExtentions.CONFIG
                    , FileExtentions.XML
                    , FileExtentions.All
                };
            }
            if (UIPublic.ShowOpenFileDialog("导入", ref fileName
                                            , fileExtentions) == DialogReturn.OK)
            {
                if (!File.Exists(fileName))
                {
                    UIPublic.ShowErrorDialog("选择的文件不存在");
                }
                else
                {
                    var obj = IOPublic.ReadObjectFromFile(fileName);
                    try {
                        action(obj);
                    }
                    catch (Exception err) {
                        UIPublic.ShowErrorDialog(err.Message);
                    }
                }
            }
        }
Пример #24
0
        /// <summary>
        /// 根据对象填充属性字段
        /// </summary>
        /// <param name="groupItem">组项目</param>
        /// <param name="objType">对象类型</param>
        private void RetrieveFields(LayoutControlGroup groupItem, Type objType)
        {
            UIPublic.ShowWaitingForm();
            this.DataLayoutControl.CloseControl();
            EditControls.Clear();
            this.DataLayoutControl.Clear(true, true);

            var controller = Controller as ObjectLayoutEditController;

            if (objType == null)
            {
                return;
            }

            this.DataLayoutControl.SuspendLayout();
            TabbedControlGroup tabbledGroup = null;

            foreach (PropertyDescriptor propDesc in TypeDescriptor.GetProperties(objType))
            {
                if (!propDesc.IsBrowsable)
                {
                    continue;
                }

                BaseEditController editController = null;
                Control            editControl    = null;

                if (controller != null)
                {
                    editController = controller.GetPredefinedEditController(propDesc.PropertyType, propDesc.Name);
                }

                if (editController == null)
                {
                    if (propDesc.PropertyType.IsAddon())
                    {
                        var commonEditController = new CommonObjectEditController();
                        commonEditController.StartEditProperty(EditValue, propDesc.Name);
                        editController = commonEditController;
                    }
                    else
                    {
                        editController = EditorPublic.GetEditController(propDesc);
                    }
                }

                editControl = editController.CreateEditControl(propDesc.PropertyType);

                if (editControl.GetType().GetProperty("EditValue") == null)
                {
                    throw new Exception("编辑控件必须实现EditValue属性");
                }

                LayoutControlItem layoutControlItem = null;
                if (editControl is BaseObjectEditControl)
                {
                    if (tabbledGroup == null)
                    {
                        tabbledGroup = groupItem.AddTabbedGroup();
                    }
                    var layoutGroupItem = tabbledGroup.AddTabPage();
                    layoutGroupItem.Name = "Group_" + propDesc.Name;
                    layoutGroupItem.Text = propDesc.DisplayName;
                    layoutGroupItem.CustomizationFormText = "组_" + propDesc.DisplayName;
                    layoutGroupItem.Padding = new DevExpress.XtraLayout.Utils.Padding(0);

                    layoutControlItem = layoutGroupItem.AddItem();
                    layoutControlItem.TextLocation = DevExpress.Utils.Locations.Top;
                }
                else
                {
                    layoutControlItem = groupItem.AddItem();
                    layoutControlItem.TextLocation = DevExpress.Utils.Locations.Left;
                }
                EditControls.Add(propDesc, editControl);
                editControl.Tag  = propDesc;
                editControl.Name = propDesc.Name;

                layoutControlItem.Control = editControl;
                layoutControlItem.Name    = propDesc.Name;
                layoutControlItem.Text    = propDesc.DisplayName;
                layoutControlItem.CustomizationFormText = propDesc.DisplayName;

                if (editControl is BaseObjectEditControl)
                {
                    layoutControlItem.TextVisible = false;
                }
                else
                {
                    layoutControlItem.TextVisible = true;
                }
            }
            this.DataLayoutControl.ResumeLayout();
            this.DataLayoutControl.SetDefaultLayout();

            // 读取布局数据
            if (controller != null && controller.LayoutData.IsNotNullOrEmpty())
            {
                this.DataLayoutControl.SetLayoutData(controller.LayoutData);
            }
            UIPublic.CloseWaitingForm();
        }
Пример #25
0
 private void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e)
 {
     UIPublic.ShowExceptionDialog(e.Exception);
 }
Пример #26
0
        private void PropertyGridControl_PopupMenuShowing(object sender, DevExpress.XtraVerticalGrid.Events.PopupMenuShowingEventArgs e)
        {
            if (e.Row != null)
            {
                var controller = Controller as ObjectPropertyEditController;
                if (controller == null)
                {
                    return;
                }
                var propDesc = PropertyGridControl.GetPropertyDescriptor(e.Row);

                if (propDesc != null)
                {
                    // 修改字段标题
                    var menuChangeCaption = new DXEditMenuItem("标题(&C)"
                                                               , new TextEditController().CreateRepositoryItem(typeof(string)));
                    menuChangeCaption.Width             = 100;
                    menuChangeCaption.EditValue         = e.Row.Properties.Caption;
                    menuChangeCaption.BeginGroup        = true;
                    menuChangeCaption.EditValueChanged += (s, a) =>
                    {
                        if (menuChangeCaption.EditValue.IsNull())
                        {
                            e.Row.Properties.Caption = propDesc.Name;
                        }
                        else
                        {
                            e.Row.Properties.Caption = (string)menuChangeCaption.EditValue;
                        }
                    };
                    e.Menu.Items.Add(menuChangeCaption);

                    // 增加删除行菜单
                    var menuHideRow = new DXMenuItem("隐藏行(&D)"
                                                     , (s, a) =>
                    {
                        e.Row.Visible = false;
                    });
                    e.Menu.Items.Add(menuHideRow);

                    // 增加更改编辑器菜单
                    var menuChangeEditor = new DXMenuItem("更改编辑器(&E)..."
                                                          , (s, a) =>
                    {
                        Type editControllerType;
                        if (EditorPublic.SelectEditControllerType(propDesc.PropertyType, out editControllerType) == DialogReturn.OK)
                        {
                            if (editControllerType != null)
                            {
                                var editController = editControllerType.CreateInstance() as BaseEditController;
                                if (controller != null)
                                {
                                    controller.SetPredfinedEditController(propDesc.Name, editController.GetType());
                                }
                            }
                        }
                    }
                                                          , Properties.Resources.renamedatasource_16x16);
                    menuChangeEditor.BeginGroup = true;
                    e.Menu.Items.Add(menuChangeEditor);
                    // 增加恢复编辑器菜单
                    var menuRecoverEditor = new DXMenuItem("恢复编辑器(&R)"
                                                           , (s, a) =>
                    {
                        if (UIPublic.ShowYesNoDialog("您确定要恢复默认的编辑器吗?") == DialogReturn.Yes)
                        {
                            controller.RemovePredefinedEditController(propDesc.Name);
                        }
                    }
                                                           , Properties.Resources.clearformatting_16x16);
                    e.Menu.Items.Add(menuRecoverEditor);
                }

                // 恢复所有编辑器
                var menuClearEditors = new DXMenuItem("恢复所有编辑器(&C)"
                                                      , (s, a) =>
                {
                    if (UIPublic.ShowYesNoDialog("您确定要恢复所有默认的编辑器吗?") == DialogReturn.Yes)
                    {
                        controller.ClearPredefinedEditControllers();
                    }
                }
                                                      , Properties.Resources.clear_16x16);
                menuClearEditors.BeginGroup = true;
                e.Menu.Items.Add(menuClearEditors);
            }
        }
Пример #27
0
        private void DataLayoutControl_PopupMenuShowing(object sender, PopupMenuShowingEventArgs e)
        {
            if (e.HitInfo.Item != null)
            {
                var controller = Controller as ObjectLayoutEditController;
                if (controller == null)
                {
                    return;
                }
                var layoutItem = e.HitInfo.Item as LayoutControlItem;
                if (layoutItem == null)
                {
                    return;
                }

                var editControl = layoutItem.Control;
                var propDesc    = editControl.Tag as PropertyDescriptor;

                if (propDesc != null)
                {
                    // 修改字段标题
                    var menuChangeCaption = new DXEditMenuItem("标题(&C)"
                                                               , new TextEditController().CreateRepositoryItem(typeof(string)));
                    menuChangeCaption.Width             = 100;
                    menuChangeCaption.EditValue         = layoutItem.Text;
                    menuChangeCaption.BeginGroup        = true;
                    menuChangeCaption.EditValueChanged += (s, a) =>
                    {
                        if (menuChangeCaption.EditValue.IsNull())
                        {
                            layoutItem.Text = propDesc.Name;
                        }
                        else
                        {
                            layoutItem.Text = (string)menuChangeCaption.EditValue;
                        }
                    };
                    e.Menu.Items.Add(menuChangeCaption);


                    // 增加更改编辑器菜单
                    var menuChangeEditor = new DXMenuItem("更改编辑器(&E)..."
                                                          , (s, a) =>
                    {
                        Type editControllerType;
                        if (EditorPublic.SelectEditControllerType(propDesc.PropertyType, out editControllerType) == DialogReturn.OK)
                        {
                            if (editControllerType != null)
                            {
                                var editController = editControllerType.CreateInstance() as BaseEditController;
                                // 清除前保存配置
                                controller.LayoutData = this.DataLayoutControl.GetLayoutData();
                                controller.SetPredfinedEditController(propDesc.Name, editController.GetType());
                                EditValue = EditValue;
                            }
                        }
                    }
                                                          , Properties.Resources.renamedatasource_16x16);
                    menuChangeEditor.BeginGroup = true;
                    e.Menu.Items.Add(menuChangeEditor);
                    // 增加恢复编辑器菜单
                    var menuRecoverEditor = new DXMenuItem("恢复编辑器(&R)"
                                                           , (s, a) =>
                    {
                        if (UIPublic.ShowYesNoDialog("您确定要恢复默认的编辑器吗?") == DialogReturn.Yes)
                        {
                            // 清除前保存配置
                            controller.LayoutData = this.DataLayoutControl.GetLayoutData();
                            controller.RemovePredefinedEditController(propDesc.Name);
                            EditValue = EditValue;
                        }
                    }
                                                           , Properties.Resources.clearformatting_16x16);
                    e.Menu.Items.Add(menuRecoverEditor);
                }

                // 恢复所有编辑器
                var menuClearEditors = new DXMenuItem("恢复所有编辑器(&C)"
                                                      , (s, a) =>
                {
                    if (UIPublic.ShowYesNoDialog("您确定要恢复所有默认的编辑器吗?") == DialogReturn.Yes)
                    {
                        // 清除前保存配置
                        controller.LayoutData = this.DataLayoutControl.GetLayoutData();
                        controller.ClearPredefinedEditControllers();
                        EditValue = EditValue;
                    }
                }
                                                      , Properties.Resources.clear_16x16);
                menuClearEditors.BeginGroup = true;
                e.Menu.Items.Add(menuClearEditors);
            }
        }