Example #1
0
        protected override void FillItem(RibbonItemData item)
        {
            base.FillItem(item);
            var cItem = (RibbonCommand)item;

            cItem.Command = Command;
        }
Example #2
0
        protected virtual void FillItem(RibbonItemData item)
        {
            item.Name        = Name;
            item.Access      = Access?.Select(s => s.Access).ToList();
            item.Description = Description;
            item.IsTest      = IsTest;
            var imgName = RibbonGroupData.GetImageName(item.Name);

            RibbonGroupData.SaveImage(Image, imgName, RibbonVM.userGroup);
        }
Example #3
0
 public RibbonItemDataVM(RibbonItemData item)
 {
     Name        = item.Name;
     Description = item.Description;
     IsTest      = item.IsTest;
     Access      = new ObservableCollection <AccessItem>(item.Access?.Select(s => new AccessItem
     {
         Access = s
     }) ?? new List <AccessItem>());
 }
        protected override void FillItem(RibbonItemData item)
        {
            base.FillItem(item);
            var blItem = (RibbonInsertBlock)item;

            blItem.File       = File.FileName;
            blItem.Layer      = Layer;
            blItem.Explode    = Explode;
            blItem.BlockName  = BlockName;
            blItem.Properties = Properties.ToList();
        }
        /// <summary>
        /// Create push button on the panel
        /// </summary>
        /// <param name="name">Internal name of the button</param>
        /// <param name="text">Text user will see</param>
        /// <param name="externalCommandType">Class which implements IExternalCommand interface.
        /// This command will be execute when user push the button</param>
        /// <param name="action">Additional action with whe button</param>
        /// <returns>Panel where button were created</returns>
        public Panel CreateButton(string name, string text, Type externalCommandType, Action <Button> action)
        {
            var button = new Button(name, text, externalCommandType);

            action?.Invoke(button);

            RibbonItemData buttonData = button.Finish();

            Source.AddItem(buttonData);

            return(this);
        }
        public Panel CreatePullDownButton(string name, string text, Action <PulldownButton> action)
        {
            var button = new PulldownButton(name, text, nameConvention);

            action?.Invoke(button);

            RibbonItemData buttonData = button.Finish();

            var ribbonItem = Source.AddItem(buttonData) as Autodesk.Revit.UI.PulldownButton;

            button.BuildButtons(ribbonItem);

            return(this);
        }
Example #7
0
        public RibbonItemDataVM GetItemVM(RibbonItemData item)
        {
            RibbonItemDataVM itemVm;

            switch (item)
            {
            case RibbonBreakPanel ribbonBreak:
                itemVm = new RibbonBreakVM(ribbonBreak);
                break;

            case RibbonToggle ribbonToggle:
                itemVm = new RibbonToggleVM(ribbonToggle);
                break;

            case RibbonCommand ribbonCommand:
                itemVm = new RibbonCommandVM(ribbonCommand);
                break;

            case RibbonVisualGroupInsertBlock ribbonVisualGroupInsertBlock:
                itemVm = new RibbonVisualGroupInsertBlockVM(ribbonVisualGroupInsertBlock, BlockFiles);
                break;

            case RibbonVisualInsertBlock ribbonVisualInsertBlock:
                itemVm = new RibbonVisualInsertBlockVM(ribbonVisualInsertBlock, BlockFiles);
                break;

            case RibbonInsertBlock ribbonInsertBlock:
                itemVm = new RibbonInsertBlockVM(ribbonInsertBlock, BlockFiles);
                break;

            case RibbonSplit ribbonSplit:
                itemVm = new RibbonSplitVM(ribbonSplit);
                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(item));
            }

            itemVm.Name   = item.Name;
            itemVm.Access = new ObservableCollection <AccessItem>(item.Access?.Select(s => new AccessItem
            {
                Access = s
            }) ?? new List <AccessItem>());
            itemVm.Description = item.Description;
            itemVm.IsTest      = item.IsTest;
            itemVm.Image       = RibbonGroupData.LoadImage(userGroup, item.Name);
            return(itemVm);
        }
        /// <summary>
        /// Create new Stacked items at the panel
        /// </summary>
        /// <param name="action">Action where you must add items to the stacked panel</param>
        /// <returns>Panel where stacked items was created</returns>
        public Panel CreateStackedItems(Action <StackedItem> action)
        {
            if (action == null)
            {
                throw new ArgumentNullException(nameof(action));
            }

            var stackedItem = new StackedItem(nameConvention);

            action.Invoke(stackedItem);

            if (stackedItem.ItemsCount < 2 || stackedItem.ItemsCount > 3)
            {
                throw new InvalidOperationException("You must create 2 or three items in the StackedItems");
            }

            RibbonItemData item1 = stackedItem.Buttons[0].Finish();
            RibbonItemData item2 = stackedItem.Buttons[1].Finish();

            IList <RibbonItem> ribbonItems;

            if (stackedItem.ItemsCount == 3)
            {
                RibbonItemData item3 = stackedItem.Buttons[2].Finish();
                ribbonItems = Source.AddStackedItems(item1, item2, item3);
            }
            else
            {
                ribbonItems = Source.AddStackedItems(item1, item2);
            }

            for (var i = 0; i < stackedItem.Buttons.Count; ++i)
            {
                stackedItem.Buttons[i].DoPostProcessing(ribbonItems[i]);
            }

            return(this);
        }
