bool InsertSelectedItem(char ch)
        {
            _document.DocumentAboutToBeChanged -= DocumentAboutToBeChanged;
            ICompletionData data   = _completionListView.SelectedItem;
            bool            result = false;

            if (data != null)
            {
                TextEditorControl.BeginUpdate();
                try
                {
                    // Remove already typed text
                    if (_endOffset - _startOffset > 0)
                    {
                        TextEditorControl.Document.Remove(_startOffset, _endOffset - _startOffset);
                    }

                    Debug.Assert(_startOffset <= _document.TextLength);

                    // Insert text from completion data
                    result = _dataProvider.InsertAction(data, TextEditorControl.ActiveTextAreaControl.TextArea, _startOffset, ch);
                }
                finally
                {
                    TextEditorControl.EndUpdate();
                }
            }
            Close();
            return(result);
        }
        /// <summary>
        /// Called when entry should be inserted. Forward to the insertion action of the completion data.
        /// </summary>
        public bool InsertAction(ICompletionData data, TextArea textArea, int insertionOffset, char key)
        {
            textArea.Caret.Position = textArea.Document.OffsetToPosition(insertionOffset);
            var res = data.InsertAction(textArea, key);

            return(res);
        }
        public override bool InsertAction(ICompletionData data, ICSharpCode.TextEditor.TextArea textArea, int insertionOffset, char key)
        {
            CodeCompletionData ccData = data as CodeCompletionData;

            if (IsAttributeCompletion && ccData != null)
            {
                textArea.Caret.Position = textArea.Document.OffsetToPosition(insertionOffset);
                textArea.InsertString(ccData.Text + "=\"\"");
                textArea.Caret.Column -= 1;

                SharpDevelopTextAreaControl editor = textArea.MotherTextEditorControl as SharpDevelopTextAreaControl;
                if (editor != null)
                {
                    WorkbenchSingleton.SafeThreadAsyncCall(
                        delegate {
                        XamlCompletionDataProvider provider      = new XamlCompletionDataProvider();
                        provider.AllowCompleteExistingExpression = true;
                        editor.ShowCompletionWindow(provider, '\0');
                    }
                        );
                }
                return(false);
            }
            else
            {
                return(base.InsertAction(data, textArea, insertionOffset, key));
            }
        }
        void InsertSelectedItem()
        {
            ICompletionData data = codeCompletionListView.SelectedCompletionData;

            if (data != null)
            {
                control.BeginUpdate();

                if (endOffset - startOffset > 0)
                {
                    try
                    {
                        int dif          = endOffset - startOffset;
                        int startOffset2 = control.Document.PositionToOffset(control.ActiveTextAreaControl.Caret.Position);
                        control.Document.Remove(startOffset2 - dif, dif);
                        startOffset = startOffset2 - dif;
                        // control.Document.Insert(startOffset2, " ");
                    }
                    finally
                    {
                        control.ActiveTextAreaControl.Caret.Position = control.Document.OffsetToPosition(startOffset);
                    }
                }
                data.InsertAction(control.ActiveTextAreaControl.TextArea, '\0');
                control.EndUpdate();
            }
            Close();
        }
示例#5
0
 protected virtual void OnCompletionDataRemoved(ICompletionData obj)
 {
     if (CompletionDataRemoved != null)
     {
         CompletionDataRemoved(this, new CompletionDataRemovedEventArgs(obj));
     }
 }
示例#6
0
        private void TextArea_TextEntered(object sender, System.Windows.Input.TextCompositionEventArgs e)
        {
            completionWindow = new CompletionWindow(textEditor.TextArea);
            SelectedContentArgs args = new SelectedContentArgs();

            args.TextEditor = textEditor;
            //TODO: fill the rest of the args

            List <ICompletionData> data = mTextEditor.GetCompletionData(e.Text, args);

            if (data != null && data.Count() > 0)
            {
                IList <ICompletionData> cdata = completionWindow.CompletionList.CompletionData;

                foreach (ICompletionData TCD in data)
                {
                    cdata.Add(TCD);
                }

                completionWindow.Width = completionWindow.Width + (Gherkin.GherkinDcoumentEditor.CompletionWindowSize * 2.5);
                completionWindow.CloseAutomatically = true;
                completionWindow.Show();
                completionWindow.Closed += delegate
                {
                    ICompletionData ICD = (ICompletionData)completionWindow.CompletionList.ListBox.SelectedItem;
                    completionWindow = null;
                };
            }
        }
示例#7
0
 void CodeCompletionListViewSelectedItemChanged(object sender, EventArgs e)
 {
     if (codeCompletionListView != null)
     {
         ICompletionData data = codeCompletionListView.SelectedCompletionData;
         if (showDeclarationWindow && data != null && data.Description != null && data.Description.Length > 0)
         {
             declarationViewWindow.Description = data.Description;
             if (data is O2.External.SharpDevelop.Ascx.CodeCompletionData)
             {
                 lastCodeCompleteData = (O2.External.SharpDevelop.Ascx.CodeCompletionData)data;
                 if (lastCodeCompleteData.member.notNull())
                 {
                     var memberSignature = lastCodeCompleteData.member.str().remove("[DefaultMethod: ").removeLastChar();
                     declarationViewWindow.Description = (declarationViewWindow.Description + memberSignature).trim();
                 }
                 if (lastCodeCompleteData.c.notNull())
                 {
                     var classDescription = lastCodeCompleteData.c.str().remove("[DefaultClass: ").removeLastChar().line();
                     foreach (var method in lastCodeCompleteData.c.Methods)
                     {
                         classDescription += " - {0}".info(method.str()).line();
                     }
                     declarationViewWindow.Description = (declarationViewWindow.Description + classDescription).trim();
                 }
             }
             SetDeclarationViewLocation();
         }
         else
         {
             declarationViewWindow.Description = null;
         }
     }
 }
