示例#1
0
        /// <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;
            }
        }
示例#2
0
        private void SyncChildrenToRibbonGroupItems()
        {
            // Remove all child elements
            Clear();

            ItemToView regenItemToView = new ItemToView();
            ViewToItem regenViewToItem = new ViewToItem();

            // Add a view element for each group item
            foreach (IRibbonGroupItem item in _ribbonLines.Items)
            {
                ViewBase itemView;

                // Do we already have a view for this item definition
                if (_itemToView.ContainsKey(item))
                {
                    itemView = _itemToView[item];

                    // Remove from lookup to prevent it being deleted
                    _itemToView.Remove(item);
                }
                else
                {
                    // Ask the item definition to return an appropriate view
                    itemView = item.CreateView(_ribbon, _needPaint);
                }

                // Update the visible state of the item
                itemView.Visible = _ribbon.InDesignHelperMode || item.Visible;

                // We need to keep this association
                regenItemToView.Add(item, itemView);
                regenViewToItem.Add(itemView, item);

                Add(itemView);
            }

            // When in design time help mode
            if (_ribbon.InDesignHelperMode)
            {
                // Create the design time 'Add Tab' first time it is needed
                if (_viewAddItem == null)
                {
                    _viewAddItem = new ViewDrawRibbonDesignGroupLines(_ribbon,
                                                                      _ribbonLines,
                                                                      _currentSize,
                                                                      _needPaint);
                }

                // Always add at end of the list of items
                Add(_viewAddItem);
            }

            // Dispose of all the items no longer needed
            foreach (ViewBase view in _itemToView.Values)
            {
                view.Dispose();
            }

            // Use the latest hashtable
            _itemToView = regenItemToView;
            _viewToItem = regenViewToItem;
        }