void UpdateSuggestionList()
{
//find suggestion words
this.currentLocalText = null;
sgBox.ClearItems();
if (textbox.CurrentTextSpan == null)
{
sgBox.Hide();
return;
}
//-------------------------------------------------------------------------
//sample parse ...
//In this example all country name start with Captial letter so ...
string currentTextSpanText = textbox.CurrentTextSpan.Text.ToUpper();
//analyze content
var textBuffer = currentTextSpanText.ToCharArray();
var results = new List<LayoutFarm.Composers.TextSplitBound>();
results.AddRange(textbox.TextSplitter.ParseWordContent(textBuffer, 0, textBuffer.Length));
//get last part of splited text
int m = results.Count;
if (m < 1)
{
return;
}
Composers.TextSplitBound lastSplitPart = results[m - 1];
this.currentLocalText = GetString(textBuffer, lastSplitPart);
//char firstChar = currentTextSpanText[0];
char firstChar = currentLocalText[0];
List<string> keywords;
if (words.TryGetValue(firstChar, out keywords))
{
int j = keywords.Count;
int listViewWidth = sgBox.Width;
for (int i = 0; i < j; ++i)
{
string choice = keywords[i].ToUpper();
if (choice.StartsWith(currentLocalText))
{
CustomWidgets.ListItem item = new CustomWidgets.ListItem(listViewWidth, 17);
item.BackColor = Color.LightGray;
item.Tag = item.Text = keywords[i];
sgBox.AddItem(item);
}
}
}
if (sgBox.ItemCount > 0)
{
sgBox.Show();
//TODO: implement selectedIndex suggestion hint here
sgBox.SelectedIndex = 0;
//move listview under caret position
var caretPos = textbox.CaretPosition;
//temp fixed
//TODO: review here
if (!alreadyHasTextBoxGlobalOffset)
{
this.textBoxGlobalOffset = textbox.GetGlobalLocation();
alreadyHasTextBoxGlobalOffset = true;
}
sgBox.SetLocation(textBoxGlobalOffset.X + caretPos.X, caretPos.Y + 70);
}
else
{
sgBox.Hide();
}
}