Example #9
0
        //The maxi button of stackedItem accepted is 3
        public CustomPanel CreateStackedItems(Action <CustomStackedItem> action)
        {
            if (action is null)
            {
                throw new ArgumentNullException(nameof(action));
            }

            var stackedItem = new CustomStackedItem(this);

            action.Invoke(stackedItem);

            if (stackedItem.ItemsCount < 2 ||
                stackedItem.ItemsCount > 3)
            {
                throw new InvalidOperationException("You must create 2 or three items in the StackedItems");
            }

            var item1 = stackedItem.Items[0].GetItemData();
            var item2 = stackedItem.Items[1].GetItemData();
            IList <RibbonItem> ribbonItems;

            if (stackedItem.ItemsCount == 3)
            {
                RibbonItemData item3 = stackedItem.Items[2].GetItemData();
                ribbonItems = _panel.AddStackedItems(item1, item2, item3);
            }
            else
            {
                ribbonItems = _panel.AddStackedItems(item1, item2);
            }

            for (var i = 0; i < stackedItem.Items.Count; ++i)
            {
                stackedItem.Items[i].DoPostProcessing(ribbonItems[i]);//?
            }
            return(this);
        }
 public RibbonItem AddItem(RibbonItemData itemData)
 {
     return(new RibbonItem());
 }
 /// <summary>
 /// Adds a stacked containing 3 UI Elements in the current panel.
 /// </summary>
 /// <param name="item1">Top UI Element.</param>
 /// <param name="item2">Middle UI Element.</param>
 /// <param name="item3">Bottom UI Element.</param>
 /// <returns>The list of elements added</returns>
 public IList <RibbonItem> AddStackedItems(RibbonItemData item1, RibbonItemData item2, RibbonItemData item3)
 {
     return(panel.AddStackedItems(item1, item2, item3));
 }
Example #12
0
        private static IPaletteCommand GetCommand(RibbonItemData item, string panel, string userGroup)
        {
            if (!RibbonBuilder.IsAccess(item.Access))
            {
                return(null);
            }
            IPaletteCommand com = null;

            switch (item)
            {
            case RibbonBreakPanel ribbonBreakPanel:
                break;

            case RibbonToggle ribbonToggle:
                var toggle = new ToggleButton();
                toggle.IsChecked   = ribbonToggle.IsChecked;
                toggle.CommandName = ribbonToggle.Command;
                com = toggle;
                break;

            case RibbonCommand ribbonCommand:
                var c = new PaletteCommand();
                c.CommandName = ribbonCommand.Command;
                com           = c;
                break;

            case RibbonVisualGroupInsertBlock ribbonVisualGroupInsertBlock:
                break;

            case RibbonVisualInsertBlock ribbonVisualInsertBlock:
                var vb = new PaletteVisualInsertBlocks();
                vb.file    = ribbonVisualInsertBlock.File;
                vb.filter  = s => Regex.IsMatch(s, ribbonVisualInsertBlock.Filter);
                vb.explode = ribbonVisualInsertBlock.Explode;
                vb.Layer   = new LayerInfo(ribbonVisualInsertBlock.Layer);
                com        = vb;
                break;

            case RibbonInsertBlock ribbonInsertBlock:
                var ib = new PaletteInsertBlock();
                ib.file    = ribbonInsertBlock.File;
                ib.blName  = ribbonInsertBlock.BlockName;
                ib.explode = ribbonInsertBlock.Explode;
                ib.Layer   = new LayerInfo(ribbonInsertBlock.Layer);
                ib.props   = ribbonInsertBlock.Properties;
                com        = ib;
                break;

            case RibbonSplit ribbonSplit:
                var coms = ribbonSplit.Items.Select(s => GetCommand(s, panel, userGroup))
                           .Where(w => w != null).ToList();
                var split = new SplitCommand(coms);
                com = split;
                break;
            }

            if (com != null)
            {
                com.Name        = item.Name;
                com.Description = item.Description;
                com.Image       = RibbonBuilder.GetImage(item, userGroup);
                com.Access      = item.Access;
                com.Command     = item.GetCommand();
                com.IsTest      = item.IsTest;
                com.Group       = panel;
            }

            return(com);
        }