private void AddBufferedMembers()
        {
            foreach (string name in _memberEntries.Keys)
            {
                List <MemberEntry> membersWithSameName = _memberEntries[name];

                MemberEntry entry = membersWithSameName[0];

                if (membersWithSameName.Count == 1)
                {
                    string preText = MaskIdentifier(name);
                    IntelliPromptMemberListItem item = new IntelliPromptMemberListItem(name, entry.ImageIndex, entry.Description, preText, String.Empty);
                    _members.Add(item);
                }
                else
                {
                    StringBuilder sb = new StringBuilder();
                    sb.Append("(Ambiguous name -- choose from the following:)");
                    foreach (MemberEntry entryWithSameName in membersWithSameName)
                    {
                        sb.Append("<br/>");
                        sb.Append(entryWithSameName.Description);
                    }

                    string description = sb.ToString();
                    string preText     = MaskIdentifier(name);
                    IntelliPromptMemberListItem item = new IntelliPromptMemberListItem(name, AMBIGUOUS_NAME_IMG_INDEX, description, preText, String.Empty);
                    _members.Add(item);
                }
            }
        }
Exemple #2
0
		private void AddWithoutDuplicationCheck(string name, string fullname, string datatype, int imageIndex)
		{
			string preText = MaskIdentifier(name);
			string description = String.Format(CultureInfo.CurrentCulture, "<b>{0}</b> : {1}", fullname, datatype); 
			IntelliPromptMemberListItem item = new IntelliPromptMemberListItem(name, imageIndex, description, preText, String.Empty);
			_members.Add(item);
		}
        private void AddWithoutDuplicationCheck(string name, string fullname, string datatype, int imageIndex)
        {
            string preText     = MaskIdentifier(name);
            string description = String.Format(CultureInfo.CurrentCulture, "<b>{0}</b> : {1}", fullname, datatype);
            IntelliPromptMemberListItem item = new IntelliPromptMemberListItem(name, imageIndex, description, preText, String.Empty);

            _members.Add(item);
        }
 /// <summary>
 /// Add <see cref="IntelliPromptMemberListItem"/> items that indicate the language keywords to a <see cref="Hashtable"/>.
 /// </summary>
 /// <param name="memberListItemHashtable">A <see cref="Hashtable"/> of <see cref="IntelliPromptMemberListItem"/> objects, keyed by name.</param>
 protected void AddKeywordMemberListItems(Hashtable memberListItemHashtable)
 {
     for (int id = CSharpTokenID.ContextualKeywordStart + 1; id < CSharpTokenID.ContextualKeywordEnd; id++)
     {
         string keyword = CSharpTokenID.GetTokenKey(id).ToLower();
         memberListItemHashtable[keyword] = new IntelliPromptMemberListItem(keyword, (int)ActiproSoftware.Products.SyntaxEditor.IconResource.Keyword);
     }
     for (int id = CSharpTokenID.KeywordStart + 1; id < CSharpTokenID.KeywordEnd; id++)
     {
         string keyword = CSharpTokenID.GetTokenKey(id).ToLower();
         memberListItemHashtable[keyword] = new IntelliPromptMemberListItem(keyword, (int)ActiproSoftware.Products.SyntaxEditor.IconResource.Keyword);
     }
 }
        private void AddBufferedFunctions()
        {
            foreach (string functionName in _functionsTable.Keys)
            {
                List <InvocableBinding> functionList = _functionsTable[functionName];
                InvocableBinding        invocable    = functionList[0];

                string description;

                if (invocable is FunctionBinding)
                {
                    if (functionList.Count == 1)
                    {
                        description = String.Format(CultureInfo.CurrentCulture, "<b>{0}</b> : {1}", invocable.Name, invocable.ReturnType.Name);
                    }
                    else
                    {
                        description = String.Format(CultureInfo.CurrentCulture, "<b>{0}</b> : {1} (+ {2} Overloadings)", invocable.Name, invocable.ReturnType.Name, functionList.Count);
                    }
                }
                else
                {
                    MethodBinding method = (MethodBinding)invocable;

                    if (functionList.Count == 1)
                    {
                        description = String.Format(CultureInfo.CurrentCulture, "{0}.<b>{1}</b> : {2}", method.DeclaringType.Name, method.Name, method.ReturnType.Name);
                    }
                    else
                    {
                        description = String.Format(CultureInfo.CurrentCulture, "{0}.<b>{1}</b> : {2} (+ {3} Overloadings)", method.DeclaringType.Name, method.Name, method.ReturnType.Name, functionList.Count);
                    }
                }

                string preText = MaskIdentifier(invocable.Name);

                IntelliPromptMemberListItem item = new IntelliPromptMemberListItem(invocable.Name, FUNCTION_IMG_INDEX, description, preText, String.Empty);
                _members.Add(item);
            }
        }
Exemple #6
0
		private void AddBufferedMembers()
		{
			foreach (string name in _memberEntries.Keys)
			{
                List<MemberEntry> membersWithSameName = _memberEntries[name];
                
				MemberEntry entry = membersWithSameName[0];

				if (membersWithSameName.Count == 1)
				{
					string preText = MaskIdentifier(name);
					IntelliPromptMemberListItem item = new IntelliPromptMemberListItem(name, entry.ImageIndex, entry.Description, preText, String.Empty);
					_members.Add(item);
				}
				else
				{
					StringBuilder sb = new StringBuilder();
					sb.Append("(Ambiguous name -- choose from the following:)");
					foreach (MemberEntry entryWithSameName in membersWithSameName)
					{
						sb.Append("<br/>");
						sb.Append(entryWithSameName.Description);
					}

					string description = sb.ToString();
					string preText = MaskIdentifier(name);
					IntelliPromptMemberListItem item = new IntelliPromptMemberListItem(name, AMBIGUOUS_NAME_IMG_INDEX, description, preText, String.Empty);
					_members.Add(item);												
				}
			}
		}
