/// <summary> /// Initialize a new instance of the ViewLayoutRibbonGroupLines class. /// </summary> /// <param name="ribbon">Owning ribbon control instance.</param> /// <param name="ribbonLines">Reference to lines definition.</param> /// <param name="needPaint">Delegate for notifying paint requests.</param> public ViewLayoutRibbonGroupLines(KryptonRibbon ribbon, KryptonRibbonGroupLines ribbonLines, NeedPaintHandler needPaint) { Debug.Assert(ribbon != null); Debug.Assert(ribbonLines != null); Debug.Assert(needPaint != null); // Cache references _ribbon = ribbon; _ribbonLines = ribbonLines; _needPaint = needPaint; // Associate the component with this view element for design time selection Component = _ribbonLines; // Use hashtable to store relationships _itemToView = new ItemToView(); _viewToItem = new ViewToItem(); _sizeLargeList = new SizeList(); _sizeMediumList = new SizeList(); _sizeSmallList = new SizeList(); _viewLargeList = new ViewList(); _viewMediumList = new ViewList(); _viewSmallList = new ViewList(); _viewToLargeGap = new ViewToGap(); _viewToMediumGap = new ViewToGap(); _viewToSmallGap = new ViewToGap(); // Get the initial size used for sizing and positioning ApplySize(ribbonLines.ItemSizeCurrent); // Hook into changes in the ribbon triple definition _ribbonLines.PropertyChanged += new PropertyChangedEventHandler(OnLinesPropertyChanged); _ribbonLines.LinesView = this; // At design time we want to track the mouse and show feedback if (_ribbon.InDesignMode) { ViewHightlightController controller = new ViewHightlightController(this, needPaint); controller.ContextClick += new MouseEventHandler(OnContextClick); MouseController = controller; } }
private void ApplySize(GroupItemSize size) { CurrentSize = size; GroupItemSize itemSize = GroupItemSize.Medium; switch (size) { case GroupItemSize.Large: _sizeList = _sizeLargeList; _viewList = _viewLargeList; _viewToGap = _viewToLargeGap; itemSize = GroupItemSize.Medium; break; case GroupItemSize.Medium: _sizeList = _sizeMediumList; _viewList = _viewMediumList; _viewToGap = _viewToMediumGap; itemSize = GroupItemSize.Small; break; case GroupItemSize.Small: _sizeList = _sizeSmallList; _viewList = _viewSmallList; _viewToGap = _viewToSmallGap; itemSize = GroupItemSize.Small; break; default: // Should never happen! Debug.Assert(false); break; } foreach (ViewBase item in this) { IRibbonViewGroupItemView viewItem = item as IRibbonViewGroupItemView; if (viewItem != null) { viewItem.SetGroupItemSize(itemSize); } } }