private void DXCreateLayoutMenuItems()
        {
            var ribeNewStateName = new RepositoryItemButtonEdit
            {
                AutoHeight = false,
                NullText   = @"Введите имя"
            };

            ribeNewStateName.Buttons.Clear();
            ribeNewStateName.Buttons.Add(new EditorButton(ButtonPredefines.Glyph)
            {
                Image   = Resources.save,
                ToolTip = "Сохранить состояние с введённым именем"
            });
            var dxmeNewLayout = new DXEditMenuItem
            {
                Image = Resources.layout_add,
                Edit  = ribeNewStateName,
                Width = 100
            };
            var dxdmiNewState = new DXSubMenuItem("Сохранить состояние")
            {
                BeginGroup = true,
                Image      = Resources.saveas
            };
            var dxmiDefaultState = new DXMenuItem("Начальное состояние")
            {
                Image = Resources.layout_default
            };
            var dxmiLastState = new DXMenuItem("Последнее сохранённое")
            {
                Image = Resources.layout_link
            };

            //Создаём обработчики событий для меню
            menu.BeforePopup             += BeforePopupMenuLayout;
            ribeNewStateName.ButtonClick += NewStateNameButtonClick;
            bbiDeleteStates.Click        += DeleteStatesItemClick;
            dxmiDefaultState.Click       += DefaultStateItemClick;
            dxmiLastState.Click          += LastStateItemClick;

            //Распределяем кнопки по меню
            dxdmiNewState.Items.Add(dxmeNewLayout);
            menu.Items.Add(dxdmiNewState);
            menu.Items.Add(dxsmiSaved);
            menu.Items.Add(dxsmiRemove);
            menu.Items.Add(dxmiDefaultState);
            menu.Items.Add(dxmiLastState);
        }
        private void AddStateItemToMenu(int id, string name)
        {
            var riceStates = new RepositoryItemCheckEdit
            {
                AutoWidth      = true,
                Caption        = string.Empty,
                GlyphAlignment = HorzAlignment.Far,
                NullStyle      = StyleIndeterminate.Unchecked,
                Appearance     = { BackColor = Color.Transparent }
            };

            AddBarButton(dxsmiSaved, name, UserStateItemClick, id);
            var checkStateBtn = new DXEditMenuItem
            {
                Caption = name,
                Edit    = riceStates,
                Tag     = id
            };

            dxsmiRemove.Items.Add(checkStateBtn);
        }
        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);
            }
        }
Beispiel #4
0
        protected virtual void CustomMenuPopupMenuShowing(object sender, PopupMenuShowingEventArgs e)
        {
            //При вызове обычного меню на клике по строке
            switch (e.MenuType)
            {
            case GridMenuType.User:
            case GridMenuType.Row:
                RepositoryItem repository = null;
                //Показать меню для выбора значения выделенных строк
                if (OptionsBehavior.Editable && OptionsCustomization.ShowSelectedRowMenu && FocusedColumn != null &&
                    FocusedColumn.OptionsColumn.ShowEditorInPopupMenu && FocusedColumn.OptionsColumn.AllowEdit &&
                    !FocusedColumn.OptionsColumn.ReadOnly && SelectedRowsCount > 1)
                {
                    repository = DXCustomMenuCreator.DXCreateBarItemByFocusedColumn(FocusedColumn);
                    var buttonRepository = repository as RepositoryItemButtonEdit;
                    if (buttonRepository != null && buttonRepository.Buttons.Count > 1)
                    {
                        buttonRepository.ButtonClick += ClearSelectedRowsFromMenu;
                    }
                }
                if (CustomPopupMenu != null)
                {
                    AddButtonInPopupMenu();
                    DeleteButtonInPopupMenu();
                    var link = CustomPopupMenu.ItemLinks
                               .OfType <BarEditItemLink>()
                               .FirstOrDefault(bei => bei.Item.Id == -1);
                    if (link != null)
                    {
                        CustomPopupMenu.RemoveLink(link);
                    }
                    if (repository != null)
                    {
                        var bei = new BarEditItem
                        {
                            Edit = repository,
                            Id   = -1,
                            Tag  = FocusedColumn
                        };
                        bei.EditValueChanged += SelectedRowEditValueChanged;
                        CustomPopupMenu.AddItem(bei);
                    }
                }
                else
                {
                    var dxmAdd    = new DXMenuItem(AddCaption, AddRow, Resources.Add);
                    var dxmRemove = new DXMenuItem(RemoveCaption, RemoveRows, Resources.Remove);
                    if (e.MenuType == GridMenuType.User && e.Menu == null)
                    {
                        e.Menu = new GridViewMenu(this);
                    }
                    if (OptionsCustomization.AllowAdd)
                    {
                        e.Menu.Items.Add(dxmAdd);
                    }
                    if (OptionsCustomization.AllowDelete)
                    {
                        e.Menu.Items.Add(dxmRemove);
                        dxmRemove.Enabled = SelectedRowsCount != 0;
                    }
                    if (repository != null)
                    {
                        var bei = new DXEditMenuItem
                        {
                            Edit = repository,
                            Tag  = FocusedColumn
                        };
                        bei.EditValueChanged += SelectedRowEditValueChanged;
                        e.Menu.Items.Add(bei);
                    }
                }
                break;

            case GridMenuType.Column:
                DXPopupMenu menu = e.Menu as GridViewColumnMenu;
                if (menu == null)
                {
                    return;
                }
                DXCustomMenuCreator.HideCustomizationColumns(menu);
                DXCustomMenuCreator.DXCreateSelectSelectionMenu(menu, CustomItemClick, RowItemClick, CheckboxColumnItemClick);
                DXCustomMenuCreator.DXCreateLayoutMenuItems(GridControl, ref menu);
                break;
            }
        }