示例#8
0
        }                                 // for deserialisation

        public AutoCompleteResponse(ICompletionData d)
        {
            DisplayText             = d.DisplayText;
            CompletionText          = d.CompletionText;
            Description             = d.Description;
            RequiredNamespaceImport = d is CompletionData ? ((CompletionData)d).RequiredNamespaceImport : (string)null;
        }
示例#9
0
 public void Add(PascalABCCompiler.Parsers.SymInfo si, ICompletionData data)
 {
     if (!dict.ContainsKey(si))
     {
         dict[si] = data;
     }
 }
示例#10
0
        private void completionList_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e)
        {
            ICompletionData item = this.completionList.SelectedItem;

            if (item != null)
            {
                object description = item.Description;
                if (description != null)
                {
                    string descriptionText = description as string;
                    if (descriptionText != null)
                    {
                        this.toolTip.Content = new TextBlock
                        {
                            Text         = descriptionText,
                            TextWrapping = TextWrapping.Wrap
                        };
                    }
                    else
                    {
                        this.toolTip.Content = description;
                    }
                    this.toolTip.IsOpen = true;
                }
                else
                {
                    this.toolTip.IsOpen = false;
                }
            }
        }
示例#11
0
        public ICompletionData CreateTypeCompletionData(IType type, bool showFullName, bool isInAttributeContext)
        {
            if (!type.Name.IsValidCompletionFor(_partialWord))
            {
                return(new CompletionData("~~"));
            }
            var completion = new CompletionData(type.Name);

            if (_instantiating)
            {
                foreach (var constructor in type.GetConstructors())
                {
                    if (type.TypeParameterCount > 0)
                    {
                        GenerateGenericMethodSignature(constructor);
                        ICompletionData completionData = CompletionData(constructor);
                        completion.AddOverload(completionData);
                    }
                    else
                    {
                        completion.AddOverload(CreateEntityCompletionData(constructor));
                    }
                }
            }
            else
            {
                completion.AddOverload(completion);
            }
            return(completion);
        }
示例#12
0
        /// <summary>
        /// 属性名リストを取得する
        /// </summary>
        /// <param name="info">現在位置の入力情報</param>
        /// <param name="macroList">マクロ情報リスト</param>
        /// <returns>マクロ名リスト</returns>
        ICompletionData[] getAttrNameList(KagTagKindInfo info, KagMacro[] macroList)
        {
            KagMacro macro = KagUtility.GetKagMacro(info.TagName, macroList);

            if (macro == null)
            {
                return(null);                   //マクロが見つからない
            }

            //属性を取得
            resetReverseCount();
            Dictionary <string, ICompletionData> table = new Dictionary <string, ICompletionData>();

            table = getAttrNameListFromMacro(macro, macroList, table);

            //すでに書いているものは削除する
            foreach (string deleteAttrName in info.AttrTable.Keys)
            {
                table.Remove(deleteAttrName);
            }

            //出力用にリストを変換
            ICompletionData[] list = new ICompletionData[table.Count];
            int i = 0;

            foreach (ICompletionData data in table.Values)
            {
                list[i++] = data;
            }
            return(list);
        }
 public AutoCompleteResponse(ICompletionData d)
 {
     DisplayText = d.DisplayText;
     CompletionText = d.CompletionText;
     Description = d.Description;
     RequiredNamespaceImport = d is CompletionData ? ((CompletionData)d).RequiredNamespaceImport : (string)null;
 }
 public static void AddLastUsedItem(ICompletionData item)
 {
     if (item != null && item.Text != null && item.Text.Length > 0)
     {
         dict[item.Text[0].ToString()] = item;
     }
 }
示例#15
0
        Image GetImageFor(ICompletionData item)
        {
            switch (item.CompletionType)
            {
            case CompletionType.none: return(null);

            case CompletionType.snippet: return(Res.Images.snippet);

            case CompletionType.constructor: return(Res.Images.constructor);

            case CompletionType.extension_method: return(Res.Images.extension_method);

            case CompletionType.method: return(Res.Images.method);

            case CompletionType._event: return(Res.Images._event);

            case CompletionType.field: return(Res.Images.field);

            case CompletionType.type: return(Res.Images.constructor);

            case CompletionType.property: return(Res.Images.property);

            case CompletionType._namespace: return(Res.Images._namespace);

            case CompletionType.unresolved: return(Res.Images.unresolved);
            }

            return(null);
        }
