bool HandleKeyPress(char ch)
        {
            CompletionWindow completionWindow;

            string fileName = FileName;

            switch (ch) {
                case ' ':
                    //TextEditorProperties.AutoInsertTemplates
                    if (1 == 1) {
                        string word = GetWordBeforeCaret();
                        if (word != null) {
                            CodeTemplateGroup templateGroup = CodeTemplateLoader.GetTemplateGroupPerFilename(FileName);

                            if (templateGroup != null) {
                                foreach (CodeTemplate template in templateGroup.Templates) {
                                    if (template.Shortcut == word) {
                                        InsertTemplate(template);
                                        return false;
                                    }
                                }
                            }
                        }
                    }
                    goto case '.';
                case '<':
                    try {
                        completionWindow = new CompletionWindow(this, fileName, new CommentCompletionDataProvider());
                        completionWindow.ShowCompletionWindow('<');
                    } catch (Exception e) {
                        Console.WriteLine("EXCEPTION: " + e);
                    }
                    return false;
                case '(':
                    try {
                        if (insightWindow == null ) {//|| insightWindow.IsDisposed) {
                            insightWindow = new InsightWindow(this, fileName);
                        }

                        insightWindow.AddInsightDataProvider(new MethodInsightDataProvider());
                        insightWindow.ShowInsightWindow();
                    } catch (Exception e) {
                        Console.WriteLine("EXCEPTION: " + e);
                    }
                    return false;
                case '[':
                    try {
                        if (insightWindow == null ) {//|| insightWindow.IsDisposed) {
                            insightWindow = new InsightWindow(this, fileName);
                        }

                        insightWindow.AddInsightDataProvider(new IndexerInsightDataProvider());
                        insightWindow.ShowInsightWindow();
                    } catch (Exception e) {
                        Console.WriteLine("EXCEPTION: " + e);
                    }
                    return false;
                case '.':
                    try {
            //						TextAreaPainter.IHaveTheFocusLock = true;
                        completionWindow = new CompletionWindow(this, fileName, new CodeCompletionDataProvider());
                        completionWindow.ShowCompletionWindow(ch);
            //						TextAreaPainter.IHaveTheFocusLock = false;
                    } catch (Exception e) {
                        Console.WriteLine("EXCEPTION: " + e);
                    }
                    return false;
            }
            return false;
        }
 public override void Execute(TextArea services)
 {
     CompletionWindow completionWindow = new CompletionWindow(services.MotherTextEditorControl, "a.cs", new TemplateCompletionDataProvider());
     completionWindow.ShowCompletionWindow('\0');
 }