Beispiel #5
0
 protected virtual void CustomMenuPopupMenuShowing(object sender, PopupMenuShowingEventArgs e)
 {
     //При вызове обычного меню на клике по строке
     switch (e.MenuType)
     {
         case GridMenuType.User:
         case GridMenuType.Row:
             RepositoryItem repository = null;
             //Показать меню для выбора значения выделенных строк
             if (OptionsBehavior.Editable && OptionsCustomization.ShowSelectedRowMenu && FocusedColumn != null &&
                 FocusedColumn.OptionsColumn.ShowEditorInPopupMenu && FocusedColumn.OptionsColumn.AllowEdit &&
                 !FocusedColumn.OptionsColumn.ReadOnly && SelectedRowsCount > 1)
             {
                 repository = DXCustomMenuCreator.DXCreateBarItemByFocusedColumn(FocusedColumn);
                 var buttonRepository = repository as RepositoryItemButtonEdit;
                 if (buttonRepository != null && buttonRepository.Buttons.Count > 1)
                 {
                     buttonRepository.ButtonClick += ClearSelectedRowsFromMenu;
                 }
             }
             if (CustomPopupMenu != null)
             {
                 AddButtonInPopupMenu();
                 DeleteButtonInPopupMenu();
                 var link = CustomPopupMenu.ItemLinks
                     .OfType<BarEditItemLink>()
                     .FirstOrDefault(bei => bei.Item.Id == -1);
                 if (link != null)
                 {
                     CustomPopupMenu.RemoveLink(link);
                 }
                 if (repository != null)
                 {
                     var bei = new BarEditItem
                     {
                         Edit = repository,
                         Id = -1,
                         Tag = FocusedColumn
                     };
                     bei.EditValueChanged += SelectedRowEditValueChanged;
                     CustomPopupMenu.AddItem(bei);
                 }
             }
             else
             {
                 var dxmAdd = new DXMenuItem(AddCaption, AddRow, Resources.Add);
                 var dxmRemove = new DXMenuItem(RemoveCaption, RemoveRows, Resources.Remove);
                 if (e.MenuType == GridMenuType.User && e.Menu == null)
                     e.Menu = new GridViewMenu(this);
                 if (OptionsCustomization.AllowAdd)
                     e.Menu.Items.Add(dxmAdd);
                 if (OptionsCustomization.AllowDelete)
                 {
                     e.Menu.Items.Add(dxmRemove);
                     dxmRemove.Enabled = SelectedRowsCount != 0;
                 }
                 if (repository != null)
                 {
                     var bei = new DXEditMenuItem
                     {
                         Edit = repository,
                         Tag = FocusedColumn
                     };
                     bei.EditValueChanged += SelectedRowEditValueChanged;
                     e.Menu.Items.Add(bei);
                 }
             }
             break;
         case GridMenuType.Column:
             DXPopupMenu menu = e.Menu as GridViewColumnMenu;
             if (menu == null)
             {
                 return;
             }
             DXCustomMenuCreator.HideCustomizationColumns(menu);
             DXCustomMenuCreator.DXCreateSelectSelectionMenu(menu, CustomItemClick, RowItemClick, CheckboxColumnItemClick);
             DXCustomMenuCreator.DXCreateLayoutMenuItems(GridControl, ref menu);
             break;
     }
 }
        private void DXCreateLayoutMenuItems()
        {
            var ribeNewStateName = new RepositoryItemButtonEdit
            {
                AutoHeight = false,
                NullText = @"Введите имя"
            };
            ribeNewStateName.Buttons.Clear();
            ribeNewStateName.Buttons.Add(new EditorButton(ButtonPredefines.Glyph)
            {
                Image = Resources.save,
                ToolTip = "Сохранить состояние с введённым именем"
            });
            var dxmeNewLayout = new DXEditMenuItem
            {
                Image = Resources.layout_add,
                Edit = ribeNewStateName,
                Width = 100
            };
            var dxdmiNewState = new DXSubMenuItem("Сохранить состояние")
            {
                BeginGroup = true,
                Image = Resources.saveas
            };
            var dxmiDefaultState = new DXMenuItem("Начальное состояние")
            {
                Image = Resources.layout_default
            };
            var dxmiLastState = new DXMenuItem("Последнее сохранённое")
            {
                Image = Resources.layout_link
            };

            //Создаём обработчики событий для меню
            menu.BeforePopup += BeforePopupMenuLayout;
            ribeNewStateName.ButtonClick += NewStateNameButtonClick;
            bbiDeleteStates.Click += DeleteStatesItemClick;
            dxmiDefaultState.Click += DefaultStateItemClick;
            dxmiLastState.Click += LastStateItemClick;

            //Распределяем кнопки по меню
            dxdmiNewState.Items.Add(dxmeNewLayout);
            menu.Items.Add(dxdmiNewState);
            menu.Items.Add(dxsmiSaved);
            menu.Items.Add(dxsmiRemove);
            menu.Items.Add(dxmiDefaultState);
            menu.Items.Add(dxmiLastState);
        }
 private void AddStateItemToMenu(int id, string name)
 {
     var riceStates = new RepositoryItemCheckEdit
     {
         AutoWidth = true,
         Caption = string.Empty,
         GlyphAlignment = HorzAlignment.Far,
         NullStyle = StyleIndeterminate.Unchecked,
         Appearance = { BackColor = Color.Transparent }
     };
     AddBarButton(dxsmiSaved, name, UserStateItemClick, id);
     var checkStateBtn = new DXEditMenuItem
     {
         Caption = name,
         Edit = riceStates,
         Tag = id
     };
     dxsmiRemove.Items.Add(checkStateBtn);
 }
        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);
            }
        }