This question is locked. New answers and comments are not allowed.
Cyril Iselin
Top achievements
Rank 1
Cyril Iselin
asked on 11 Feb 2012, 08:01 PM
Hello Telerik
I'm programming a little chat application. I want to implement a replacement for emoticons....
I thinked the html placeholder control is nice for this scenario.
Problem :
The Scrollbar of the HtmlPlaceHolder must allways be : "bottom".
Try:
This may work for seconds, then I will recive an error. Also the scrollbar "flickers" on updating the placeholder.HtmlSource.
Can you give me any advise ?
Or you think the RichTextBox (readonly mode) is better to achive this ? If yes, do you know how to achive there the emoticons replacement ?
Thanks a lot
Best Greetings
Cyril Iselin
I'm programming a little chat application. I want to implement a replacement for emoticons....
I thinked the html placeholder control is nice for this scenario.
Problem :
The Scrollbar of the HtmlPlaceHolder must allways be : "bottom".
Try:
HtmlElement iframe = (HtmlElement)box.HtmlPresenter.Children[0];iframe.SetAttribute("id", "myIFrame");string code2 = "$('#myIFrame').animate({scrollTop: $('#myIFrame')[0].scrollHeight})";HtmlPage.Window.Eval(code2);This may work for seconds, then I will recive an error. Also the scrollbar "flickers" on updating the placeholder.HtmlSource.
Can you give me any advise ?
Or you think the RichTextBox (readonly mode) is better to achive this ? If yes, do you know how to achive there the emoticons replacement ?
Thanks a lot
Best Greetings
Cyril Iselin
4 Answers, 1 is accepted
0
Hi Cyril,
From the code snippet and the information you sent I am not really sure how you implement your scenario with the RadHtmlPlaceholder control. Can you send us a small sample so that we can have a look at your implementation and the RadHtmlPlaceholder definition? That will help better understand your scenario and the issue.
Then we will also be able to advice you on an approach and a control that you can use to implement it.
Thank you in advance for your cooperation.
Kind regards,
Tina Stancheva
the Telerik team
From the code snippet and the information you sent I am not really sure how you implement your scenario with the RadHtmlPlaceholder control. Can you send us a small sample so that we can have a look at your implementation and the RadHtmlPlaceholder definition? That will help better understand your scenario and the issue.
Then we will also be able to advice you on an approach and a control that you can use to implement it.
Thank you in advance for your cooperation.
Kind regards,
Tina Stancheva
the Telerik team
Sharpen your .NET Ninja skills! Attend Q1 webinar week and get a chance to win a license! Book your seat now >>
0
Cyril Iselin
Top achievements
Rank 1
answered on 14 Feb 2012, 09:06 PM
Hello Tina
Thanks for your reply !
I have achived my goal, if you think other persons are interested too, you can add this to the code library :
Emoticon Parser for RadRichTextBox
(replace text with images)
Replacer Help Class:
Best Greetings
Cyril Iselin
(if you got any advises or comments, don't histate to contact me ;) )
Thanks for your reply !
I have achived my goal, if you think other persons are interested too, you can add this to the code library :
Emoticon Parser for RadRichTextBox
(replace text with images)
public class EmotIcons {
public static readonly Dictionary<string, string> Icons = new Dictionary<string, string>() { {":)", "img/emoticons/happy.png"}, {":-)", "img/emoticons/happy.png"}, {":@", "img/emoticons/Angry.png"}, {":-@", "img/emoticons/Angry.png"}, {"*angry*", "img/emoticons/Angry.png"}, {"*broken*", "img/emoticons/brokeheart.png"}, }; /// <summary> /// String To Picture function
/// Manipulte the RadRichTextBox /// </summary> /// <param name="text"></param> /// <param name="box"></param> public static void InsertStringReplaceWithIcons(string text, RadRichTextBox box) { //find all replacements (needed for ordering by position later) List<Replacer> replacements = new List<Replacer>(); foreach (var item in Icons) { if (text.Contains(item.Key)) { foreach (var replace in findAll(item.Key, text)) { replacements.Add(new Replacer(item.Key, item.Value, replace)); } } } //insert int startpos = 0; if (replacements.Count > 0) { int i = 0; foreach (var item in replacements.OrderBy(r => r.Position)) { i++; //get text befor icon string t = text.Substring(startpos, item.Position); //insert text if (!string.IsNullOrEmpty(t)) box.Insert(t); //insert icon StreamResourceInfo sr = Application.GetResourceStream(new Uri(item.Value, UriKind.Relative)); box.InsertImage(sr.Stream, "png"); sr.Stream.Dispose(); //remove handled text text = text.Remove(startpos, item.Position + item.Key.Length); //refresh position of emoticons int pos = item.Position + item.Key.Length; replacements.ForEach(r => r.Position -= pos); //insert line break and end of text
if (i == replacements.Count) { if (text.Length > 0) box.Insert(text); box.InsertLineBreak(); } } } else {//no icons founded in string
box.Insert(text); box.InsertLineBreak(); } } private static List<int> findAll(string match, string text) { int foundPos = -1; int count = 0; int startpos = 0; List<int> result = new List<int>(); do { foundPos = text.IndexOf(match, startpos); if (foundPos > -1) { startpos = foundPos + 1; count++; result.Add(foundPos); } } while (foundPos > -1 && startpos < text.Length); return result; } }Replacer Help Class:
public class Replacer
{ public string Key { get; set; } public string Value { get; set; } public int Position { get; set; } public Replacer() { } public Replacer(string key, string value, int position) { Key = key; Value = value; Position = position; } }Best Greetings
Cyril Iselin
(if you got any advises or comments, don't histate to contact me ;) )
0
Hello Cyril,
Thank you for sharing your code. We will need a runnable project in order to add it in the code library, but if you don't mind we can change the type of this thread to a forum thread and change its title to be more descriptive of your solution. This way the community will be able to examine and use your code.
Greetings,
Tina Stancheva
the Telerik team
Thank you for sharing your code. We will need a runnable project in order to add it in the code library, but if you don't mind we can change the type of this thread to a forum thread and change its title to be more descriptive of your solution. This way the community will be able to examine and use your code.
Greetings,
Tina Stancheva
the Telerik team
Sharpen your .NET Ninja skills! Attend Q1 webinar week and get a chance to win a license! Book your seat now >>
0
Cyril Iselin
Top achievements
Rank 1
answered on 17 Feb 2012, 10:19 AM
Hello Tina
Thanks a lot for your reply !
Yes that's okay. Maybe some other People want to achieve something like this.
Best Greetings
Cyril Iselin
Thanks a lot for your reply !
but if you don't mind we can change the type of this thread to a forum thread and change its title to be more descriptive of your solution.Best Greetings
Cyril Iselin