public GenerateView ( IContextMenuProvider provider, object parent, |
||
provider | IContextMenuProvider | Provider of context menu information. |
parent | object | Owning object reference. |
columns | Containing columns. | |
standardStyle | bool | Draw items with standard or alternate style. |
imageColumn | bool | Draw an image background for the item images. |
return | ViewBase |
public override ViewBase GenerateView(IContextMenuProvider provider,
object parent,
ViewLayoutStack columns,
bool standardStyle,
bool imageColumn)
{
if (Horizontal && (parent is KryptonContextMenuItemCollection))
{
// Create a stack of horizontal items inside the item
ViewLayoutDocker docker = new ViewLayoutDocker();
// Take up same space as the image column, so separator starts close to actual text
ViewDrawContent imageContent = new ViewDrawContent(provider.ProviderStateCommon.ItemImage.Content, new FixedContentValue(null, null, null, Color.Empty), VisualOrientation.Top);
ViewDrawMenuImageCanvas imageCanvas = new ViewDrawMenuImageCanvas(provider.ProviderStateCommon.ItemImage.Back, provider.ProviderStateCommon.ItemImage.Border, 0, true);
imageCanvas.Add(imageContent);
docker.Add(new ViewLayoutCenter(imageCanvas), ViewDockStyle.Left);
docker.Add(new ViewLayoutSeparator(1, 0), ViewDockStyle.Left);
// Gap that matches left padding of text/extra text
docker.Add(new ViewLayoutMenuSepGap(provider.ProviderStateCommon, standardStyle), ViewDockStyle.Left);
// Separator Display
ViewLayoutStack separatorStack = new ViewLayoutStack(false);
separatorStack.Add(new ViewLayoutSeparator(1, 1));
separatorStack.Add(new ViewDrawMenuSeparator(this, provider.ProviderStateCommon.Separator));
separatorStack.Add(new ViewLayoutSeparator(1, 1));
docker.Add(separatorStack, ViewDockStyle.Fill);
return docker;
}
else
return new ViewDrawMenuSeparator(this, provider.ProviderStateCommon.Separator);
}
internal void GenerateView(IContextMenuProvider provider, KryptonContextMenuItems items, object parent, ViewLayoutStack columns, bool standardStyle, bool imageColumn) { // Create the initial column ViewBase column = AddColumn(provider, items, columns, standardStyle, imageColumn); // Process each item in the collection in turn foreach (KryptonContextMenuItemBase item in this) { if (item.Visible) { // Special handling of separator items if (item is KryptonContextMenuSeparator) { // Cast to correct type KryptonContextMenuSeparator separator = (KryptonContextMenuSeparator)item; // If vertical break.... if (!separator.Horizontal) { // Add separator as next column view element columns.Add(separator.GenerateView(provider, this, columns, standardStyle, imageColumn)); // Start new column for subsequent child items column = AddColumn(provider, items, columns, standardStyle, imageColumn); } else { // Add separator view into the current column column.Add(separator.GenerateView(provider, this, columns, standardStyle, imageColumn)); } } else { // All other items we just ask them for the view to add column.Add(item.GenerateView(provider, this, columns, standardStyle, imageColumn)); } } } }