private void lstKeywords_DrawItem(object sender, DrawItemEventArgs e) { if (e.Index < 0) { return; } e.DrawBackground(); Graphics g = e.Graphics; // Hightlight selected item. g.FillRectangle(new SolidBrush(Color.White), e.Bounds); if ((e.State & DrawItemState.Selected) == DrawItemState.Selected) { e.Graphics.FillRectangle(new SolidBrush(Color.LightGray), e.Bounds); } // Change font color according to KeywordsType. ListBox lb = (ListBox)sender; KeywordModel keyword = (KeywordModel)lb.Items[e.Index]; if (keyword.Type == KeywordType.Normal) { g.DrawString(keyword.ToString(), e.Font, new SolidBrush(Color.Black), new PointF(e.Bounds.X, e.Bounds.Y)); } else { g.DrawString(keyword.ToString(), e.Font, new SolidBrush(Color.Blue), new PointF(e.Bounds.X, e.Bounds.Y)); } e.DrawFocusRectangle(); }
private void OnKeywordSelected(Object sender, OnKeywordSelectedEventArgs args) { int index = args.Index; if (index < 0 || index >= keywords.Count) { return; } bool isSelectedIndexChanged = false; if (index != lastSelectedIndex) { isSelectedIndexChanged = true; lastSelectedIndex = index; view.ShowStatusMessage(Properties.Resources.quick_search_status_initial_message, Color.Black); } KeywordModel keyword = keywords[index]; if (args.Mouse == OnKeywordSelectedEventArgs.MouseButton.Left) { if (args.Key == OnKeywordSelectedEventArgs.KeyboardButton.Ctrl) { LaunchNppSearchDialogWithKeyword(keyword); } else if (args.Key == OnKeywordSelectedEventArgs.KeyboardButton.Shift) { ShowSearchingIndication(); using (Scintilla sci = new Scintilla()) { int pos = sci.SearchBackward(keyword.ToString(), keyword.Type == KeywordType.RegExp, args.MatchWord, args.MatchCase, args.WrapSearch); ShowSearchResult(sci, pos); } } else if (args.Key == OnKeywordSelectedEventArgs.KeyboardButton.None) { if (!isSelectedIndexChanged) { ShowSearchingIndication(); using (Scintilla sci = new Scintilla()) { int pos = sci.SearchForward(keyword.ToString(), keyword.Type == KeywordType.RegExp, args.MatchWord, args.MatchCase, args.WrapSearch); ShowSearchResult(sci, pos); } } } } }
private void LaunchNppSearchDialogWithKeyword(KeywordModel keyword) { if (keyword != null) { Clipboard.SetText(keyword.ToString()); } Win32.SendMessage(PluginBase.nppData._nppHandle, NppMsg.NPPM_MENUCOMMAND, 0, NppMenuCmd.IDM_SEARCH_FIND); if (keyword != null) { SendKeys.SendWait("^{v}"); } }