Exemple #7
0
		public void AcceptRelation(TableRefBinding parentBinding, TableRefBinding childBinding, TableRelation relation)
		{
			ColumnBindingCollection parentColumns;
			if (parentBinding.TableBinding == relation.ParentTable)
				parentColumns = relation.ParentColumns;
			else
				parentColumns = relation.ChildColumns;

			ColumnBindingCollection childColumns;
			if (childBinding.TableBinding == relation.ChildTable)
				childColumns = relation.ChildColumns;
			else
				childColumns = relation.ParentColumns;

			// Item in member list:
			// ~~~~~~~~~~~~~~~~~~~~
			// parentRef(col1, col2) ---> childRef(col1, col2)
				
			StringBuilder sb = new StringBuilder();
			sb.Append(parentBinding.Name);
			sb.Append(" (");
			for (int i = 0; i < relation.ColumnCount; i++)
			{
				if (i > 0)
					sb.Append(", ");
					
				sb.Append(parentColumns[i].Name);
			}
			sb.Append(") ---> ");
			sb.Append(childBinding.Name);
			sb.Append(" (");
			for (int i = 0; i < relation.ColumnCount; i++)
			{
				if (i > 0)
					sb.Append(", ");
					
				sb.Append(childColumns[i].Name);
			}
			sb.Append(")");

			string name = sb.ToString();
			sb.Length = 0;
				
			// Description:
			// ~~~~~~~~~~~~
			// Relation <b>parentTable parentRef</b> ---> <b>ChildTable childRef</b> <br/>
			// ON (parentRef.Col1 = childRef.Col1 AND parentRef.Col2 = childRef.Col2)
				
			sb.Append("Relation <br/>");
			sb.Append("<b>");
			sb.Append(MaskIdentifier(parentBinding.TableBinding.Name));
			sb.Append(" AS ");
			sb.Append(MaskIdentifier(parentBinding.Name));
			sb.Append("</b>");
			sb.Append(" ---> ");
			sb.Append("<b>");
			sb.Append(MaskIdentifier(childBinding.TableBinding.Name));
			sb.Append(" AS ");
			sb.Append(MaskIdentifier(childBinding.Name));
			sb.Append("</b><br/>ON (");
				
			for (int i = 0; i < relation.ColumnCount; i++)
			{
				if (i > 0)
					sb.Append(" AND ");
					
				sb.Append(MaskIdentifier(parentBinding.Name));
				sb.Append(".");
				sb.Append(MaskIdentifier(parentColumns[i].Name));
				sb.Append(" = ");
				sb.Append(MaskIdentifier(childBinding.Name));
				sb.Append(".");
				sb.Append(MaskIdentifier(childColumns[i].Name));
			}
			sb.Append(")");
				
			string description = sb.ToString();
			sb.Length = 0;
				
			// PreText:
			// ~~~~~~~~
			// parentAlias.Col1 = childAlias.Col1 AND parentAlias.Col2 = childAlias.Col2
				
			for (int i = 0; i < relation.ColumnCount; i++)
			{
				if (i > 0)
					sb.Append(" AND ");
					
				sb.Append(MaskIdentifier(parentBinding.Name));
				sb.Append(".");
				sb.Append(MaskIdentifier(parentColumns[i].Name));
				sb.Append(" = ");
				sb.Append(MaskIdentifier(childBinding.Name));
				sb.Append(".");
				sb.Append(MaskIdentifier(childColumns[i].Name));
			}

			string preText = sb.ToString();
			sb.Length = 0;
				
			IntelliPromptMemberListItem item = new IntelliPromptMemberListItem(name, RELATION_IMG_INDEX, description, preText, String.Empty);
			_members.Add(item);												
		}
