/// <summary> /// Initialize a new instance of the ViewDrawRibbonAppMenuRecentDec class. /// </summary> /// <param name="ribbon">Reference to owning ribbon instance.</param> /// <param name="provider">Provider of context menu information.</param> /// <param name="recentDoc">Source rencent document instance.</param> /// <param name="maxWidth">Maximum width allowed for the item.</param> /// <param name="needPaintDelegate">Delegate for requesting paint updates.</param> /// <param name="index">Recent documet index.</param> public ViewDrawRibbonAppMenuRecentDec(KryptonRibbon ribbon, IContextMenuProvider provider, KryptonRibbonRecentDoc recentDoc, int maxWidth, NeedPaintHandler needPaintDelegate, int index) : base(provider.ProviderStateNormal.ItemHighlight.Back, provider.ProviderStateNormal.ItemHighlight.Border, provider.ProviderStateNormal.ItemHighlight, PaletteMetricPadding.ContextMenuItemHighlight, VisualOrientation.Top) { _maxWidth = maxWidth; Provider = provider; RecentDoc = recentDoc; ShortcutText = (index < 10 ? @"&" + index.ToString() : "A"); // Use docker to organize horizontal items ViewLayoutDocker docker = new ViewLayoutDocker { // End of line gap { new ViewLayoutSeparator(5), ViewDockStyle.Right } }; // Add the text/extraText/Image entry FixedContentValue entryContent = new FixedContentValue(recentDoc.Text, recentDoc.ExtraText, recentDoc.Image, recentDoc.ImageTransparentColor); RibbonRecentDocsEntryToContent entryPalette = new RibbonRecentDocsEntryToContent(ribbon.StateCommon.RibbonGeneral, ribbon.StateCommon.RibbonAppMenuDocsEntry); ViewDrawContent entryDraw = new ViewDrawContent(entryPalette, entryContent, VisualOrientation.Top); docker.Add(entryDraw, ViewDockStyle.Fill); // Shortcut to Content gap docker.Add(new ViewLayoutSeparator(5), ViewDockStyle.Left); // Add the shortcut column FixedContentValue shortcutContent = new FixedContentValue(ShortcutText, null, null, Color.Empty); RibbonRecentDocsShortcutToContent shortcutPalette = new RibbonRecentDocsShortcutToContent(ribbon.StateCommon.RibbonGeneral, ribbon.StateCommon.RibbonAppMenuDocsEntry); ViewDrawRibbonRecentShortcut shortcutDraw = new ViewDrawRibbonRecentShortcut(shortcutPalette, shortcutContent); docker.Add(shortcutDraw, ViewDockStyle.Left); // Start of line gap docker.Add(new ViewLayoutSeparator(3), ViewDockStyle.Left); // Attach a controller so menu item can be tracked and pressed RecentDocController controller = new RecentDocController(Provider.ProviderViewManager, this, needPaintDelegate); MouseController = controller; KeyController = controller; SourceController = controller; Add(docker); }
/// <summary> /// Initialize a new instance of the ViewDrawRibbonAppMenuRecentDec class. /// </summary> /// <param name="ribbon">Reference to owning ribbon instance.</param> /// <param name="provider">Provider of context menu information.</param> /// <param name="recentDoc">Source rencent document instance.</param> /// <param name="maxWidth">Maximum width allowed for the item.</param> /// <param name="needPaintDelegate">Delegate for requesting paint updates.</param> /// <param name="index">Recent documet index.</param> public ViewDrawRibbonAppMenuRecentDec(KryptonRibbon ribbon, IContextMenuProvider provider, KryptonRibbonRecentDoc recentDoc, int maxWidth, NeedPaintHandler needPaintDelegate, int index) : base(provider.ProviderStateNormal.ItemHighlight.Back, provider.ProviderStateNormal.ItemHighlight.Border, provider.ProviderStateNormal.ItemHighlight, PaletteMetricPadding.ContextMenuItemHighlight, VisualOrientation.Top) { _maxWidth = maxWidth; _provider = provider; _recentDoc = recentDoc; _shortcutText = (index < 10 ? @"&" + index.ToString() : "A"); // Use docker to organize horizontal items ViewLayoutDocker docker = new ViewLayoutDocker(); // End of line gap docker.Add(new ViewLayoutSeparator(5), ViewDockStyle.Right); // Add the text/extraText/Image entry FixedContentValue entryContent = new FixedContentValue(recentDoc.Text, recentDoc.ExtraText, recentDoc.Image, recentDoc.ImageTransparentColor); RibbonRecentDocsEntryToContent entryPalette = new RibbonRecentDocsEntryToContent(ribbon.StateCommon.RibbonGeneral, ribbon.StateCommon.RibbonAppMenuDocsEntry); ViewDrawContent entryDraw = new ViewDrawContent(entryPalette, entryContent, VisualOrientation.Top); docker.Add(entryDraw, ViewDockStyle.Fill); // Shortcut to Content gap docker.Add(new ViewLayoutSeparator(5), ViewDockStyle.Left); // Add the shortcut column FixedContentValue shortcutContent = new FixedContentValue(_shortcutText, null, null, Color.Empty); RibbonRecentDocsShortcutToContent shortcutPalette = new RibbonRecentDocsShortcutToContent(ribbon.StateCommon.RibbonGeneral, ribbon.StateCommon.RibbonAppMenuDocsEntry); ViewDrawRibbonRecentShortcut shortcutDraw = new ViewDrawRibbonRecentShortcut(shortcutPalette, shortcutContent); docker.Add(shortcutDraw, ViewDockStyle.Left); // Start of line gap docker.Add(new ViewLayoutSeparator(3), ViewDockStyle.Left); // Attach a controller so menu item can be tracked and pressed RecentDocController controller = new RecentDocController(_provider.ProviderViewManager, this, needPaintDelegate); MouseController = controller; KeyController = controller; SourceController = controller; Add(docker); }