/// <summary> /// Initialize a new instance of the KeyTipControl class. /// </summary> /// <param name="ribbon">Reference to owning control instance.</param> /// <param name="keyTips">List of key tips.</param> /// <param name="showDisabled">True to show disabled entries, otherwise enabled.</param> public KeyTipControl(KryptonRibbon ribbon, KeyTipInfoList keyTips, bool showDisabled) { _ribbon = ribbon; _showDisabled = showDisabled; // Update form properties so we do not have a border and do not show // in the task bar. We draw the background in Magenta and set that as // the transparency key so it is a show through window. StartPosition = FormStartPosition.Manual; FormBorderStyle = FormBorderStyle.None; ShowInTaskbar = false; TransparencyKey = Color.Magenta; // Disabled key tips are show semi-transparent if (_showDisabled) Opacity = 0.5f; // Define the initial set of key tips SetKeyTips(keyTips); }
/// <summary> /// Gets the array of group level key tips. /// </summary> /// <param name="keyTipList">List to add new entries into.</param> /// <param name="lineHint">Provide hint to item about its location.</param> public void GetGroupKeyTips(KeyTipInfoList keyTipList, int lineHint) { // Only provide a key tip if we are visible and the target control can accept focus if (Visible && LastMaskedTextBox.CanFocus) { // Get the screen location of the button Rectangle viewRect = _ribbon.KeyTipToScreen(this); // Determine the screen position of the key tip Point screenPt = Point.Empty; // Determine the screen position of the key tip dependant on item location/size switch (_currentSize) { case GroupItemSize.Large: screenPt = new Point(viewRect.Left + (viewRect.Width / 2), viewRect.Bottom); break; case GroupItemSize.Medium: case GroupItemSize.Small: screenPt = _ribbon.CalculatedValues.KeyTipRectToPoint(viewRect, lineHint); break; } keyTipList.Add(new KeyTipInfo(_ribbonMaskedTextBox.Enabled, _ribbonMaskedTextBox.KeyTip, screenPt, ClientRectangle, _controller)); } }
/// <summary> /// Gets the array of group level key tips. /// </summary> /// <param name="keyTipList">List to add new entries into.</param> public void GetGroupKeyTips(KeyTipInfoList keyTipList) { if (Collapsed) { // Get the screen location of the collapsed view Rectangle viewRect = _ribbon.KeyTipToScreen(_layoutCollapsedMain); // The keytip should be centered at the bottom of the view Point screenPt = new Point(viewRect.Left + (viewRect.Width / 2), viewRect.Bottom + 4); keyTipList.Add(new KeyTipInfo(true, _ribbonGroup.KeyTipGroup, screenPt, _layoutCollapsedMain.ClientRectangle, _collapsedController)); } else { // Do we add a key tip for the dialog box launcher button if (_ribbonGroup.DialogBoxLauncher) { // Get the screen location of the dialog button view Rectangle viewRect = _ribbon.KeyTipToScreen(_viewNormalDialog); // The keytip should be centered at the bottom of the view Point screenPt = new Point(viewRect.Left + (viewRect.Width / 2), viewRect.Bottom + 4); keyTipList.Add(new KeyTipInfo(true, _ribbonGroup.KeyTipDialogLauncher, screenPt, _viewNormalDialog.ClientRectangle, _viewNormalDialog.DialogButtonController)); } // Populate with key tips for the content of the group _layoutNormalContent.GetGroupKeyTips(keyTipList); } }
/// <summary> /// Generate a key tip info for each visible tab. /// </summary> /// <param name="ownerForm">KryptonForm instance that owns this view.</param> /// <returns>Array of KeyTipInfo instances.</returns> public KeyTipInfo[] GetQATKeyTips(KryptonForm ownerForm) { // Create all the list of all possible QAT key tip strings Stack <string> keyTipsPool = new Stack <string>(); // Then use the alphanumeric 0A - 0Z for (int i = 25; i >= 0; i--) { keyTipsPool.Push("0" + (char)(65 + i)); } // Then use the number 09 - 01 for (int i = 1; i <= 9; i++) { keyTipsPool.Push("0" + i.ToString()); } // Start with the number 1 - 9 for (int i = 9; i >= 1; i--) { keyTipsPool.Push(i.ToString()); } // If integrated into the caption area then get the caption area height Padding borders = Padding.Empty; if ((ownerForm != null) && !ownerForm.ApplyComposition) { borders = ownerForm.RealWindowBorders; } KeyTipInfoList keyTipList = new KeyTipInfoList(); foreach (ViewBase child in this) { // If visible and we have another key tip available on stack if (child.Visible && (keyTipsPool.Count > 0) && (child is ViewDrawRibbonQATButton)) { // Cast to correct type ViewDrawRibbonQATButton viewQAT = (ViewDrawRibbonQATButton)child; // Get the screen location of the view tab Rectangle viewRect = ParentControl.RectangleToScreen(viewQAT.ClientRectangle); // The keytip should be centered on the bottom center of the view Point screenPt = new Point((viewRect.Left + (viewRect.Width / 2)) - borders.Left, viewRect.Bottom - 2 - borders.Top); // Create new key tip that invokes the qat controller keyTipList.Add(new KeyTipInfo(viewQAT.Enabled, keyTipsPool.Pop(), screenPt, viewQAT.ClientRectangle, viewQAT.KeyTipTarget)); } } // If we have the extra button and it is in overflow appearance if ((_extraButton != null) && _extraButton.Overflow) { // Get the screen location of the extra button Rectangle viewRect = ParentControl.RectangleToScreen(_extraButton.ClientRectangle); // The keytip should be centered on the bottom center of the view Point screenPt = new Point((viewRect.Left + (viewRect.Width / 2)) - borders.Left, viewRect.Bottom - 2 - borders.Top); // Create fixed key tip of '00' that invokes the extra button contoller keyTipList.Add(new KeyTipInfo(true, "00", screenPt, _extraButton.ClientRectangle, _extraButton.KeyTipTarget)); } return(keyTipList.ToArray()); }
/// <summary> /// Gets the array of group level key tips. /// </summary> /// <param name="keyTipList">List to add new entries into.</param> public void GetGroupKeyTips(KeyTipInfoList keyTipList) { // Separator never has key tips }
/// <summary> /// Gets the array of group level key tips. /// </summary> /// <returns>Array of KeyTipInfo; otherwise null.</returns> public KeyTipInfo[] GetGroupKeyTips() { ViewLayoutRibbonGroups groups = _viewFiller as ViewLayoutRibbonGroups; // If we contain a groups layout if (groups != null) { KeyTipInfoList keyTips = new KeyTipInfoList(); // Grab the list of key tips for all groups keyTips.AddRange(groups.GetGroupKeyTips()); // Remove all those that do not intercept the view rectangle for (int i = 0; i < keyTips.Count; i++) if (!_viewClipRect.Contains(keyTips[i].ClientRect)) keyTips[i].Visible = false; return keyTips.ToArray(); } else return new KeyTipInfo[] { }; }
/// <summary> /// Gets the array of group level key tips. /// </summary> /// <param name="keyTipList">List to add new entries into.</param> /// <param name="lineHint">Provide hint to item about its location.</param> public void GetGroupKeyTips(KeyTipInfoList keyTipList, int lineHint) { // A label never has a key tip }
/// <summary> /// Define the set of key tips to display. /// </summary> /// <param name="keyTips">List of key tips.</param> public void SetKeyTips(KeyTipInfoList keyTips) { // Create a new list of key tip views _viewList = new List<ViewDrawRibbonKeyTip>(); Rectangle enclosingRect = Rectangle.Empty; // Create a view per key tip definition foreach (KeyTipInfo keyTip in keyTips) { // Create the initial rect as enclosing just the single point if (enclosingRect.IsEmpty) enclosingRect = new Rectangle(keyTip.ScreenPt, new Size(1, 1)); else { // Enlarge the rect to enclose the new point if (keyTip.ScreenPt.X < enclosingRect.Left) { int diff = enclosingRect.Left - keyTip.ScreenPt.X; enclosingRect.Width += diff; enclosingRect.X -= diff; } if (keyTip.ScreenPt.X > enclosingRect.Right) enclosingRect.Width += (keyTip.ScreenPt.X - enclosingRect.Right); if (keyTip.ScreenPt.Y < enclosingRect.Top) { int diff = enclosingRect.Top - keyTip.ScreenPt.Y; enclosingRect.Height += diff; enclosingRect.Y -= diff; } if (keyTip.ScreenPt.Y > enclosingRect.Bottom) enclosingRect.Height += (keyTip.ScreenPt.Y - enclosingRect.Bottom); } _viewList.Add(new ViewDrawRibbonKeyTip(keyTip, _ribbon.StateCommon.RibbonKeyTip.Back, _ribbon.StateCommon.RibbonKeyTip.Border, _ribbon.StateCommon.RibbonKeyTip.Content)); } // Inflate the enclosing rect to account for maximum expected key tip enclosingRect.Inflate(50, 50); // Remove any prefix characters _prefix = string.Empty; // Our position covers the enclosing rect SetBounds(enclosingRect.X, enclosingRect.Y, enclosingRect.Width, enclosingRect.Height); StartTimer(); }
/// <summary> /// Define the set of key tips to display. /// </summary> /// <param name="keyTips">List of key tips.</param> public void SetKeyTips(KeyTipInfoList keyTips) { // Create a new list of key tip views _viewList = new List <ViewDrawRibbonKeyTip>(); Rectangle enclosingRect = Rectangle.Empty; // Create a view per key tip definition foreach (KeyTipInfo keyTip in keyTips) { // Create the initial rect as enclosing just the single point if (enclosingRect.IsEmpty) { enclosingRect = new Rectangle(keyTip.ScreenPt, new Size(1, 1)); } else { // Enlarge the rect to enclose the new point if (keyTip.ScreenPt.X < enclosingRect.Left) { int diff = enclosingRect.Left - keyTip.ScreenPt.X; enclosingRect.Width += diff; enclosingRect.X -= diff; } if (keyTip.ScreenPt.X > enclosingRect.Right) { enclosingRect.Width += (keyTip.ScreenPt.X - enclosingRect.Right); } if (keyTip.ScreenPt.Y < enclosingRect.Top) { int diff = enclosingRect.Top - keyTip.ScreenPt.Y; enclosingRect.Height += diff; enclosingRect.Y -= diff; } if (keyTip.ScreenPt.Y > enclosingRect.Bottom) { enclosingRect.Height += (keyTip.ScreenPt.Y - enclosingRect.Bottom); } } _viewList.Add(new ViewDrawRibbonKeyTip(keyTip, _ribbon.StateCommon.RibbonKeyTip.Back, _ribbon.StateCommon.RibbonKeyTip.Border, _ribbon.StateCommon.RibbonKeyTip.Content)); } // Inflate the enclosing rect to account for maximum expected key tip enclosingRect.Inflate(DpiHelper.Default.ScaleValue(50), DpiHelper.Default.ScaleValue(50)); // Remove any prefix characters _prefix = string.Empty; // Our position covers the enclosing rect SetBounds(enclosingRect.X, enclosingRect.Y, enclosingRect.Width, enclosingRect.Height); StartTimer(); }
/// <summary> /// Gets the array of group level key tips. /// </summary> /// <param name="keyTipList">List to add new entries into.</param> /// <param name="lineHint">Provide hint to item about its location.</param> public void GetGroupKeyTips(KeyTipInfoList keyTipList, int lineHint) { // Only provide a key tip if we are visible if (Visible) { // Get the screen location of the button Rectangle viewRect = _ribbon.KeyTipToScreen(this[0]); // Determine the screen position of the key tip dependant on item location Point screenPt = _ribbon.CalculatedValues.KeyTipRectToPoint(viewRect, lineHint); keyTipList.Add(new KeyTipInfo(_ribbonButton.Enabled, _ribbonButton.KeyTip, screenPt, this[0].ClientRectangle, _viewMediumSmall.Controller)); } }
/// <summary> /// Gets the array of group level key tips. /// </summary> /// <param name="keyTipList">List to add new entries into.</param> public void GetGroupKeyTips(KeyTipInfoList keyTipList) { if (_ribbonGallery.Visible) { if (_viewLarge.Visible) { // Get the screen location of the button Rectangle viewRect = _ribbon.KeyTipToScreen(_viewLarge); keyTipList.Add(new KeyTipInfo(_ribbonGallery.Enabled, _ribbonGallery.KeyTip, new Point(viewRect.Left + (viewRect.Width / 2), viewRect.Bottom), ClientRectangle, _viewLarge.Controller)); } else if (LastGallery.CanFocus) { // Get the screen location of the button Rectangle viewRect = _ribbon.KeyTipToScreen(this); keyTipList.Add(new KeyTipInfo(_ribbonGallery.Enabled, _ribbonGallery.KeyTip, new Point(viewRect.Left + (viewRect.Width / 2), viewRect.Bottom), ClientRectangle, _controller)); } } }
/// <summary> /// Perform actual selection of the item. /// </summary> /// <param name="ribbon">Reference to owning ribbon instance.</param> public void KeyTipSelect(KryptonRibbon ribbon) { OnClick(new MouseEventArgs(MouseButtons.Left, 1, 0, 0, 0)); // We should have a visual popup for showing the collapsed group if (VisualPopupManager.Singleton.IsTracking && (VisualPopupManager.Singleton.CurrentPopup is VisualPopupGroup)) { // Cast to correct type VisualPopupGroup popupGroup = (VisualPopupGroup)VisualPopupManager.Singleton.CurrentPopup; // Grab the list of key tips from the popup group _ribbon.KeyTipMode = KeyTipMode.PopupGroup; KeyTipInfoList keyTipList = new KeyTipInfoList(); popupGroup.ViewGroup.GetGroupKeyTips(keyTipList); // Update key tips with those appropriate for this tab _ribbon.SetKeyTips(keyTipList, KeyTipMode.PopupGroup); } }
/// <summary> /// Generate a key tip info for each visible tab. /// </summary> /// <returns>Array of KeyTipInfo instances.</returns> public KeyTipInfo[] GetQATKeyTips() { KeyTipInfoList keyTipList = new KeyTipInfoList(); // Add all the entries for the contents keyTipList.AddRange(_borderContents.GetQATKeyTips(OwnerForm)); // If we have the extra button and it is in overflow appearance if (_extraButton.Overflow) { // If integrated into the caption area then get the caption area height Padding borders = Padding.Empty; if ((OwnerForm != null) && !OwnerForm.ApplyComposition) borders = OwnerForm.RealWindowBorders; // Get the screen location of the extra button Rectangle viewRect = _borderContents.ParentControl.RectangleToScreen(_extraButton.ClientRectangle); // The keytip should be centered on the bottom center of the view Point screenPt = new Point(viewRect.Left + (viewRect.Width / 2) - borders.Left, viewRect.Bottom - 2 - borders.Top); // Create fixed key tip of '00' that invokes the extra button contoller keyTipList.Add(new KeyTipInfo(true, "00", screenPt, _extraButton.ClientRectangle, _extraButton.KeyTipTarget)); } return keyTipList.ToArray(); }
/// <summary> /// Gets the array of group level key tips. /// </summary> /// <param name="keyTipList">List to add new entries into.</param> /// <param name="lineHint">Provide hint to item about its location.</param> public void GetGroupKeyTips(KeyTipInfoList keyTipList, int lineHint) { // Only provide a key tip if we are visible if (Visible) { // Get the screen location of the button Rectangle viewRect = _ribbon.KeyTipToScreen(this[0]); Point screenPt = Point.Empty; GroupButtonController controller = null; // Determine the screen position of the key tip dependant on item location/size switch (_currentSize) { case GroupItemSize.Large: screenPt = new Point(viewRect.Left + (viewRect.Width / 2), viewRect.Bottom); controller = _viewLarge.Controller; break; case GroupItemSize.Medium: case GroupItemSize.Small: screenPt = _ribbon.CalculatedValues.KeyTipRectToPoint(viewRect, lineHint); controller = _viewMediumSmall.Controller; break; } keyTipList.Add(new KeyTipInfo(_ribbonColorButton.Enabled, _ribbonColorButton.KeyTip, screenPt, this[0].ClientRectangle, controller)); } }
/// <summary> /// Perform actual selection of the item. /// </summary> /// <param name="ribbon">Reference to owning ribbon instance.</param> public void KeyTipSelect(KryptonRibbon ribbon) { // Change to a fixed pressed appearance SetFixed(); UpdateTargetState(); // Generate a click event OnClick(new MouseEventArgs(MouseButtons.Left, 1, 0, 0, 0)); // We should have a visual popup for showing the qat overflow group if (VisualPopupManager.Singleton.IsTracking && (VisualPopupManager.Singleton.CurrentPopup is VisualPopupQATOverflow)) { // Cast to correct type VisualPopupQATOverflow popupOverflow = (VisualPopupQATOverflow)VisualPopupManager.Singleton.CurrentPopup; // Grab the list of key tips from the popup group Ribbon.KeyTipMode = KeyTipMode.PopupQATOverflow; KeyTipInfoList keyTipList = new KeyTipInfoList(); keyTipList.AddRange(popupOverflow.ViewQATContents.GetQATKeyTips(null)); // Update key tips with those appropriate for this tab Ribbon.SetKeyTips(keyTipList, KeyTipMode.PopupQATOverflow); } }