From c1fb3dfb63eead12e3586feb58e79a12a244752d Mon Sep 17 00:00:00 2001 From: Nadya Todorova Date: Tue, 6 Aug 2024 14:47:15 +0300 Subject: [PATCH 1/2] KB: How to Use Shortcuts in Chat Messages --- .../how-to-use-shortcuts-in-chat-messages.md | 320 ++++++++++++++++++ .../how-to-use-shortcuts-in-chat-messages.gif | Bin 0 -> 77704 bytes 2 files changed, 320 insertions(+) create mode 100644 knowledge-base/how-to-use-shortcuts-in-chat-messages.md create mode 100644 knowledge-base/images/how-to-use-shortcuts-in-chat-messages.gif diff --git a/knowledge-base/how-to-use-shortcuts-in-chat-messages.md b/knowledge-base/how-to-use-shortcuts-in-chat-messages.md new file mode 100644 index 000000000..29d226cd2 --- /dev/null +++ b/knowledge-base/how-to-use-shortcuts-in-chat-messages.md @@ -0,0 +1,320 @@ +--- +title: How to Use Shortcuts in Chat Messages +description: This article demonstrates how to use shortcuts to copy/paste text in chat messages +type: how-to +page_title: How to Use Shortcuts in Chat Messages +slug: how-to-use-shortcuts-in-chat-messages +position: 0 +tags: chat, text, shortcuts, copy, paste +res_type: kb +--- + +## Environment + +|Product Version|Product|Author| +|----|----|----| +|2024.2.514|RadChat for WinForms|[Nadya Todorova](https://www.telerik.com/blogs/author/nadya-karaivanova)| + +## Description + +By default, the messages in **RadChat** visualize the text content but it doesn't support shortcurs such as Ctrl+V and Ctrl+V to copy/paste text, etc. How to achieve text selection in RadChat is demonstrated in the [How to Select and Copy Text in Chat Messages]({%slug how-to-select-and-copy-text-in-chat-messages%}) article. + +This tutorial demonstrates how to achieve using shortcuts in chat messages. + +![how-to-use-shortcuts-in-chat-messages](images/how-to-use-shortcuts-in-chat-messages.gif) + +## Solution + +It is necessary to create a derivative of **TextMessageItemElement** and replace its **ChatMessageBubbleElement** with a custom one which hosts a read-only **RadTextBoxControlElement**. Thus, you will acquire the shortcuts that comes from the **RadTextBoxControlElement** and benefit from it. + +You should create a custom [Chat Factory]({%slug winforms/chat/chatelementfactory%}) and integrate the custom message element. Also you should create a custom **RadChat** control and override the **OnGotFocus()**. A complete solution in C# and VB is available below: + + +````C# + +public RadForm1() +{ + InitializeComponent(); new RadControlSpyForm().Show(); + this.radChat1.Author = new Author(Properties.Resources.bot, "Nancy"); + + this.radChat1.ChatElement.ChatFactory = new CustomChatFactory(); + + Author author2 = new Author(Properties.Resources.bot, "Andrew"); + ChatTextMessage message1 = new ChatTextMessage("Hello", author2, DateTime.Now.AddHours(1)); + this.radChat1.AddMessage(message1); + ChatTextMessage message2 = new ChatTextMessage("Hi", this.radChat1.Author, DateTime.Now.AddHours(1).AddMinutes(10)); + this.radChat1.AddMessage(message2); + ChatTextMessage message3 = new ChatTextMessage("We would like to announce that in the R2 2018 release " + + "we introduced Conversational UI", author2, DateTime.Now.AddHours(3)); + this.radChat1.AddMessage(message3); + ChatTextMessage message4 = new ChatTextMessage("This control provides rich conversational experience " + + "that goes beyond the natural language understanding and " + + "personality of your chatbot.", author2, DateTime.Now.AddHours(3)); + this.radChat1.AddMessage(message4); +} + +public class CustomChat : RadChat +{ + protected override void OnGotFocus(EventArgs e) + { + + if (this.Behavior.OnGotFocus(e)) + { + return; + } + + } + public override string ThemeClassName + { + get + { + return typeof(RadChat).FullName; + } + } +} + +public class CustomChatFactory : ChatFactory +{ + public override BaseChatItemElement CreateItemElement(BaseChatDataItem item) + { + if (item.GetType() == typeof(TextMessageDataItem)) + { + return new MyTextMessageItemElement(); + } + return base.CreateItemElement(item); + } +} + +public class MyTextMessageItemElement : TextMessageItemElement +{ + protected override Type ThemeEffectiveType + { + get + { + return typeof(TextMessageItemElement); + } + } + + protected override LightVisualElement CreateMainMessageElement() + { + return new CustomChatMessageBubbleElement(); + } + + public override void Synchronize() + { + base.Synchronize(); + CustomChatMessageBubbleElement bubble = this.MainMessageElement as CustomChatMessageBubbleElement; + bubble.DrawText = false; + bubble.TextBoxElement.Multiline = true; + bubble.TextBoxElement.DrawFill = false; + bubble.TextBoxElement.DrawBorder = false; + bubble.TextBoxElement.IsReadOnly = true; + } +} + +public class CustomChatMessageBubbleElement : ChatMessageBubbleElement +{ + protected override Type ThemeEffectiveType + { + get + { + return typeof(ChatMessageBubbleElement); + } + } + + RadTextBoxControlElement textBoxElement; + + public RadTextBoxControlElement TextBoxElement + { + get + { + return this.textBoxElement; + } + } + + protected override void CreateChildElements() + { + base.CreateChildElements(); + textBoxElement = new RadTextBoxControlElement(); + textBoxElement.KeyDown += TextBoxElement_KeyDown; + + textBoxElement.ShouldHandleMouseInput = true; + textBoxElement.ShowKeyboardCues = true; + textBoxElement.ContextMenuOpening += textBoxElement_ContextMenuOpening; + this.Children.Add(textBoxElement); + } + + private void TextBoxElement_KeyDown(object sender, KeyEventArgs e) + { + (sender as RadTextBoxControlElement).Focus(); + } + + private void textBoxElement_ContextMenuOpening(object sender, TreeBoxContextMenuOpeningEventArgs e) + { + foreach (RadItem item in e.ContextMenu.Items) + { + if (item.Text.Contains("&Copy")) + { + item.Visibility = ElementVisibility.Visible; + } + else + { + item.Visibility = ElementVisibility.Collapsed; + } + } + } + + public override string Text + { + get + { + return base.Text; + } + set + { + base.Text = value; + this.textBoxElement.Text = value; + } + } +} + + +```` +````VB.NET + +Class SurroundingClass + Public Sub New() + InitializeComponent() + New RadControlSpyForm().Show() + Me.radChat1.Author = New Author(Properties.Resources.bot, "Nancy") + Me.radChat1.ChatElement.ChatFactory = New CustomChatFactory() + Dim author2 As Author = New Author(Properties.Resources.bot, "Andrew") + Dim message1 As ChatTextMessage = New ChatTextMessage("Hello", author2, DateTime.Now.AddHours(1)) + Me.radChat1.AddMessage(message1) + Dim message2 As ChatTextMessage = New ChatTextMessage("Hi", Me.radChat1.Author, DateTime.Now.AddHours(1).AddMinutes(10)) + Me.radChat1.AddMessage(message2) + Dim message3 As ChatTextMessage = New ChatTextMessage("We would like to announce that in the R2 2018 release " & "we introduced Conversational UI", author2, DateTime.Now.AddHours(3)) + Me.radChat1.AddMessage(message3) + Dim message4 As ChatTextMessage = New ChatTextMessage("This control provides rich conversational experience " & "that goes beyond the natural language understanding and " & "personality of your chatbot.", author2, DateTime.Now.AddHours(3)) + Me.radChat1.AddMessage(message4) + End Sub + + Public Class CustomChat + Inherits RadChat + + Protected Overrides Sub OnGotFocus(ByVal e As EventArgs) + If Me.Behavior.OnGotFocus(e) Then + Return + End If + End Sub + + Public Overrides ReadOnly Property ThemeClassName As String + Get + Return GetType(RadChat).FullName + End Get + End Property + End Class + + Public Class CustomChatFactory + Inherits ChatFactory + + Public Overrides Function CreateItemElement(ByVal item As BaseChatDataItem) As BaseChatItemElement + If item.[GetType]() = GetType(TextMessageDataItem) Then + Return New MyTextMessageItemElement() + End If + + Return MyBase.CreateItemElement(item) + End Function + End Class + + Public Class MyTextMessageItemElement + Inherits TextMessageItemElement + + Protected Overrides ReadOnly Property ThemeEffectiveType As Type + Get + Return GetType(TextMessageItemElement) + End Get + End Property + + Protected Overrides Function CreateMainMessageElement() As LightVisualElement + Return New CustomChatMessageBubbleElement() + End Function + + Public Overrides Sub Synchronize() + MyBase.Synchronize() + Dim bubble As CustomChatMessageBubbleElement = TryCast(Me.MainMessageElement, CustomChatMessageBubbleElement) + bubble.DrawText = False + bubble.TextBoxElement.Multiline = True + bubble.TextBoxElement.DrawFill = False + bubble.TextBoxElement.DrawBorder = False + bubble.TextBoxElement.IsReadOnly = True + End Sub + End Class + + Public Class CustomChatMessageBubbleElement + Inherits ChatMessageBubbleElement + + Protected Overrides ReadOnly Property ThemeEffectiveType As Type + Get + Return GetType(ChatMessageBubbleElement) + End Get + End Property + + Private textBoxElement As RadTextBoxControlElement + + Public ReadOnly Property TextBoxElement As RadTextBoxControlElement + Get + Return Me.textBoxElement + End Get + End Property + + Protected Overrides Sub CreateChildElements() + MyBase.CreateChildElements() + textBoxElement = New RadTextBoxControlElement() + AddHandler textBoxElement.KeyDown, AddressOf TextBoxElement_KeyDown + textBoxElement.ShouldHandleMouseInput = True + textBoxElement.ShowKeyboardCues = True + AddHandler textBoxElement.ContextMenuOpening, AddressOf textBoxElement_ContextMenuOpening + Me.Children.Add(textBoxElement) + End Sub + + Private Sub TextBoxElement_KeyDown(ByVal sender As Object, ByVal e As KeyEventArgs) + (TryCast(sender, RadTextBoxControlElement)).Focus() + End Sub + + Private Sub textBoxElement_ContextMenuOpening(ByVal sender As Object, ByVal e As TreeBoxContextMenuOpeningEventArgs) + For Each item As RadItem In e.ContextMenu.Items + + If item.Text.Contains("&Copy") Then + item.Visibility = ElementVisibility.Visible + Else + item.Visibility = ElementVisibility.Collapsed + End If + Next + End Sub + + Public Overrides Property Text As String + Get + Return MyBase.Text + End Get + Set(ByVal value As String) + MyBase.Text = value + Me.textBoxElement.Text = value + End Set + End Property + End Class +End Class + + +```` + +>note Make sure that you replace the RadChat control on your form with the new CustomChat control. + + +## See Also + +* [How to Select and Copy Text in Chat Messages]({%slug how-to-select-and-copy-text-in-chat-messages%}) +* [How to Display Code Snippets in Chat Messages]({%slug how-to-display-code-snippet-in-chat-messages%}) +* [Messages]({%slug winforms/chat/chat-items/messages%}) +* [ChatElementFactory]({%slug winforms/chat/chatelementfactory%}) + diff --git a/knowledge-base/images/how-to-use-shortcuts-in-chat-messages.gif b/knowledge-base/images/how-to-use-shortcuts-in-chat-messages.gif new file mode 100644 index 0000000000000000000000000000000000000000..be7c412b7aaa73b190adbfa8c83200034c8d62bd GIT binary patch literal 77704 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 S_p~i^bxjma?-)RkZu~!rat*Wq literal 0 HcmV?d00001 From d72f69972f1e54fa0ac2638c80d28ac180fef562 Mon Sep 17 00:00:00 2001 From: Dinko Krastev Date: Tue, 6 Aug 2024 14:57:26 +0300 Subject: [PATCH 2/2] Update how-to-use-shortcuts-in-chat-messages.md --- knowledge-base/how-to-use-shortcuts-in-chat-messages.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/knowledge-base/how-to-use-shortcuts-in-chat-messages.md b/knowledge-base/how-to-use-shortcuts-in-chat-messages.md index 29d226cd2..c9fe6cb1c 100644 --- a/knowledge-base/how-to-use-shortcuts-in-chat-messages.md +++ b/knowledge-base/how-to-use-shortcuts-in-chat-messages.md @@ -17,17 +17,17 @@ res_type: kb ## Description -By default, the messages in **RadChat** visualize the text content but it doesn't support shortcurs such as Ctrl+V and Ctrl+V to copy/paste text, etc. How to achieve text selection in RadChat is demonstrated in the [How to Select and Copy Text in Chat Messages]({%slug how-to-select-and-copy-text-in-chat-messages%}) article. +By default, the messages in **RadChat** visualize the text content but it doesn't support shortcuts such as Ctrl+V and Ctrl+V to copy/paste text, etc. How to achieve text selection in RadChat is demonstrated in the [How to Select and Copy Text in Chat Messages]({%slug how-to-select-and-copy-text-in-chat-messages%}) article. -This tutorial demonstrates how to achieve using shortcuts in chat messages. +This tutorial demonstrates how to use shortcuts in chat messages. ![how-to-use-shortcuts-in-chat-messages](images/how-to-use-shortcuts-in-chat-messages.gif) ## Solution -It is necessary to create a derivative of **TextMessageItemElement** and replace its **ChatMessageBubbleElement** with a custom one which hosts a read-only **RadTextBoxControlElement**. Thus, you will acquire the shortcuts that comes from the **RadTextBoxControlElement** and benefit from it. +It is necessary to create a derivative of **TextMessageItemElement** and replace its **ChatMessageBubbleElement** with a custom one that hosts a read-only **RadTextBoxControlElement**. Thus, you will acquire the shortcuts that comes from the **RadTextBoxControlElement** and benefit from it. -You should create a custom [Chat Factory]({%slug winforms/chat/chatelementfactory%}) and integrate the custom message element. Also you should create a custom **RadChat** control and override the **OnGotFocus()**. A complete solution in C# and VB is available below: +You should create a custom [Chat Factory]({%slug winforms/chat/chatelementfactory%}) and integrate the custom message element. Also, you should create a custom **RadChat** control and override the **OnGotFocus()**. A complete solution in C# and VB is available below: ````C#