Exemple #8
0
		private void AddBufferedFunctions()
		{
			foreach (string functionName in _functionsTable.Keys)
			{
                List<InvocableBinding> functionList = _functionsTable[functionName];
				InvocableBinding invocable = functionList[0];

				string description;
					
				if (invocable is FunctionBinding)
				{
					if (functionList.Count == 1)
						description = String.Format(CultureInfo.CurrentCulture, "<b>{0}</b> : {1}", invocable.Name, invocable.ReturnType.Name);
					else
						description = String.Format(CultureInfo.CurrentCulture, "<b>{0}</b> : {1} (+ {2} Overloadings)", invocable.Name, invocable.ReturnType.Name, functionList.Count);
				}
				else
				{
					MethodBinding method = (MethodBinding) invocable;

					if (functionList.Count == 1)
						description = String.Format(CultureInfo.CurrentCulture, "{0}.<b>{1}</b> : {2}", method.DeclaringType.Name, method.Name, method.ReturnType.Name);
					else
						description = String.Format(CultureInfo.CurrentCulture, "{0}.<b>{1}</b> : {2} (+ {3} Overloadings)", method.DeclaringType.Name, method.Name, method.ReturnType.Name, functionList.Count);
				}

				string preText = MaskIdentifier(invocable.Name);

				IntelliPromptMemberListItem item = new IntelliPromptMemberListItem(invocable.Name, FUNCTION_IMG_INDEX, description, preText, String.Empty);
				_members.Add(item);
			}
		}
        private static void AutoCompleteUserOptions(string fullString)
        {
            string[] words = fullString.ToLower().Split('.');

            if (words.Length == 1 && "UserOptions".IndexOf(words[0], StringComparison.InvariantCultureIgnoreCase) == 0)
            {
                IntelliPromptMemberListItem item = new IntelliPromptMemberListItem("UserOptions", (int)ActiproSoftware.Products.SyntaxEditor.IconResource.PublicField, "UserOptions");
                Editor.IntelliPrompt.MemberList.Add(item);
                return;
            }
            for (int i = 0; i < Project.Instance.UserOptions.Count; i++)
            {
                if (words.Length == 1 && Project.Instance.UserOptions[i].VariableName.ToLower().IndexOf(words[0]) == 0)
                {
                    // AutoComplete
                    IntelliPromptMemberListItem item = new IntelliPromptMemberListItem(Project.Instance.UserOptions[i].VariableName, (int)ActiproSoftware.Products.SyntaxEditor.IconResource.PublicField, "(user option) " + Project.Instance.UserOptions[i].VarType + " " + Project.Instance.UserOptions[i].VariableName);
                    bool alreadyExists = false;

                    for (int itemCounter = 0; itemCounter < Editor.IntelliPrompt.MemberList.Count; itemCounter++)
                    {
                        if (Editor.IntelliPrompt.MemberList[itemCounter].Text == Project.Instance.UserOptions[i].VariableName)
                        {
                            alreadyExists = true;
                            break;
                        }
                    }
                    if (!alreadyExists)
                    {
                        Editor.IntelliPrompt.MemberList.Add(item);
                    }
                }
            }
        }
Exemple #10
0
        private static void AutoCompleteSpecialWords(string fullString)
        {
            string[] words = fullString.ToLower().Split('.');
            string[] specialWords = new[] { "Write", "WriteLine", "WriteFormat", "SkipCurrentFile" };

            foreach (string specialWord in specialWords)
            {
                if (words.Length == 1 && specialWord.ToLower().IndexOf(words[0]) == 0)
                {
                    // AutoComplete
                    IntelliPromptMemberListItem item = new IntelliPromptMemberListItem(specialWord, (int)ActiproSoftware.Products.SyntaxEditor.IconResource.InternalMethod, specialWord);
                    bool alreadyExists = false;

                    for (int itemCounter = 0; itemCounter < Editor.IntelliPrompt.MemberList.Count; itemCounter++)
                    {
                        if (Editor.IntelliPrompt.MemberList[itemCounter].Text == specialWord)
                        {
                            alreadyExists = true;
                            break;
                        }
                    }
                    if (!alreadyExists)
                    {
                        Editor.IntelliPrompt.MemberList.Add(item);
                    }
                }
            }
        }
Exemple #11
0
        private static void AutoCompleteLocalVariables(string fullString, SyntaxEditor editor)
        {
            // Let's find if this variable was declared anywhere
            string parentVar2 = fullString;

            if (fullString.IndexOf(".") > 0)
            {
                parentVar2 = fullString.Substring(0, fullString.IndexOf("."));
            }
            Regex regex = new Regex(@"([a-zA-Z0-9]+)\s+(" + parentVar2 + "[a-zA-Z0-9]+)", RegexOptions.RightToLeft | RegexOptions.Multiline);
            MatchCollection matches = regex.Matches(editor.Text, editor.Caret.Offset - fullString.Length);

            foreach (Match match in matches)
            {
                if (match != null)
                {
                    string dataTypeName = match.Value;
                    string variableName;

                    if (match.Groups.Count > 1)
                    {
                        dataTypeName = match.Groups[1].Value.Trim();
                        variableName = match.Groups[2].Value.Trim();
                        bool alreadyExists = false;

                        for (int itemCounter = 0; itemCounter < Editor.IntelliPrompt.MemberList.Count; itemCounter++)
                        {
                            if (Editor.IntelliPrompt.MemberList[itemCounter].Text == variableName)
                            {
                                alreadyExists = true;
                                break;
                            }
                        }
                        if (!alreadyExists)
                        {
                            IntelliPromptMemberListItem item = new IntelliPromptMemberListItem(variableName, (int)ActiproSoftware.Products.SyntaxEditor.IconResource.InternalField, "(local variable) " + dataTypeName + " " + variableName);
                            Editor.IntelliPrompt.MemberList.Add(item);
                        }
                    }
                }
            }
            return;
        }
Exemple #12
0
        private static void AutoCompleteFunctions(string fullString)
        {
            string[] words = fullString.ToLower().Split('.');

            for (int i = 0; i < Project.Instance.Functions.Count; i++)
            {
                if (words.Length == 1 && Project.Instance.Functions[i].Name.ToLower().IndexOf(words[0]) == 0)
                {
                    // AutoComplete
                    IntelliPromptMemberListItem item = new IntelliPromptMemberListItem(Project.Instance.Functions[i].Name, (int)ActiproSoftware.Products.SyntaxEditor.IconResource.PublicField, "(function) " + Project.Instance.Functions[i].ReturnType + " " + Project.Instance.Functions[i].Name);
                    bool alreadyExists = false;

                    for (int itemCounter = 0; itemCounter < Editor.IntelliPrompt.MemberList.Count; itemCounter++)
                    {
                        if (Editor.IntelliPrompt.MemberList[itemCounter].Text == Project.Instance.Functions[i].Name)
                        {
                            alreadyExists = true;
                            break;
                        }
                    }
                    if (!alreadyExists)
                    {
                        Editor.IntelliPrompt.MemberList.Add(item);
                    }
                }
            }
        }
