/// <summary> /// Initializes the designer with the specified component. /// </summary> /// <param name="component">The IComponent to associate the designer with.</param> public override void Initialize(IComponent component) { Debug.Assert(component != null); // Validate the parameter reference if (component == null) { throw new ArgumentNullException("component"); } // Let base class do standard stuff base.Initialize(component); // Cast to correct type _ribbonGroup = (KryptonRibbonGroup)component; _ribbonGroup.DesignTimeAddTriple += new EventHandler(OnAddTriple); _ribbonGroup.DesignTimeAddLines += new EventHandler(OnAddLines); _ribbonGroup.DesignTimeAddSeparator += new EventHandler(OnAddSep); _ribbonGroup.DesignTimeAddGallery += new EventHandler(OnAddGallery); _ribbonGroup.DesignTimeContextMenu += new MouseEventHandler(OnContextMenu); // Get access to the services _designerHost = (IDesignerHost)GetService(typeof(IDesignerHost)); _changeService = (IComponentChangeService)GetService(typeof(IComponentChangeService)); // We need to know when we are being removed/changed _changeService.ComponentRemoving += new ComponentEventHandler(OnComponentRemoving); _changeService.ComponentChanged += new ComponentChangedEventHandler(OnComponentChanged); }
/// <summary> /// Initialize a new instance of the ViewDrawRibbonDesignGroup class. /// </summary> /// <param name="ribbon">Reference to owning ribbon control.</param> /// <param name="ribbonGroup">Associated ribbon group.</param> /// <param name="needPaint">Delegate for notifying paint requests.</param> public ViewDrawRibbonDesignGroupContainer(KryptonRibbon ribbon, KryptonRibbonGroup ribbonGroup, NeedPaintHandler needPaint) : base(ribbon, needPaint) { Debug.Assert(ribbonGroup != null); _ribbonGroup = ribbonGroup; }
/// <summary> /// Initialize a new instance of the ViewLayoutRibbonGroupButton class. /// </summary> /// <param name="ribbon">Owning control instance.</param> /// <param name="ribbonGroup">Reference to ribbon group this represents.</param> /// <param name="needPaint">Delegate for notifying paint requests.</param> public ViewLayoutRibbonGroupButton(KryptonRibbon ribbon, KryptonRibbonGroup ribbonGroup, NeedPaintHandler needPaint) { _groupButton = new ViewDrawRibbonGroupDialogButton(ribbon, ribbonGroup, needPaint); _centerButton = new ViewLayoutRibbonCenter(); // Fill remainder with the actual button, but centered within space _centerButton.Add(_groupButton); Add(_centerButton, ViewDockStyle.Fill); }
/// <summary> /// Initialize a new instance of the ViewDrawRibbonGroupImage class. /// </summary> /// <param name="ribbon">Reference to owning ribbon control.</param> /// <param name="ribbonGroup">Reference to ribbon group definition.</param> /// <param name="viewGroup">Reference to top level group element.</param> public ViewDrawRibbonGroupImage(KryptonRibbon ribbon, KryptonRibbonGroup ribbonGroup, ViewDrawRibbonGroup viewGroup) { Debug.Assert(ribbon != null); Debug.Assert(ribbonGroup != null); Debug.Assert(viewGroup != null); _ribbon = ribbon; _ribbonGroup = ribbonGroup; _viewGroup = viewGroup; }
/// <summary> /// Initialize a new instance of the ViewDrawRibbonGroupTitle class. /// </summary> /// <param name="ribbon">Source ribbon control.</param> /// <param name="ribbonGroup">Ribbon group to display title for.</param> public ViewDrawRibbonGroupTitle(KryptonRibbon ribbon, KryptonRibbonGroup ribbonGroup) { Debug.Assert(ribbon != null); Debug.Assert(ribbonGroup != null); _ribbon = ribbon; _ribbonGroup = ribbonGroup; // Use a class to convert from ribbon group to content interface _contentProvider = new RibbonGroupTextToContent(ribbon.StateCommon.RibbonGeneral, ribbon.StateNormal.RibbonGroupNormalTitle); }
/// <summary> /// Initialize a new instance of the ViewDrawRibbonGroupText class. /// </summary> /// <param name="ribbon">Source ribbon control.</param> /// <param name="ribbonGroup">Ribbon group to display title for.</param> /// <param name="firstText">Should show the first group text.</param> public ViewDrawRibbonGroupText(KryptonRibbon ribbon, KryptonRibbonGroup ribbonGroup, bool firstText) { Debug.Assert(ribbon != null); Debug.Assert(ribbonGroup != null); _ribbon = ribbon; _ribbonGroup = ribbonGroup; _firstText = firstText; // Use a class to convert from ribbon group to content interface _contentProvider = new RibbonGroupTextToContent(ribbon.StateCommon.RibbonGeneral, ribbon.StateNormal.RibbonGroupCollapsedText); }
/// <summary> /// Initialize a new instance of the ViewLayoutRibbonGroupContent class. /// </summary> /// <param name="ribbon">Owning ribbon control instance.</param> /// <param name="ribbonGroup">The ribbon group this layout is used to display.</param> /// <param name="needPaint">Delegate for notifying paint requests.</param> public ViewLayoutRibbonGroupContent(KryptonRibbon ribbon, KryptonRibbonGroup ribbonGroup, NeedPaintHandler needPaint) { Debug.Assert(ribbon != null); Debug.Assert(ribbonGroup != null); Debug.Assert(needPaint != null); // Cache references _ribbon = ribbon; _ribbonGroup = ribbonGroup; _needPaint = needPaint; // Use hashtable to store relationships _containerToView = new ContainerToView(); }
private void OnComponentRemoving(object sender, ComponentEventArgs e) { // If our tab is being removed if (e.Component == _ribbonTab) { // Need access to host in order to delete a component IDesignerHost host = (IDesignerHost)GetService(typeof(IDesignerHost)); // We need to remove all the groups from the tab for (int i = _ribbonTab.Groups.Count - 1; i >= 0; i--) { KryptonRibbonGroup group = _ribbonTab.Groups[i]; _ribbonTab.Groups.Remove(group); host.DestroyComponent(group); } } }
private void OnMoveToGroup(object sender, EventArgs e) { if ((_ribbonSeparator != null) && (_ribbonSeparator.Ribbon != null) && _ribbonSeparator.RibbonGroup.Items.Contains(_ribbonSeparator)) { // Cast to correct type ToolStripMenuItem groupMenuItem = (ToolStripMenuItem)sender; // Get access to the destination tab KryptonRibbonGroup destination = (KryptonRibbonGroup)groupMenuItem.Tag; // Use a transaction to support undo/redo actions DesignerTransaction transaction = _designerHost.CreateTransaction("KryptonRibbonGroupSeparator MoveSeparatorToGroup"); try { // Get access to the Groups property MemberDescriptor oldItems = TypeDescriptor.GetProperties(_ribbonSeparator.RibbonGroup)["Items"]; MemberDescriptor newItems = TypeDescriptor.GetProperties(destination)["Items"]; // Remove the ribbon tab from the ribbon RaiseComponentChanging(null); RaiseComponentChanging(oldItems); RaiseComponentChanging(newItems); // Remove group from current group _ribbonSeparator.RibbonGroup.Items.Remove(_ribbonSeparator); // Append to the new destination group destination.Items.Add(_ribbonSeparator); RaiseComponentChanged(newItems, null, null); RaiseComponentChanged(oldItems, null, null); RaiseComponentChanged(null, null, null); } finally { // If we managed to create the transaction, then do it if (transaction != null) { transaction.Commit(); } } } }
/// <summary> /// Initialize a new instance of the ViewDrawRibbonGroupDialogButton class. /// </summary> /// <param name="ribbon">Reference to owning ribbon control.</param> /// <param name="ribbonGroup">Reference to ribbon group this represents.</param> /// <param name="needPaint">Delegate for notifying paint requests.</param> public ViewDrawRibbonGroupDialogButton(KryptonRibbon ribbon, KryptonRibbonGroup ribbonGroup, NeedPaintHandler needPaint) { Debug.Assert(ribbon != null); Debug.Assert(ribbonGroup != null); // Remember incoming references _ribbon = ribbon; _ribbonGroup = ribbonGroup; // Attach a controller to this element for the pressing of the button DialogLauncherButtonController controller = new DialogLauncherButtonController(ribbon, this, needPaint); controller.Click += new MouseEventHandler(OnClick); MouseController = controller; SourceController = controller; KeyController = controller; }
private void OnClearGroups(object sender, EventArgs e) { if ((_ribbonTab != null) && (_ribbonTab.Ribbon != null) && _ribbonTab.Ribbon.RibbonTabs.Contains(_ribbonTab)) { // Use a transaction to support undo/redo actions DesignerTransaction transaction = _designerHost.CreateTransaction("KryptonRibbonTab ClearGroups"); try { // Get access to the Groups property MemberDescriptor propertyGroups = TypeDescriptor.GetProperties(_ribbonTab)["Groups"]; RaiseComponentChanging(propertyGroups); // Need access to host in order to delete a component IDesignerHost host = (IDesignerHost)GetService(typeof(IDesignerHost)); // We need to remove all the groups from the tab for (int i = _ribbonTab.Groups.Count - 1; i >= 0; i--) { KryptonRibbonGroup group = _ribbonTab.Groups[i]; _ribbonTab.Groups.Remove(group); host.DestroyComponent(group); } RaiseComponentChanged(propertyGroups, null, null); } finally { // If we managed to create the transaction, then do it if (transaction != null) { transaction.Commit(); } } } }
private void OnMoveNext(object sender, EventArgs e) { if ((_ribbonGallery != null) && (_ribbonGallery.Ribbon != null) && _ribbonGallery.RibbonGroup.Items.Contains(_ribbonGallery)) { // Use a transaction to support undo/redo actions DesignerTransaction transaction = _designerHost.CreateTransaction("KryptonRibbonGroupGallery MoveNext"); try { // Get access to the Items property MemberDescriptor propertyItems = TypeDescriptor.GetProperties(_ribbonGallery.RibbonGroup)["Items"]; RaiseComponentChanging(propertyItems); // Move position of the gallery KryptonRibbonGroup ribbonGroup = _ribbonGallery.RibbonGroup; int index = ribbonGroup.Items.IndexOf(_ribbonGallery) + 1; index = Math.Min(index, ribbonGroup.Items.Count - 1); ribbonGroup.Items.Remove(_ribbonGallery); ribbonGroup.Items.Insert(index, _ribbonGallery); UpdateVerbStatus(); RaiseComponentChanged(propertyItems, null, null); } finally { // If we managed to create the transaction, then do it if (transaction != null) { transaction.Commit(); } } } }
private void SyncChildrenToRibbonGroups() { // Remove all child elements Clear(); // Create a new lookup that reflects any changes in groups GroupToView regenerate = new GroupToView(); // Make sure we have a view element to match each group foreach (KryptonRibbonGroup group in _ribbonTab.Groups) { ViewDrawRibbonGroup view = null; // Get the currently cached view for the group if (_groupToView.ContainsKey(group)) { view = _groupToView[group]; } // If a new group, create a view for it now if (view == null) { view = new ViewDrawRibbonGroup(_ribbon, group, _needPaint); } // Add to the lookup for future reference regenerate.Add(group, view); } if (_groupSepCache.Count < _ribbonTab.Groups.Count) { for (int i = _groupSepCache.Count; i < _ribbonTab.Groups.Count; i++) { _groupSepCache.Add(new ViewLayoutRibbonSeparator(0, true)); } } // Update size of all separators to match ribbon shape Size sepSize = SeparatorSize; foreach (ViewLayoutRibbonSeparator sep in _groupSepCache) { sep.SeparatorSize = sepSize; } // We ignore the first separator bool ignoreSep = true; // Add child elements appropriate for each ribbon group for (int i = 0; i < _ribbonTab.Groups.Count; i++) { KryptonRibbonGroup ribbonGroup = _ribbonTab.Groups[i]; // Only make the separator visible if the group is and not the first sep bool groupVisible = (_ribbon.InDesignHelperMode || ribbonGroup.Visible); _groupSepCache[i].Visible = groupVisible && !ignoreSep; regenerate[ribbonGroup].Visible = groupVisible; // Only add a separator for the second group onwards if (groupVisible && ignoreSep) { ignoreSep = false; } Add(_groupSepCache[i]); Add(regenerate[ribbonGroup]); // Remove entries we still are using if (_groupToView.ContainsKey(ribbonGroup)) { _groupToView.Remove(ribbonGroup); } } // When in design time help mode if (_ribbon.InDesignHelperMode) { // Create the design time 'Add Group' first time it is needed if (_viewAddGroup == null) { _viewAddGroup = new ViewDrawRibbonDesignGroup(_ribbon, _needPaint); } // Always add at end of the list of groups Add(_viewAddGroup); } // Dispose of views no longer required foreach (ViewDrawRibbonGroup group in _groupToView.Values) { group.Dispose(); } // No longer need the old lookup _groupToView = regenerate; }