示例#16
0
        public ICompletionData CreateEntityCompletionData(IEntity entity)
        {
            _completionText = _signature = entity.Name;

            _completionText = _ambience.ConvertEntity(entity).Replace(";", "");
            if (!_completionText.IsValidCompletionFor(_partialWord))
            {
                return(new CompletionData("~~"));
            }

            if (entity is IMethod)
            {
                var method = entity as IMethod;
                GenerateMethodSignature(method);
            }

            if (entity is IField || entity is IProperty)
            {
                _signature = _signatureAmbience.ConvertEntity(entity).Replace(";", "");
            }

            ICompletionData completionData = CompletionData(entity);

            Debug.Assert(completionData != null);
            return(completionData);
        }
示例#17
0
		public static int Compare(ICompletionData a, ICompletionData b) {
			if (a == null)
				throw new ArgumentNullException("a");
			if (b == null)
				throw new ArgumentNullException("b");
			return string.Compare(a.Text, b.Text, StringComparison.InvariantCultureIgnoreCase);
		}
示例#18
0
        public static int Compare(ICompletionData a, ICompletionData b)
        {
            var result = ((a.DisplayFlags & DisplayFlags.Obsolete) == (b.DisplayFlags & DisplayFlags.Obsolete)) ? StringComparer.OrdinalIgnoreCase.Compare(a.DisplayText, b.DisplayText) : (a.DisplayFlags & DisplayFlags.Obsolete) != 0 ? 1 : -1;

            if (result == 0)
            {
                var aIsImport = (a.DisplayFlags & DisplayFlags.IsImportCompletion) != 0;
                var bIsImport = (b.DisplayFlags & DisplayFlags.IsImportCompletion) != 0;
                if (!aIsImport && bIsImport)
                {
                    return(-1);
                }
                if (aIsImport && !bIsImport)
                {
                    return(1);
                }
                if (aIsImport && bIsImport)
                {
                    return(StringComparer.Ordinal.Compare(a.Description, b.Description));
                }
                var ca = a as CompletionData;
                var cb = b as CompletionData;
                if (ca != null && cb != null && !ca.Icon.IsNull && !cb.Icon.IsNull)
                {
                    return(cb.Icon.Name.CompareTo(ca.Icon.Name));
                }
            }
            return(result);
        }
        public override ICompletionData[] GenerateCompletionData(string fileName, TextArea textArea, char charTyped)
        {
            var resultList = new List <ICompletionData>();

            var document         = FEditor.TextDocument as CSDocument;
            var parseInfo        = document.ParseInfo;
            var finder           = document.ExpressionFinder;
            var text             = textArea.Document.GetText(0, textArea.Caret.Offset);
            var expressionResult = finder.FindExpression(text, textArea.Caret.Offset);

            if (expressionResult.Region.IsEmpty)
            {
                expressionResult.Region = new Dom.DomRegion(textArea.Caret.Line + 1, textArea.Caret.Column + 1);
            }
            var resolver = new NRefactoryResolver(LanguageProperties.CSharp);

            Debug.WriteLine(string.Format("Generating C# CTRL space completion data for expression result {0}", expressionResult));

            PreSelection = string.Empty;
            var completionData = resolver.CtrlSpace(textArea.Caret.Line + 1,
                                                    textArea.Caret.Column + 1,
                                                    parseInfo,
                                                    textArea.Document.TextContent,
                                                    expressionResult.Context);

            var result = Enumerable.Empty <ICompletionData>();

            if (completionData != null)
            {
                // Add the async keyword
                result = new ICompletionData[] { new DefaultCompletionData("async", 5) }
            }
示例#20
0
        // enumerate all tables in our database and build a table/column hashtable for code completion
        void buildDataHT()
        {
            sqlConnection1.Open();
            DataTable dt = sqlConnection1.GetSchema("Columns");

            sqlConnection1.Close();

            string lasttbl = (string)dt.Rows[0][2];

            ICompletionData[] cd = new ICompletionData[1];
            int i  = 0;
            int rc = 0; // rowcount

            foreach (DataRow dr in dt.Rows)
            {
                if ((string)dr[2] == lasttbl)
                {
                    ICompletionData[] cdtemp = new ICompletionData[rc + 1];
                    cd.CopyTo(cdtemp, 0);
                    cd     = cdtemp;
                    cd[rc] = new DefaultCompletionData((string)dr[3], (string)dr[7] + " " + (string)dr[3], 0);
                }
                else
                {
                    rc = 0;
                    htWordNet.Add(lasttbl, cd);
                    cd      = new ICompletionData[1];
                    cd[rc]  = new DefaultCompletionData((string)dr[3], (string)dr[7] + " " + (string)dr[3], 0);
                    lasttbl = (string)dt.Rows[i][2];
                }

                i++;
                rc++;
            }
        }
示例#21
0
        bool InsertSelectedItem(char ch)
        {
            document.DocumentAboutToBeChanged -= DocumentAboutToBeChanged;
            ICompletionData data = codeCompletionListView.SelectedCompletionData;

            if (VisualPascalABC.VisualPABCSingleton.MainForm.UserOptions.EnableSmartIntellisense)
            {
                VisualPascalABC.CompletionDataDispatcher.AddLastUsedItem(data);
                VisualPascalABC.CompletionDataDispatcher.BindMember(data);
            }

            bool result = false;

            if (data != null)
            {
                control.BeginUpdate();

                try {
                    if (endOffset - startOffset > 0)
                    {
                        control.Document.Remove(startOffset, endOffset - startOffset);
                    }
                    Debug.Assert(startOffset <= document.TextLength);
                    result = dataProvider.InsertAction(data, control.ActiveTextAreaControl.TextArea, startOffset, ch);
                } finally {
                    control.EndUpdate();
                }
            }
            Close();
            return(result);
        }
        bool InsertSelectedItem(char ch)
        {
            document.DocumentAboutToBeChanged -= DocumentAboutToBeChanged;
            ICompletionData data   = codeCompletionListView.SelectedCompletionData;
            bool            result = false;

            if (data != null)
            {
                control.BeginUpdate();

                try
                {
                    if (endOffset - startOffset > 0)
                    {
                        control.Document.Remove(startOffset, endOffset - startOffset);
                    }
                    Debug.Assert(startOffset <= document.TextLength);
                    result = dataProvider.InsertAction(data, control.ActiveTextAreaControl.TextArea, startOffset, ch);
                }
                finally
                {
                    control.EndUpdate();
                }
            }
            Close();
            return(result);
        }
            public int Compare(object x, object y)
            {
                ICompletionData d1 = x as ICompletionData;
                ICompletionData d2 = y as ICompletionData;

                return(String.Compare(d1.Text[0], d2.Text[0], true));
            }
示例#24
0
        bool InsertSelectedItem(char ch)
        {
            ICompletionData data   = codeCompletionListView.SelectedCompletionData;
            bool            result = false;

            if (data != null)
            {
                control.BeginUpdate();

                if (endOffset - startOffset > 0)
                {
                    control.Document.Remove(startOffset, endOffset - startOffset);
                }
                if (dataProvider.InsertSpace)
                {
                    control.Document.Insert(startOffset++, " ");
                }
                control.ActiveTextAreaControl.Caret.Position = control.Document.OffsetToPosition(startOffset);

                result = data.InsertAction(control.ActiveTextAreaControl.TextArea, ch);
                control.EndUpdate();
            }
            Close();
            return(result);
        }
        private bool InsertSelectedItem(char ch)
        {
            this.document.DocumentAboutToBeChanged -= new DocumentEventHandler(this.DocumentAboutToBeChanged);
            ICompletionData selectedCompletionData = this.codeCompletionListView.SelectedCompletionData;
            bool            flag = false;

            if (selectedCompletionData != null)
            {
                this.control.BeginUpdate();
                try
                {
                    if (this.endOffset - this.startOffset > 0)
                    {
                        this.control.Document.Remove(this.startOffset, this.endOffset - this.startOffset);
                    }
                    flag = this.dataProvider.InsertAction(selectedCompletionData, this.control.ActiveTextAreaControl.TextArea, this.startOffset, ch);
                }
                finally
                {
                    this.control.EndUpdate();
                }
            }
            base.Close();
            return(flag);
        }
        public bool InsertAction(ICompletionData data, TextArea textArea, int insertionOffset, char key)
        {
            textArea.Caret.Position = textArea.Document.OffsetToPosition(
                Math.Min(insertionOffset, textArea.Document.TextLength));

            return data.InsertAction(textArea, key);
        }
 /// <summary>
 /// Generates the completion data. This method is called by the text editor control.
 /// </summary>
 /// <param name="fileName">the name of the file.</param>
 /// <param name="textArea">The text area.</param>
 /// <param name="charTyped">The character typed.</param>
 /// <returns>The completion data.</returns>
 public override ICompletionData[] GenerateCompletionData(string fileName, TextArea textArea, char charTyped)
 {
   ICompletionData[] completionData = new ICompletionData[_texts.Length];
   for (int i = 0; i < completionData.Length; i++)
     completionData[i] = new DefaultCompletionData(_texts[i], null, _imageIndex);
   return completionData;
 }
示例#28
0
 /// <summary>
 /// Called when entry should be inserted. Forward to the insertion action of the completion data.
 /// </summary>
 public bool InsertAction(ICompletionData data, TextArea textArea, int insertionOffset, char key)
 {
     textArea.Caret.Position = textArea.Document.OffsetToPosition(
         Math.Min(insertionOffset, textArea.Document.TextLength)
         );
     return(data.InsertAction(textArea, key));
 }
 /// <summary>
 /// Called when entry should be inserted. Forward to the insertion action of the completion data.
 /// </summary>
 public bool InsertAction(ICompletionData data, TextArea textArea, int insertionOffset, char key)
 {
     textArea.SelectionManager.SetSelection(textArea.Document.OffsetToPosition(
         Math.Min(insertionOffset - ((AEGISCompletionData)data).Expression.Length, textArea.Document.TextLength)
         ), textArea.Caret.Position);
     return data.InsertAction(textArea, key);
 }
 protected void AddCompletionData(ICompletionData data)
 {
     if (this._c != null)
     {
         this._c.CompletionList.CompletionData.Add(data);
     }
 }
示例#31
0
        CodeCompletionWindow(ICompletionDataProvider completionDataProvider, ICompletionData[] completionData, Form parentForm, TextEditorControl control, bool showDeclarationWindow, bool fixedListViewWidth)
            : base(parentForm, control)
        {
            this.dataProvider = completionDataProvider;
            this.completionData = completionData;
            this.document = control.Document;
            this.showDeclarationWindow = showDeclarationWindow;
            this.fixedListViewWidth = fixedListViewWidth;

            workingScreen = Screen.GetWorkingArea(Location);
            startOffset = control.ActiveTextAreaControl.Caret.Offset + 1;
            endOffset   = startOffset;
            if (completionDataProvider.PreSelection != null) {
                startOffset -= completionDataProvider.PreSelection.Length + 1;
                endOffset--;
            }

            codeCompletionListView = new CodeCompletionListView(completionData);
            codeCompletionListView.Font = new System.Drawing.Font(FontFamily.GenericMonospace, codeCompletionListView.Font.Size);
            codeCompletionListView.ImageList = completionDataProvider.ImageList;
            codeCompletionListView.Dock = DockStyle.Fill;
            codeCompletionListView.SelectedItemChanged += new EventHandler(CodeCompletionListViewSelectedItemChanged);
            codeCompletionListView.DoubleClick += new EventHandler(CodeCompletionListViewDoubleClick);
            codeCompletionListView.Click  += new EventHandler(CodeCompletionListViewClick);
            Controls.Add(codeCompletionListView);

            if (completionData.Length > MaxListLength) {
                vScrollBar.Dock = DockStyle.Right;
                vScrollBar.Minimum = 0;
                vScrollBar.Maximum = completionData.Length - 1;
                vScrollBar.SmallChange = 1;
                vScrollBar.LargeChange = MaxListLength;
                codeCompletionListView.FirstItemChanged += new EventHandler(CodeCompletionListViewFirstItemChanged);
                Controls.Add(vScrollBar);
            }

            this.drawingSize = GetListViewSize();
            SetLocation();

            if (declarationViewWindow == null) {
                declarationViewWindow = new DeclarationViewWindow(parentForm);
            }
            SetDeclarationViewLocation();
            declarationViewWindow.ShowDeclarationViewWindow();
            declarationViewWindow.MouseMove += ControlMouseMove;
            control.Focus();
            CodeCompletionListViewSelectedItemChanged(this, EventArgs.Empty);

            if (completionDataProvider.DefaultIndex >= 0) {
                codeCompletionListView.SelectIndex(completionDataProvider.DefaultIndex);
            }

            if (completionDataProvider.PreSelection != null) {
                CaretOffsetChanged(this, EventArgs.Empty);
            }

            vScrollBar.ValueChanged += VScrollBarValueChanged;
            document.DocumentAboutToBeChanged += DocumentAboutToBeChanged;
        }
        bool DelayedTooltipShow()
        {
            var selectedItem = List.SelectedItem;

            if (selectedItem < 0 || selectedItem >= completionDataList.Count)
            {
                return(false);
            }
            var data = completionDataList [selectedItem];

            IEnumerable <ICompletionData> filteredOverloads;

            if (data.HasOverloads)
            {
                filteredOverloads = data.OverloadedData;
            }
            else
            {
                filteredOverloads = new ICompletionData[] { data };
            }

            EnsureDeclarationViewWindow();
            if (data != currentData)
            {
                declarationviewwindow.Clear();
                var overloads = new List <ICompletionData> (filteredOverloads);
                foreach (var overload in overloads)
                {
                    declarationviewwindow.AddOverload((CompletionData)overload);
                }

                currentData = data;
                if (data.HasOverloads)
                {
                    for (int i = 0; i < overloads.Count; i++)
                    {
                        if (!overloads[i].DisplayFlags.HasFlag(DisplayFlags.Obsolete))
                        {
                            declarationviewwindow.CurrentOverload = i;
                            break;
                        }
                    }
                }
            }

            if (declarationviewwindow.Overloads == 0)
            {
                HideDeclarationView();
                return(false);
            }

            if (declarationViewHidden && Visible)
            {
                RepositionDeclarationViewWindow();
            }

            declarationViewTimer = 0;
            return(false);
        }
 public static void BindMember(ICompletionData item)
 {
     if (cur_sc != null && item != null)
     {
         ht[cur_sc.GetFullName()] = item.Text;
     }
     cur_sc = null;
 }
示例#34
0
 public void AddOverload(ICompletionData data)
 {
     if (overloadedData.Count == 0)
     {
         overloadedData.Add(this);
     }
     overloadedData.Add(data);
 }
示例#35
0
        /// <summary>
        /// Called when entry should be inserted. Forward to the insertion action of the completion data.
        /// </summary>
        public bool InsertAction(ICompletionData data, TextArea textArea, int insertionOffset, char key)
        {
            textArea.Caret.Position = textArea.Document.OffsetToPosition(insertionOffset);
            bool temp = data.InsertAction(textArea, key);

            textArea.Refresh();
            return(temp);
        }
示例#36
0
 public ListItem(ICompletionData CompletionData, int type)
 {
     CodeCompletionData = CompletionData;
     Text = CompletionData.Text;
     Type = type;
     //ToolTip = tooltip;
     InsertText = Text;
 }
		public override ICompletionData[] GenerateCompletionData(string fileName, TextArea textArea, char charTyped)
		{
			ICompletionData[] data = new ICompletionData[texts.Length];
			for (int i = 0; i < data.Length; i++) {
				data[i] = new DefaultCompletionData(texts[i], null, ClassBrowserIconService.GotoArrowIndex);
			}
			return data;
		}
 void ReleaseObjects()
 {
     CompletionWidget      = null;
     CompletionDataList    = null;
     CodeCompletionContext = null;
     currentData           = null;
     Extension             = null;
 }
        /// <summary>
        /// Initializes a new instance of the <see cref="CompletionListView"/> class.
        /// </summary>
        /// <param name="completionData">The completion data.</param>
        public CompletionListView(ICompletionData[] completionData)
        {
            if (completionData == null)
            throw new ArgumentNullException("completionData");

              _fullCompletionData = completionData;
              Array.Sort(_fullCompletionData, DefaultCompletionData.Compare);
              _filteredCompletionData = new List<ICompletionData>(_fullCompletionData);
        }
 protected IdeBridgeCodeCompletionWindow(ICompletionDataProvider completionDataProvider, ICompletionData[] completionData, Form parentForm, TextEditorControl control, bool showDeclarationWindow, bool fixedListViewWidth)
     : base(completionDataProvider, completionData, parentForm, control, showDeclarationWindow, fixedListViewWidth)
 {
     TopMost = true;
     declarationViewWindow.Dispose();
     declarationViewWindow = new DeclarationViewWindow(null);
     declarationViewWindow.TopMost = true;
     SetDeclarationViewLocation();
 }
		public virtual bool InsertAction(ICompletionData data, TextArea textArea, int insertionOffset, char key)
		{
			if (InsertSpace) {
				textArea.Document.Insert(insertionOffset++, " ");
			}
			textArea.Caret.Position = textArea.Document.OffsetToPosition(insertionOffset);
			
			return data.InsertAction(textArea, key);
		}
		public CodeCompletionListView(ICompletionData[] completionData)
		{
			Array.Sort(completionData, DefaultCompletionData.Compare);
			this.completionData = completionData;
			
//			this.KeyDown += new System.Windows.Forms.KeyEventHandler(OnKey);
//			SetStyle(ControlStyles.Selectable, false);
//			SetStyle(ControlStyles.UserPaint, true);
//			SetStyle(ControlStyles.DoubleBuffer, false);
		}
示例#43
0
 private static int CompareTo(ICompletionData a, ICompletionData b)
 {
     if (a.CompletionCategory == null && b.CompletionCategory == null)
         return 0;
     if (a.CompletionCategory == null)
         return -1;
     if (b.CompletionCategory == null)
         return 1;
     return a.CompletionCategory.CompareTo(b.CompletionCategory);
 }
示例#44
0
 public int CompareTo(ICompletionData other)
 {
     int c = this.Priority.CompareTo(other.Priority);
     if (c == 0)
     {
         return this.InsertionText.CompareTo(other.InsertionText);
     }
     else
     {
         return c;
     }
 }
示例#45
0
		CodeCompletionWindow(ICompletionDataProvider completionDataProvider, ICompletionData[] completionData, Form parentForm, TextEditorControl control, string fileName) : base(parentForm, control, fileName)
		{
			this.dataProvider = completionDataProvider;
			this.completionData = completionData;
			
			workingScreen = Screen.GetWorkingArea(Location);
			startOffset = control.ActiveTextAreaControl.Caret.Offset + 1;
			endOffset   = startOffset;
			if (completionDataProvider.PreSelection != null) {
				startOffset -= completionDataProvider.PreSelection.Length + 1;
				endOffset--;
			}
			
			codeCompletionListView = new CodeCompletionListView(completionData);
			codeCompletionListView.ImageList = completionDataProvider.ImageList;
			codeCompletionListView.Dock = DockStyle.Fill;
			codeCompletionListView.SelectedItemChanged += new EventHandler(CodeCompletionListViewSelectedItemChanged);
			codeCompletionListView.DoubleClick += new EventHandler(CodeCompletionListViewDoubleClick);
			codeCompletionListView.Click  += new EventHandler(CodeCompletionListViewClick);
			Controls.Add(codeCompletionListView);
			
			if (completionData.Length > 10) {
				vScrollBar.Dock = DockStyle.Right;
				vScrollBar.Minimum = 0;
				vScrollBar.Maximum = completionData.Length - 8;
				vScrollBar.SmallChange = 1;
				vScrollBar.LargeChange = 3;
				codeCompletionListView.FirstItemChanged += new EventHandler(CodeCompletionListViewFirstItemChanged);
				Controls.Add(vScrollBar);
			}
			
			this.drawingSize = new Size(codeCompletionListView.ItemHeight * 10, codeCompletionListView.ItemHeight * Math.Min(10, completionData.Length));
			SetLocation();
			
			if (declarationViewWindow == null) {
				declarationViewWindow = new DeclarationViewWindow(parentForm);
			}
			SetDeclarationViewLocation();
			declarationViewWindow.ShowDeclarationViewWindow();
			control.Focus();
			CodeCompletionListViewSelectedItemChanged(this, EventArgs.Empty);
			
			if (completionDataProvider.DefaultIndex >= 0) {
				codeCompletionListView.SelectIndex(completionDataProvider.DefaultIndex);
			}
			
			if (completionDataProvider.PreSelection != null) {
				CaretOffsetChanged(this, EventArgs.Empty);
			}
			
			vScrollBar.Scroll += new ScrollEventHandler(DoScroll);
		}
        /// <summary>
        /// Called when entry should be inserted. Forward to the insertion action of the completion data.
        /// </summary>
        public bool InsertAction(ICompletionData data, TextArea textArea, int insertionOffset, char key)
        {
            textArea.Caret.Position = textArea.Document.OffsetToPosition(insertionOffset);
            if (!(data as UserDefaultCompletionData).IsOnOverrideWindow)
            {
                int ind = data.Text.IndexOf('<');
                if (ind != -1 && data.Text.Length > ind + 1 && data.Text[ind + 1] == '>') data.Text = data.Text.Substring(0, ind);
            }
            else
                data.Text = data.Description;

            return data.InsertAction(textArea, key);
        }
		/// <summary>
		/// Checks whether the specified name exists in the completion data.
		/// </summary>
		public static bool Contains(ICompletionData[] items, string name)
		{
			bool Contains = false;
			
			foreach (ICompletionData data in items) {
				if (data.Text == name) {
					Contains = true;
					break;
				}
			}
				
			return Contains;
		}
		public static CodeCompletionWindow ShowCompletionWindow(Form parent, TextEditorControl control, string fileName, ICompletionDataProvider completionDataProvider, char firstChar, bool showDeclarationWindow, bool fixedListViewWidth)
		{
            if (busy)  // DC to prevent multiple calls
            {
                "CodeCompletionWindow.ShowCompletionWindow was busy, skipping ShowCompletionWindow calculation".info();
                return null;
            }

                busy = true;
                return (CodeCompletionWindow)parent.invokeOnThread(
                    () =>
                    {
                        try
                        {

                            var tempCompletionData = new ICompletionData[] { };
                            CodeCompletionWindow codeCompletionWindow = new CodeCompletionWindow(completionDataProvider, tempCompletionData, parent, control, showDeclarationWindow, fixedListViewWidth);
                            codeCompletionWindow.CloseWhenCaretAtBeginning = firstChar == '\0';
                            codeCompletionWindow.ShowCompletionWindow();

                            O2Thread.mtaThread(         // run in on a separate thread for performance reasons
                                () =>
                                {
                                    try
                                    {
                                        ICompletionData[] completionData = completionDataProvider.GenerateCompletionData(fileName, control.ActiveTextAreaControl.TextArea, firstChar);
                                        if (completionData == null || completionData.Length == 0)
                                        {
                                            //return null;
                                        }
                                        else
                                            codeCompletionWindow.setCodeCompletionData(completionData);
                                        busy = false;
                                    }
                                    catch (Exception ex)
                                    {
                                        ex.log("in CodeCompletionWindow.ShowCompletionWindow ");
                                    }
                                });

                            return codeCompletionWindow;
                        }
                        catch (Exception ex)
                        {
                            busy = false;
                            return null;
                        }
                    });
            
		}     
示例#49
0
 CodeCompletionWindow(ICompletionDataProvider completionDataProvider, ICompletionData[] completionData, Form parentForm, TextEditorControl control, bool showDeclarationWindow, bool fixedListViewWidth)
     : base(parentForm, control)
 {
     this.dataProvider = completionDataProvider;
     this.completionData = completionData;
     this.document = control.Document;
     this.showDeclarationWindow = showDeclarationWindow;
     this.fixedListViewWidth = fixedListViewWidth;
     this.guiLoaded = false;
     startOffset = control.ActiveTextAreaControl.Caret.Offset +1;
     endOffset = startOffset;
     //startOffset = -1;
     //endOffset = -1;
 }
		public CodeCompletionListView(ICompletionData[] completionData)
		{
			if (this.completionData != null) {
				Array.Clear(this.completionData, 0, completionData.Length);
			}
			
			Array.Sort(completionData);
			this.completionData = completionData;
			
//			this.KeyDown += new System.Windows.Forms.KeyEventHandler(OnKey);
//			SetStyle(ControlStyles.Selectable, false);
//			SetStyle(ControlStyles.UserPaint, true);
//			SetStyle(ControlStyles.DoubleBuffer, false);
		}
		/// <summary>
		/// Checks whether the completion data specified by name has
		/// the correct description.
		/// </summary>
		public static bool ContainsDescription(ICompletionData[] items, string name, string description)
		{
			bool Contains = false;
			
			foreach (ICompletionData data in items) {
				if (data.Text[0] == name) {
					if (data.Description == description) {
						Contains = true;
						break;						
					}
				}
			}
				
			return Contains;
		}		
		public void SetUpFixture()
		{
			Form parentForm = new Form();
			parentForm.CreateControl();
			
			XmlSchemaCompletionData schema = new XmlSchemaCompletionData(ResourceManager.GetXhtmlStrictSchema());
			XmlSchemaCompletionDataCollection schemas = new XmlSchemaCompletionDataCollection();
			schemas.Add(schema);
			provider = new XmlCompletionDataProvider(schemas, schema, String.Empty);
			TextEditorControl textEditor = new TextEditorControl();
			completionDataItems = provider.GenerateCompletionData(@"C:\Test.xml", textEditor.ActiveTextAreaControl.TextArea, '<');
			using (CodeCompletionWindow completionWindow = CodeCompletionWindow.ShowCompletionWindow(parentForm, textEditor, @"C:\Test.xml", provider, '<')) {
				CodeCompletionListView listView = (CodeCompletionListView)completionWindow.Controls[0];
				selectedCompletionData = listView.SelectedCompletionData;
				completionWindow.Close();
			}
		}
        public static CodeCompletionWindow ShowCompletionWindow_Thread(Form parent,TextEditorControl control, string fileName, ICompletionDataProvider completionDataProvider, char firstChar, bool showDeclarationWindow, bool fixedListViewWidth)
        { 
            try
                {

                    var tempCompletionData = new ICompletionData[] { };
                    CodeCompletionWindow codeCompletionWindow = new CodeCompletionWindow(completionDataProvider, tempCompletionData, parent, control, showDeclarationWindow, fixedListViewWidth);
	                codeCompletionWindow.CloseWhenCaretAtBeginning = firstChar == '\0';
                    codeCompletionWindow.ShowCompletionWindow();

					codeCompletionWindow.AfterWindowOpen.invoke();

                    O2Thread.mtaThread(         // run in on a separate thread for performance reasons
                        () =>
                        {
                            try
                            {
                                ICompletionData[] completionData = completionDataProvider.GenerateCompletionData(fileName, control.ActiveTextAreaControl.TextArea, firstChar);
                                if (completionData == null || completionData.Length == 0)
                                {
                                    //"There was no CompleteData".error();
                                    //return null;
                                }
                                else
                                    codeCompletionWindow.setCodeCompletionData(completionData);                                
                            }
                            catch (Exception ex)
                            {
                                ex.log("in CodeCompletionWindow.ShowCompletionWindow ");
                            }
                            busy = false;
                        });

                    return codeCompletionWindow;
                }
                catch// (Exception ex)
                {
                    busy = false;
                    return null;
                }
        }
		/// <summary>
		/// Called when entry should be inserted. Forward to the insertion action of the completion data.
		/// </summary>
		public bool InsertAction(ICompletionData data, TextArea textArea, int insertionOffset, char key) {
			int endOffset = insertionOffset;
			LineSegment line = textArea.Document.GetLineSegment(textArea.Caret.Line);
			// Try to find the last word and replace it
			if (insertionOffset != 0) {
				// insertionOffset represent the current Caret, so this isnt needed
				// But just in case..
				if (textArea.Caret.Column > 0) {
					TextWord word = line.GetWord(textArea.Caret.Column - 1);
					if (word != null) {
						// Nothing todo?
						if (word.Word == data.Text) {
							data.Text = "";
						} else {
							// cap insert data
							data.Text = data.Text.Substring(word.Length);
						}
					}
				}
			}

			return data.InsertAction(textArea, key);
		}
		public virtual void AddOverload (ICompletionData data)
		{
			throw new System.InvalidOperationException ();
		}
 	public static void AddLastUsedItem(ICompletionData item)
 	{
 		if (item != null && item.Text != null && item.Text.Length > 0)
 			dict[item.Text[0].ToString()] = item;
 	}
示例#57
0
				public void AddOverload (ICompletionData data)
				{
					throw new NotImplementedException ();
				}
 	public static void BindMember(ICompletionData item)
 	{
 		if (cur_sc != null && item != null)
 			ht[cur_sc.GetFullName()] = item.Text;
 		cur_sc = null;
 	}
示例#59
0
        /// <summary>
        /// Inserts the selected completion value.
        /// </summary>
        /// <remarks>
        /// If we are closing a tag, we request a reformatting of the line.
        /// </remarks>
        /// <param name="p_cdtData">The code completion selection that was chosen.</param>
        /// <param name="p_txaTextArea">The area containing the document being edited.</param>
        /// <param name="p_intInsertionOffset">Where the selection should be inserted into the document.</param>
        /// <param name="p_chrKey">The character that was used to choose this completion selection.</param>
        /// <returns><lang cref="true"/> if the insertion of <paramref name="p_chrKey"/> was handled;
        /// <lang cref="false"/> otherwise.</returns>
        public bool InsertAction(ICompletionData p_cdtData, TextArea p_txaTextArea, int p_intInsertionOffset, char p_chrKey)
        {
            p_txaTextArea.Caret.Position = p_txaTextArea.Document.OffsetToPosition(p_intInsertionOffset);
            bool booInserted = p_cdtData.InsertAction(p_txaTextArea, p_chrKey);

            if (p_cdtData.Text.StartsWith("/"))
            {
                p_txaTextArea.Document.FormattingStrategy.IndentLine(p_txaTextArea, p_txaTextArea.Caret.Position.Line);
                if (p_chrKey == '/')
                    return true;
            }
            return booInserted;
        }
     public void Add(PascalABCCompiler.Parsers.SymInfo si, ICompletionData data)
 	{
 		if (!dict.ContainsKey(si))
 		dict[si] = data;
 	}