Exemple #13
0
        public void AcceptRelation(TableRefBinding parentBinding, TableRefBinding childBinding, TableRelation relation)
        {
            ColumnBindingCollection parentColumns;

            if (parentBinding.TableBinding == relation.ParentTable)
            {
                parentColumns = relation.ParentColumns;
            }
            else
            {
                parentColumns = relation.ChildColumns;
            }

            ColumnBindingCollection childColumns;

            if (childBinding.TableBinding == relation.ChildTable)
            {
                childColumns = relation.ChildColumns;
            }
            else
            {
                childColumns = relation.ParentColumns;
            }

            // Item in member list:
            // ~~~~~~~~~~~~~~~~~~~~
            // parentRef(col1, col2) ---> childRef(col1, col2)

            StringBuilder sb = new StringBuilder();

            sb.Append(parentBinding.Name);
            sb.Append(" (");
            for (int i = 0; i < relation.ColumnCount; i++)
            {
                if (i > 0)
                {
                    sb.Append(", ");
                }

                sb.Append(parentColumns[i].Name);
            }
            sb.Append(") ---> ");
            sb.Append(childBinding.Name);
            sb.Append(" (");
            for (int i = 0; i < relation.ColumnCount; i++)
            {
                if (i > 0)
                {
                    sb.Append(", ");
                }

                sb.Append(childColumns[i].Name);
            }
            sb.Append(")");

            string name = sb.ToString();

            sb.Length = 0;

            // Description:
            // ~~~~~~~~~~~~
            // Relation <b>parentTable parentRef</b> ---> <b>ChildTable childRef</b> <br/>
            // ON (parentRef.Col1 = childRef.Col1 AND parentRef.Col2 = childRef.Col2)

            sb.Append("Relation <br/>");
            sb.Append("<b>");
            sb.Append(MaskIdentifier(parentBinding.TableBinding.Name));
            sb.Append(" AS ");
            sb.Append(MaskIdentifier(parentBinding.Name));
            sb.Append("</b>");
            sb.Append(" ---> ");
            sb.Append("<b>");
            sb.Append(MaskIdentifier(childBinding.TableBinding.Name));
            sb.Append(" AS ");
            sb.Append(MaskIdentifier(childBinding.Name));
            sb.Append("</b><br/>ON (");

            for (int i = 0; i < relation.ColumnCount; i++)
            {
                if (i > 0)
                {
                    sb.Append(" AND ");
                }

                sb.Append(MaskIdentifier(parentBinding.Name));
                sb.Append(".");
                sb.Append(MaskIdentifier(parentColumns[i].Name));
                sb.Append(" = ");
                sb.Append(MaskIdentifier(childBinding.Name));
                sb.Append(".");
                sb.Append(MaskIdentifier(childColumns[i].Name));
            }
            sb.Append(")");

            string description = sb.ToString();

            sb.Length = 0;

            // PreText:
            // ~~~~~~~~
            // parentAlias.Col1 = childAlias.Col1 AND parentAlias.Col2 = childAlias.Col2

            for (int i = 0; i < relation.ColumnCount; i++)
            {
                if (i > 0)
                {
                    sb.Append(" AND ");
                }

                sb.Append(MaskIdentifier(parentBinding.Name));
                sb.Append(".");
                sb.Append(MaskIdentifier(parentColumns[i].Name));
                sb.Append(" = ");
                sb.Append(MaskIdentifier(childBinding.Name));
                sb.Append(".");
                sb.Append(MaskIdentifier(childColumns[i].Name));
            }

            string preText = sb.ToString();

            sb.Length = 0;

            IntelliPromptMemberListItem item = new IntelliPromptMemberListItem(name, RELATION_IMG_INDEX, description, preText, String.Empty);

            _members.Add(item);
        }
        /// <summary>
        /// Provides the core functionality to show an IntelliPrompt member list based on the current context in a <see cref="SyntaxEditor"/>.
        /// </summary>
        /// <param name="language">The <see cref="DotNetLanguage"/> to use for quick info formatting.</param>
        /// <param name="syntaxEditor">The <see cref="SyntaxEditor"/> that will display the IntelliPrompt member list.</param>
        /// <param name="completeWord">Whether to complete the word.</param>
        /// <returns>
        /// <c>true</c> if an auto-complete occurred or if a IntelliPrompt member list is displayed; otherwise, <c>false</c>.
        /// </returns>
        internal bool ShowIntelliPromptMemberList(DotNetLanguage language, SyntaxEditor syntaxEditor, SyntaxEditor toEditor, bool completeWord, string parameterName)
        {
            // Try and ensure the compilation unit is up-to-date
            SemanticParserService.WaitForParse(SemanticParserServiceRequest.GetParseHashKey(syntaxEditor.Document, syntaxEditor.Document));

            // Get the context
            //DotNetContext context = this.GetContext(syntaxEditor, syntaxEditor.Caret.Offset, true, false);
            DotNetContext context = this.GetContext(syntaxEditor, syntaxEditor.Document.GetText(LineTerminator.Newline).Length - 1, true, false);

            // Initialize the member list
            IntelliPromptMemberList memberList = toEditor.IntelliPrompt.MemberList;// syntaxEditor.IntelliPrompt.MemberList;

            memberList.ResetAllowedCharacters();
            memberList.Clear();
            memberList.ImageList = SyntaxEditor.ReflectionImageList;
            memberList.Context   = context;

            // GFH
            if (completeWord && context.InitializationTextRange.StartOffset >= 0)
            {
                string partialWord = syntaxEditor.Document.GetText(LineTerminator.Newline).Substring(context.InitializationTextRange.StartOffset, context.InitializationTextRange.Length);

                if (parameterName.StartsWith(partialWord))
                {
                    memberList.Add(new IntelliPromptMemberListItem(parameterName, (int)ActiproSoftware.Products.SyntaxEditor.IconResource.PrivateProperty));
                }
            }

            // Get the member list items
            Hashtable memberListItemHashtable = new Hashtable();

            switch (context.Type)
            {
            case DotNetContextType.AnyCode:
                // Fill with everything
                if (context.ProjectResolver != null)
                {
                    // Fill with child namespace names in the global and imported namespaces
                    //context.ProjectResolver.AddMemberListItemsForChildNamespaces(memberListItemHashtable, null);
                    //foreach (string namespaceName in context.ImportedNamespaces)
                    //    context.ProjectResolver.AddMemberListItemsForChildNamespaces(memberListItemHashtable, namespaceName);

                    //// Fill with the types in the global and imported namespaces
                    //context.ProjectResolver.AddMemberListItemsForTypes(memberListItemHashtable, context.TypeDeclarationNode, null, DomBindingFlags.Default, true);
                    //foreach (string namespaceName in context.ImportedNamespaces)
                    //    context.ProjectResolver.AddMemberListItemsForTypes(memberListItemHashtable, context.TypeDeclarationNode, namespaceName, DomBindingFlags.Default, true);

                    // Fill with static members of parent types
                    if ((context.TypeDeclarationNode != null) && (context.TypeDeclarationNode.DeclaringType is IDomType))
                    {
                        context.ProjectResolver.AddMemberListItemsForDeclaringTypeMembers(memberListItemHashtable, context.TypeDeclarationNode, (IDomType)context.TypeDeclarationNode.DeclaringType, DomBindingFlags.Static | DomBindingFlags.AllAccessTypes);
                    }

                    // Fill with nested types
                    if (context.TypeDeclarationNode != null)
                    {
                        context.ProjectResolver.AddMemberListItemsForNestedTypes(memberListItemHashtable, context.TypeDeclarationNode, context.TypeDeclarationNode, DomBindingFlags.Default, true);
                    }

                    // Fill with members if in a member (pay attention to if member is instance or static)
                    if (context.TypeDeclarationNode != null)
                    {
                        if (context.MemberDeclarationNode != null)
                        {
                            if (!((IDomMember)context.MemberDeclarationNode).IsStatic)
                            {
                                // Fill with extension methods
                                context.ProjectResolver.AddMemberListItemsForExtensionMethods(memberListItemHashtable, context,
                                                                                              context.TypeDeclarationNode, DomBindingFlags.Instance |
                                                                                              context.AdditionalBindingFlags | DomBindingFlags.AllAccessTypes);
                            }

                            // Fill with members
                            context.ProjectResolver.AddMemberListItemsForMembers(memberListItemHashtable, context.TypeDeclarationNode, context.TypeDeclarationNode,
                                                                                 (this.LanguageType == DotNetLanguage.CSharp ? DomBindingFlags.ExcludeIndexers : DomBindingFlags.None) |
                                                                                 DomBindingFlags.Static | (((IDomMember)context.MemberDeclarationNode).IsStatic ? DomBindingFlags.None : DomBindingFlags.Instance) |
                                                                                 context.AdditionalBindingFlags | DomBindingFlags.AllAccessTypes);
                        }
                        else
                        {
                            // Not within a member so fill with static members
                            context.ProjectResolver.AddMemberListItemsForMembers(memberListItemHashtable, context.TypeDeclarationNode, context.TypeDeclarationNode,
                                                                                 (this.LanguageType == DotNetLanguage.CSharp ? DomBindingFlags.ExcludeIndexers : DomBindingFlags.None) | DomBindingFlags.Static |
                                                                                 context.AdditionalBindingFlags | DomBindingFlags.AllAccessTypes);
                        }
                    }

                    // Fill with variables defined in the scope
                    context.ProjectResolver.AddMemberListItemsForVariables(memberListItemHashtable, context);

                    // Fill with language keywords
                    //this.AddKeywordMemberListItems(memberListItemHashtable);

                    // Fill with code snippets
                    if (this.CodeSnippetsEnabled)
                    {
                        context.ProjectResolver.AddMemberListItemsForCodeSnippets(memberListItemHashtable);
                    }
                }
                break;

            case DotNetContextType.BaseAccess:
                // If the context is in an instance member declaration...
                if ((context.ProjectResolver != null) && (context.MemberDeclarationNode != null) && (!((IDomMember)context.MemberDeclarationNode).IsStatic))
                {
                    if (context.TargetItem.Type == DotNetContextItemType.Base)
                    {
                        // Fill with extension methods
                        context.ProjectResolver.AddMemberListItemsForExtensionMethods(memberListItemHashtable, context,
                                                                                      (IDomType)context.TargetItem.ResolvedInfo, DomBindingFlags.Instance |
                                                                                      context.AdditionalBindingFlags | DomBindingFlags.Public | DomBindingFlags.Family | DomBindingFlags.Assembly);

                        // Fill with instance type members
                        context.ProjectResolver.AddMemberListItemsForMembers(memberListItemHashtable, context.TypeDeclarationNode,
                                                                             (IDomType)context.TargetItem.ResolvedInfo, (this.LanguageType == DotNetLanguage.CSharp ? DomBindingFlags.ExcludeIndexers : DomBindingFlags.None) | DomBindingFlags.Instance |
                                                                             context.AdditionalBindingFlags | DomBindingFlags.Public | DomBindingFlags.Family | DomBindingFlags.Assembly);
                    }
                }
                break;

            case DotNetContextType.DocumentationCommentTag:
                // Add tags
                if (context.ProjectResolver != null)
                {
                    context.ProjectResolver.AddMemberListItemsForDocumentationComments(memberListItemHashtable, context,
                                                                                       (syntaxEditor.Caret.Offset > 0) && (syntaxEditor.Document[syntaxEditor.Caret.Offset - 1] != '<'));
                }
                break;

            case DotNetContextType.AsType:
            case DotNetContextType.IsTypeOfType:
            case DotNetContextType.TryCastType:
            case DotNetContextType.TypeOfType:
                if (context.ProjectResolver != null)
                {
                    if (context.TargetItem != null)
                    {
                        switch (context.TargetItem.Type)
                        {
                        case DotNetContextItemType.Namespace:
                        case DotNetContextItemType.NamespaceAlias:
                            // Fill with child namespaces and types
                            context.ProjectResolver.AddMemberListItemsForChildNamespaces(memberListItemHashtable, context.TargetItem.ResolvedInfo.ToString());
                            context.ProjectResolver.AddMemberListItemsForTypes(memberListItemHashtable, context.TypeDeclarationNode, context.TargetItem.ResolvedInfo.ToString(), DomBindingFlags.Default, false);
                            break;

                        case DotNetContextItemType.Type:
                            // Fill with nested types
                            context.ProjectResolver.AddMemberListItemsForNestedTypes(memberListItemHashtable, context.TypeDeclarationNode, (IDomType)context.TargetItem.ResolvedInfo, DomBindingFlags.Default, false);
                            break;
                        }
                    }
                    else
                    {
                        // VB requires New added for As specifications
                        if ((context.Type == DotNetContextType.AsType) && (language == DotNetLanguage.VB))
                        {
                            memberListItemHashtable["New"] = new IntelliPromptMemberListItem("New", (int)ActiproSoftware.Products.SyntaxEditor.IconResource.Keyword);
                        }

                        // Fill with native types
                        context.ProjectResolver.AddMemberListItemsForNativeTypes(language, memberListItemHashtable, context);

                        // Fill with child namespace names in the global and imported namespaces
                        context.ProjectResolver.AddMemberListItemsForChildNamespaces(memberListItemHashtable, null);
                        foreach (string namespaceName in context.ImportedNamespaces)
                        {
                            context.ProjectResolver.AddMemberListItemsForChildNamespaces(memberListItemHashtable, namespaceName);
                        }

                        // Fill with the types in the imported namespaces
                        context.ProjectResolver.AddMemberListItemsForTypes(memberListItemHashtable, context.TypeDeclarationNode, null, DomBindingFlags.Default, false);
                        foreach (string namespaceName in context.ImportedNamespaces)
                        {
                            context.ProjectResolver.AddMemberListItemsForTypes(memberListItemHashtable, context.TypeDeclarationNode, namespaceName, DomBindingFlags.Default, false);
                        }

                        // Fill with nested types
                        if (context.TypeDeclarationNode != null)
                        {
                            context.ProjectResolver.AddMemberListItemsForNestedTypes(memberListItemHashtable, context.TypeDeclarationNode, context.TypeDeclarationNode, DomBindingFlags.Default, true);
                        }
                    }
                }
                break;

            case DotNetContextType.NamespaceTypeOrMember:
                if (context.ProjectResolver != null)
                {
                    switch (context.TargetItem.Type)
                    {
                    case DotNetContextItemType.Namespace:
                    case DotNetContextItemType.NamespaceAlias:
                        // Fill with child namespaces and types
                        context.ProjectResolver.AddMemberListItemsForChildNamespaces(memberListItemHashtable, context.TargetItem.ResolvedInfo.ToString());
                        context.ProjectResolver.AddMemberListItemsForTypes(memberListItemHashtable, context.TypeDeclarationNode, context.TargetItem.ResolvedInfo.ToString(), DomBindingFlags.Default, false);
                        break;

                    case DotNetContextItemType.Constant:
                    case DotNetContextItemType.Type:
                        // Add nested types
                        if (context.TargetItem.ResolvedInfo is IDomType)
                        {
                            // Fill with nested types
                            context.ProjectResolver.AddMemberListItemsForNestedTypes(memberListItemHashtable, context.TypeDeclarationNode, (IDomType)context.TargetItem.ResolvedInfo, DomBindingFlags.Default, false);
                        }

                        // If the context is in a type declaration...
                        if (context.TypeDeclarationNode != null)
                        {
                            // Fill with static type members
                            context.ProjectResolver.AddMemberListItemsForMembers(memberListItemHashtable, context.TypeDeclarationNode,
                                                                                 (IDomType)context.TargetItem.ResolvedInfo, (this.LanguageType == DotNetLanguage.CSharp ? DomBindingFlags.ExcludeIndexers : DomBindingFlags.None) | DomBindingFlags.Static |
                                                                                 context.AdditionalBindingFlags | DomBindingFlags.AllAccessTypes);
                        }
                        break;

                    case DotNetContextItemType.Member:
                        // If the context is in a type declaration...
                        if (context.TypeDeclarationNode != null)
                        {
                            // Fill with instance type members of member return type
                            IDomType type = context.ProjectResolver.ConstructAndResolveContextItemMemberReturnType(context, context.Items.Length - 1);
                            if (type != null)
                            {
                                // Fill with extension methods
                                context.ProjectResolver.AddMemberListItemsForExtensionMethods(memberListItemHashtable, context,
                                                                                              type, DomBindingFlags.Instance | context.AdditionalBindingFlags | DomBindingFlags.AllAccessTypes);

                                // Fill with instance type members
                                context.ProjectResolver.AddMemberListItemsForMembers(memberListItemHashtable, context.TypeDeclarationNode,
                                                                                     type, (this.LanguageType == DotNetLanguage.CSharp ? DomBindingFlags.ExcludeIndexers : DomBindingFlags.None) | DomBindingFlags.Instance |
                                                                                     context.AdditionalBindingFlags | DomBindingFlags.AllAccessTypes);
                            }
                        }
                        break;

                    case DotNetContextItemType.ArrayItem:
                    case DotNetContextItemType.Parameter:
                    case DotNetContextItemType.Variable:
                        // If the context is in a member declaration...
                        if (context.MemberDeclarationNode != null)
                        {
                            // Fill with extension methods
                            context.ProjectResolver.AddMemberListItemsForExtensionMethods(memberListItemHashtable, context,
                                                                                          (IDomType)context.TargetItem.ResolvedInfo, DomBindingFlags.Instance |
                                                                                          context.AdditionalBindingFlags | DomBindingFlags.AllAccessTypes);

                            // Fill with instance type members
                            context.ProjectResolver.AddMemberListItemsForMembers(memberListItemHashtable, context.TypeDeclarationNode,
                                                                                 (IDomType)context.TargetItem.ResolvedInfo, (this.LanguageType == DotNetLanguage.CSharp ? DomBindingFlags.ExcludeIndexers : DomBindingFlags.None) | DomBindingFlags.Instance |
                                                                                 context.AdditionalBindingFlags | DomBindingFlags.AllAccessTypes);
                        }
                        break;
                    }
                }
                break;

            case DotNetContextType.NativeType:
                // If the context is in a member declaration...
                if ((context.ProjectResolver != null) && (context.TypeDeclarationNode != null))
                {
                    if (context.TargetItem.Type == DotNetContextItemType.Type)
                    {
                        // Fill with static type members
                        context.ProjectResolver.AddMemberListItemsForMembers(memberListItemHashtable, context.TypeDeclarationNode,
                                                                             (IDomType)context.TargetItem.ResolvedInfo, (this.LanguageType == DotNetLanguage.CSharp ? DomBindingFlags.ExcludeIndexers : DomBindingFlags.None) | DomBindingFlags.Static |
                                                                             context.AdditionalBindingFlags | DomBindingFlags.Public);
                    }
                }
                break;

            case DotNetContextType.NewObjectDeclaration:
                if ((context.ProjectResolver != null) && (context.TypeDeclarationNode != null))
                {
                    if (context.TargetItem == null)
                    {
                        // Fill with child namespace names in the global and imported namespaces
                        context.ProjectResolver.AddMemberListItemsForChildNamespaces(memberListItemHashtable, null);
                        foreach (string namespaceName in context.ImportedNamespaces)
                        {
                            context.ProjectResolver.AddMemberListItemsForChildNamespaces(memberListItemHashtable, namespaceName);
                        }

                        // Fill with the creatable types in the global and imported namespaces
                        context.ProjectResolver.AddMemberListItemsForTypes(memberListItemHashtable, context.TypeDeclarationNode, null, DomBindingFlags.Default | DomBindingFlags.HasConstructor, false);
                        foreach (string namespaceName in context.ImportedNamespaces)
                        {
                            context.ProjectResolver.AddMemberListItemsForTypes(memberListItemHashtable, context.TypeDeclarationNode, namespaceName, DomBindingFlags.Default | DomBindingFlags.HasConstructor, false);
                        }

                        // Fill with the creatable nested types
                        context.ProjectResolver.AddMemberListItemsForNestedTypes(memberListItemHashtable, context.TypeDeclarationNode, context.TypeDeclarationNode, DomBindingFlags.Default | DomBindingFlags.HasConstructor, true);
                    }
                    else
                    {
                        switch (context.TargetItem.Type)
                        {
                        case DotNetContextItemType.Namespace:
                        case DotNetContextItemType.NamespaceAlias:
                            // Fill with child namespaces and creatable types
                            context.ProjectResolver.AddMemberListItemsForChildNamespaces(memberListItemHashtable, context.TargetItem.ResolvedInfo.ToString());
                            context.ProjectResolver.AddMemberListItemsForTypes(memberListItemHashtable, context.TypeDeclarationNode, context.TargetItem.ResolvedInfo.ToString(), DomBindingFlags.Default | DomBindingFlags.HasConstructor, false);
                            break;

                        case DotNetContextItemType.Type:
                            // Fill with the creatable nested types
                            context.ProjectResolver.AddMemberListItemsForNestedTypes(memberListItemHashtable, context.TypeDeclarationNode, (IDomType)context.TargetItem.ResolvedInfo, DomBindingFlags.Default | DomBindingFlags.HasConstructor, false);

                            // Fill with extension methods
                            context.ProjectResolver.AddMemberListItemsForExtensionMethods(memberListItemHashtable, context,
                                                                                          (IDomType)context.TargetItem.ResolvedInfo, DomBindingFlags.Instance | context.AdditionalBindingFlags | DomBindingFlags.AllAccessTypes);

                            // Fill with instance type members
                            context.ProjectResolver.AddMemberListItemsForMembers(memberListItemHashtable, context.TypeDeclarationNode,
                                                                                 (IDomType)context.TargetItem.ResolvedInfo, (this.LanguageType == DotNetLanguage.CSharp ? DomBindingFlags.ExcludeIndexers : DomBindingFlags.None) | DomBindingFlags.Instance |
                                                                                 context.AdditionalBindingFlags | DomBindingFlags.AllAccessTypes);
                            break;
                        }
                    }
                }
                break;

            case DotNetContextType.ThisAccess:
                // If the context is in an instance member declaration...
                if ((context.ProjectResolver != null) && (context.MemberDeclarationNode != null) && (!((IDomMember)context.MemberDeclarationNode).IsStatic))
                {
                    if (context.TargetItem.Type == DotNetContextItemType.This)
                    {
                        // Fill with extension methods
                        context.ProjectResolver.AddMemberListItemsForExtensionMethods(memberListItemHashtable, context,
                                                                                      (IDomType)context.TargetItem.ResolvedInfo, DomBindingFlags.Instance |
                                                                                      context.AdditionalBindingFlags | DomBindingFlags.AllAccessTypes);

                        // Fill with instance type members
                        context.ProjectResolver.AddMemberListItemsForMembers(memberListItemHashtable, context.TypeDeclarationNode,
                                                                             (IDomType)context.TargetItem.ResolvedInfo, (this.LanguageType == DotNetLanguage.CSharp ? DomBindingFlags.ExcludeIndexers : DomBindingFlags.None) | DomBindingFlags.Instance |
                                                                             context.AdditionalBindingFlags | DomBindingFlags.AllAccessTypes);
                    }
                }
                break;

            case DotNetContextType.BaseMemberAccess:
            case DotNetContextType.ThisMemberAccess:
                // If the context is in an instance member declaration...
                if ((context.ProjectResolver != null) && (context.MemberDeclarationNode != null) && (!((IDomMember)context.MemberDeclarationNode).IsStatic))
                {
                    // Fill with instance type members of member return type
                    IDomType type = null;
                    if (context.TargetItem.ResolvedInfo is IDomType)
                    {
                        type = (IDomType)context.TargetItem.ResolvedInfo;
                    }
                    else
                    {
                        type = context.ProjectResolver.ConstructAndResolveContextItemMemberReturnType(context, context.Items.Length - 1);
                    }

                    if (type != null)
                    {
                        // Fill with extension methods
                        context.ProjectResolver.AddMemberListItemsForExtensionMethods(memberListItemHashtable, context,
                                                                                      type, DomBindingFlags.Instance | context.AdditionalBindingFlags | DomBindingFlags.AllAccessTypes);

                        // Fill with instance type members
                        context.ProjectResolver.AddMemberListItemsForMembers(memberListItemHashtable, context.TypeDeclarationNode,
                                                                             type, (this.LanguageType == DotNetLanguage.CSharp ? DomBindingFlags.ExcludeIndexers : DomBindingFlags.None) | DomBindingFlags.Instance |
                                                                             context.AdditionalBindingFlags | DomBindingFlags.AllAccessTypes);
                    }
                }
                break;

            case DotNetContextType.StringLiteral:
                // If the context is in a member declaration...
                if (context.ProjectResolver != null)
                {
                    if (context.TargetItem.Type == DotNetContextItemType.StringLiteral)
                    {
                        // Fill with extension methods
                        context.ProjectResolver.AddMemberListItemsForExtensionMethods(memberListItemHashtable, context,
                                                                                      (IDomType)context.TargetItem.ResolvedInfo, DomBindingFlags.Instance |
                                                                                      context.AdditionalBindingFlags | DomBindingFlags.Public);

                        // Fill with string instance type members
                        context.ProjectResolver.AddMemberListItemsForMembers(memberListItemHashtable, context.TypeDeclarationNode,
                                                                             (IDomType)context.TargetItem.ResolvedInfo, (this.LanguageType == DotNetLanguage.CSharp ? DomBindingFlags.ExcludeIndexers : DomBindingFlags.None) | DomBindingFlags.Instance |
                                                                             context.AdditionalBindingFlags | DomBindingFlags.Public);
                    }
                }
                break;

            case DotNetContextType.UsingDeclaration:
                // Fill with namespaces
                if (context.ProjectResolver != null)
                {
                    context.ProjectResolver.AddMemberListItemsForChildNamespaces(memberListItemHashtable,
                                                                                 (context.TargetItem != null ? context.TargetItem.ResolvedInfo.ToString() : String.Empty));
                }
                break;
            }

            // Pre-filter the member list
            this.OnSyntaxEditorIntelliPromptMemberListPreFilter(syntaxEditor,
                                                                new IntelliPromptMemberListPreFilterEventArgs(syntaxEditor, context, memberListItemHashtable));

            // Add items
            if (memberListItemHashtable.Count > 0)
            {
                IntelliPromptMemberListItem[] items = new IntelliPromptMemberListItem[memberListItemHashtable.Count];
                memberListItemHashtable.Values.CopyTo(items, 0);
                memberList.AddRange(items);
            }

            // Show the list
            if (memberList.Count > 0)
            {
                if (context.InitializationTextRange.IsDeleted)
                {
                    memberList.Show();
                }
                else if (completeWord)
                {
                    memberList.CompleteWord(toEditor.Caret.Offset - context.InitializationTextRange.Length, context.InitializationTextRange.Length);
                    //memberList.CompleteWord(context.InitializationTextRange.StartOffset, context.InitializationTextRange.Length);
                }
                else
                {
                    memberList.Show(toEditor.Caret.Offset, context.InitializationTextRange.Length);
                    //memberList.Show(context.InitializationTextRange.StartOffset, context.InitializationTextRange.Length);
                }
                return(true);
            }
            else if (memberList.Visible)
            {
                memberList.Abort();
            }

            return(false);
        }