using System;
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.EditorInput;
using Autodesk.AutoCAD.Runtime;
using Autodesk.Windows;
using CadApp = Autodesk.AutoCAD.ApplicationServices.Core.Application;
[assembly
: CommandClass
(typeof(RibbonGalleryTest
.RibbonComboAndGalleryCommands))]
namespace RibbonGalleryTest
{
public class RibbonComboAndGalleryCommands
{
public RibbonComboAndGalleryCommands() => ribbonCombo1.CurrentChanged +=
new EventHandler
<RibbonPropertyChangedEventArgs
>( RibbonCombo1_CurrentChanged);
private void RibbonCombo1_CurrentChanged(object sender, RibbonPropertyChangedEventArgs e)
{
RibbonButton button = ribbonCombo1.Current as RibbonButton;
CadApp.ShowAlertDialog(button.Text);
}
public RibbonCombo ribbonCombo1
= new RibbonCombo
();
/// ////////////////////////////////////////////////////
///
[CommandMethod("kb_CreateGallery")]
public void CreateGallery()
{
RibbonControl ribbonControl = ComponentManager.Ribbon;
var ribbonTab
= new RibbonTab
() { Name = "RibbonComboAndGalleryTest",
Title = "RibbonComboAndGallery Test",
Id = "ID_RibbonComboAndGalleryTab"
};
ribbonControl.Tabs.Add(ribbonTab);
CreatePanel1(ribbonTab);
CreatePanel2(ribbonTab);
CreatePanel3(ribbonTab);
ribbonTab.IsActive = true;
}
/// ////////////////////////////////////////////////////
///
private void CreatePanel3(RibbonTab ribbonTab)
{
var panel3Src
= new RibbonPanelSource
() { Name = "MyPanel3",
Title = "My Panel 3",
Id = "ID_MyPanel3"
};
var panel3
= new RibbonPanel
() { Source = panel3Src
};
ribbonTab.Panels.Add(panel3);
var buttonSplit31
= new RibbonSplitButton
() { Name = "Button31",
Text = "SplitterButton31",
Id = "ID_Button31",
CommandHandler
= new RibbonCommandHandler
(),
ShowText = true,
ShowImage = true,
IsSplit = true
};
var button32
= new RibbonButton
() { Name = "Button32",
Text = "My Button32",
Id = "ID_Button32",
ShowText = true,
ShowImage = true,
Width = 250,
CommandHandler
= new RibbonCommandHandler
() };
var button33
= new RibbonButton
() { Name = "Button33",
Text = "My Button33",
Id = "ID_Button33",
ShowText = true,
ShowImage = true,
CommandHandler
= new RibbonCommandHandler
() };
var button34
= new RibbonButton
() { Name = "Button34",
Text = "My Button34",
Id = "ID_Button34",
ShowText = true,
//ShowImage = true,
CommandHandler
= new RibbonCommandHandler
() };
buttonSplit31.Items.Add(button32);
buttonSplit31.Items.Add(button33);
buttonSplit31.Items.Add(button34);
panel3Src.Items.Add(buttonSplit31);
}
/// ////////////////////////////////////////////////////
///
private void CreatePanel2(RibbonTab ribbonTab)
{
var panel2Src
= new RibbonPanelSource
() { Name = "MyPanel2",
Title = "My Panel 2",
Id = "ID_MyPanel2"
};
var panel2
= new RibbonPanel
() { Source = panel2Src
};
ribbonTab.Panels.Add(panel2);
var button21
= new RibbonButton
() { Name = "Button21",
Text = "My Button21",
Id = "ID_Button21",
CommandHandler
= new RibbonCommandHandler
() };
var button22
= new RibbonButton
() { Name = "Button22",
Text = "My Button22",
Id = "ID_Button22",
CommandHandler
= new RibbonCommandHandler
() };
var button23
= new RibbonButton
() { Name = "Button23",
Text = "My Button23",
Id = "ID_Button23",
ShowText = true,
CommandHandler
= new RibbonCommandHandler
() };
var button24
= new RibbonButton
() { Name = "Button24",
Text = "My Button24",
Id = "ID_Button24",
ShowText = true,
CommandHandler
= new RibbonCommandHandler
() };
var button25
= new RibbonButton
() { Name = "Button25",
Text = "My Button25",
Id = "ID_Button25",
ShowText = true,
Size = RibbonItemSize.Large,
Orientation = System.Windows.Controls.Orientation.Vertical,
CommandHandler
= new RibbonCommandHandler
() };
// assign to publically declared Item
ribbonCombo1.Name = "MyCombo1";
ribbonCombo1.Id = "ID_MyCombo1";
ribbonCombo1.Text = "Choose";
ribbonCombo1.IsEnabled = true;
ribbonCombo1.ShowText = true;
ribbonCombo1.MinWidth = 250;
ribbonCombo1.Items.Add(button21);
ribbonCombo1.Items.Add(button22);
ribbonCombo1.Current = button22;
var vertPanel
= new RibbonRowPanel
();
vertPanel.Items.Add(button23);
vertPanel
.Items.Add(new RibbonRowBreak
()); vertPanel.Items.Add(button24);
vertPanel
.Items.Add(new RibbonRowBreak
()); vertPanel.Items.Add(ribbonCombo1);
panel2Src.Items.Add(vertPanel);
panel2Src
.Items.Add(new RibbonSeparator
()); panel2Src.Items.Add(button25);
}
private void CreatePanel1(RibbonTab ribbonTab)
{
var panelSrc
= new RibbonPanelSource
() { Name = "MyPanel1",
Title = "My Panel 1",
Id = "ID_MyPanel1"
};
var gallery1
= new RibbonGallery
() { Name = "MyGallery1",
Id = "ID_MyGallery1"
};
var button1
= new RibbonButton
() { Name = "Button1",
Text = "My Button1",
Id = "ID_Button1",
ShowText = true,
ShowImage = true,
CommandHandler
= new RibbonCommandHandler
() };
var button2
= new RibbonButton
() { Name = "Button2",
Text = "My Button2",
Id = "ID_Button2",
ShowText = true,
ShowImage = true,
CommandHandler
= new RibbonCommandHandler
() };
var button3
= new RibbonButton
() { Name = "Button3",
Text = "My Button3",
Id = "ID_Button3",
CommandHandler
= new RibbonCommandHandler
() };
var button4
= new RibbonButton
() { Name = "Button4",
Text = "My Button4",
Id = "ID_Button4",
CommandHandler
= new RibbonCommandHandler
() };
gallery1.Items.Add(button1);
gallery1.Items.Add(button2);
gallery1.Items.Add(button3);
gallery1.Items.Add(button4);
gallery1.DisplayMode = GalleryDisplayMode.ComboBox;
panelSrc.Items.Add(gallery1);
var panel
= new RibbonPanel
{ Source
= panelSrc
};
ribbonTab.Panels.Add(panel);
}
}
public class RibbonCommandHandler : System.Windows.Input.ICommand
{
public bool CanExecute(object parameter)
{
return true;
}
public event EventHandler CanExecuteChanged;
public void Execute(object parameter)
{
var ed = CadApp.DocumentManager.MdiActiveDocument.Editor;
if (parameter
is RibbonButton
) { RibbonButton button = parameter as RibbonButton;
ed.WriteMessage($"\nRibbonButton has Executed: {button.Text}\n");
}
}
}
}