Пример #1
0
        /// <summary>
        /// Gets the items.
        /// </summary>
        /// <param name="parameters">
        /// The parameters.
        /// </param>
        /// <returns>
        /// The items.
        /// </returns>
        public IEnumerable<LiveTemplateItem> GetItems(SmartGenerateParameters parameters)
        {
            var element = parameters.Element;

              var classLikeDeclaration = element.GetContainingElement(typeof(IClassLikeDeclaration), true);
              if (classLikeDeclaration != null)
              {
            return null;
              }

              var enumDecl = element.GetContainingElement(typeof(IEnumDeclaration), true) as IEnumDeclaration;
              if (enumDecl != null)
              {
            return null;
              }

              var namespaceDeclaration = element.GetContainingElement(typeof(INamespaceDeclaration), true);
              if (namespaceDeclaration == null)
              {
            return null;
              }

              var liveTemplateItem = new LiveTemplateItem
              {
            MenuText = "Type",
            Description = "Type",
            Shortcut = "Type"
              };

              return new List<LiveTemplateItem>
              {
            liveTemplateItem
              };
        }
        /// <summary>
        /// Gets the items.
        /// </summary>
        /// <param name="parameters">
        /// The parameters.
        /// </param>
        /// <returns>
        /// The items.
        /// </returns>
        public IEnumerable<LiveTemplateItem> GetItems(SmartGenerateParameters parameters)
        {
            var element = parameters.Element;

              var interfaceDeclaration = element.GetContainingElement(typeof(IInterfaceDeclaration), true);
              if (interfaceDeclaration == null)
              {
            return null;
              }

              var memberDeclaration = element.GetContainingElement(typeof(ITypeMemberDeclaration), true);
              if (memberDeclaration != null && !(memberDeclaration is IInterfaceDeclaration))
              {
            return null;
              }

              var liveTemplateItem = new LiveTemplateItem
              {
            MenuText = "Interface member",
            Description = "Interface member",
            Shortcut = "Interface member"
              };

              return new List<LiveTemplateItem>
              {
            liveTemplateItem
              };
        }
Пример #3
0
        /// <summary>Gets the items.</summary>
        /// <param name="parameters">The parameters.</param>
        /// <returns>The items.</returns>
        public IEnumerable<LiveTemplateItem> GetItems(SmartGenerateParameters parameters)
        {
            var element = parameters.Element;

              var structDeclaration = element.GetContainingElement(typeof(IStructDeclaration), true) as IStructDeclaration;
              if (structDeclaration == null)
              {
            return null;
              }

              var memberDeclaration = element.GetContainingElement(typeof(IClassMemberDeclaration), true);
              if (memberDeclaration != null && !(memberDeclaration is IStructDeclaration))
              {
            return null;
              }

              var modifier = ModifierUtil.GetModifier(element, structDeclaration);

              var liveTemplateItem = new LiveTemplateItem
              {
            MenuText = "Struct member",
            Description = "Struct member",
            Shortcut = "Struct member",
            Text = string.Format("/* @Modifier */\n")
              };

              liveTemplateItem.Variables["Modifier"] = modifier;

              return new List<LiveTemplateItem>
              {
            liveTemplateItem
              };
        }
        /// <summary>Gets the name of the template.</summary>
        /// <param name="parameters">The parameters.</param>
        /// <returns>The items.</returns>
        public IEnumerable<LiveTemplateItem> GetItems(SmartGenerateParameters parameters)
        {
            var element = parameters.Element;
              var previousStatement = parameters.PreviousStatement;

              var declarationStatement = previousStatement as IDeclarationStatement;
              if (declarationStatement == null)
              {
            return null;
              }

              var localVariableDeclarations = declarationStatement.VariableDeclarations;
              if (localVariableDeclarations == null || localVariableDeclarations.Count != 1)
              {
            return null;
              }

              var localVariableDeclaration = localVariableDeclarations[0];
              if (localVariableDeclaration == null)
              {
            return null;
              }

              var value = localVariableDeclaration.Initial.GetText();

              var localVariable = localVariableDeclaration as ILocalVariable;
              if (localVariable == null)
              {
            return null;
              }

              var type = localVariable.Type;

              var presentableName = type.GetPresentableName(element.Language);
              var longPresentableName = type.GetLongPresentableName(element.Language);
              var shortName = localVariable.ShortName;

              var liveTemplateItem = new LiveTemplateItem
              {
            MenuText = string.Format("After local variable declaration of type '{0}'", presentableName),
            Description = string.Format("After local variable of type '{0}'", presentableName),
            Shortcut = string.Format("After local variable of type {0}", longPresentableName),
            Text = string.Format("/* @VariableName, @VariableType, @Value */\n")
              };

              liveTemplateItem.Variables["VariableName"] = shortName;
              liveTemplateItem.Variables["VariableType"] = presentableName;
              liveTemplateItem.Variables["Value"] = value;

              return new List<LiveTemplateItem>
              {
            liveTemplateItem
              };
        }
Пример #5
0
        /// <summary>Gets the items.</summary>
        /// <param name="parameters">The parameters.</param>
        /// <returns>The items.</returns>
        public IEnumerable<LiveTemplateItem> GetItems(SmartGenerateParameters parameters)
        {
            var element = parameters.Element;

              var methodDeclaration = element.GetContainingElement(typeof(IMethodDeclaration), true) as IMethodDeclaration;
              if (methodDeclaration == null)
              {
            return null;
              }

              var body = methodDeclaration.Body;
              if (body == null || body.Statements.Count > 0)
              {
            return null;
              }

              var name = methodDeclaration.DeclaredName;
              if (string.IsNullOrEmpty(name))
              {
            return null;
              }

              var method = methodDeclaration.DeclaredElement;
              if (method == null)
              {
            return null;
              }

              var returnType = method.ReturnType;
              var returnTypeName = returnType.GetPresentableName(element.Language);
              if (returnTypeName == "void" || string.IsNullOrEmpty(returnTypeName))
              {
            return null;
              }

              var liveTemplateItem = new LiveTemplateItem
              {
            MenuText = string.Format("Body in method that returns '{0}'", returnTypeName),
            Description = string.Format("Body in method that returns '{0}'", returnTypeName),
            Shortcut = string.Format("Body in method that returns '{0}'", returnTypeName)
              };

              return new List<LiveTemplateItem>
              {
            liveTemplateItem
              };
        }
Пример #6
0
        /// <summary>Gets the name of the template.</summary>
        /// <param name="smartGenerateParameters">The smart generate parameters.</param>
        /// <returns>The items.</returns>
        public IEnumerable<LiveTemplateItem> GetItems(SmartGenerateParameters smartGenerateParameters)
        {
            var element = smartGenerateParameters.Element;

              var block = element.GetContainingElement(typeof(IBlock), true) as IBlock;
              if (block == null)
              {
            return null;
              }

              var methodDeclaration = element.GetContainingElement(typeof(IMethodDeclaration), true) as IMethodDeclaration;
              if (methodDeclaration == null)
              {
            return null;
              }

              if (block != methodDeclaration.Body)
              {
            return null;
              }

              if (block.Statements.Count > 0)
              {
            var statement = block.Statements[0];
            var statementRange = statement.GetDocumentRange();
            var statementStart = statementRange.TextRange.StartOffset;

            if (element.GetTreeTextRange().StartOffset.Offset > statementStart)
            {
              return null;
            }
              }

              var liveTemplateItem = new LiveTemplateItem
              {
            MenuText = "At the start of a method",
            Description = "At the start of a method",
            Shortcut = "At the start of a method"
              };

              return new List<LiveTemplateItem>
              {
            liveTemplateItem
              };
        }
Пример #7
0
        /// <summary>Gets the name of the template.</summary>
        /// <param name="smartGenerateParameters">The smart generate parameters.</param>
        /// <returns>The items.</returns>
        public IEnumerable<LiveTemplateItem> GetItems(SmartGenerateParameters smartGenerateParameters)
        {
            var element = smartGenerateParameters.Element;

              if (!StatementUtil.IsBeforeFirstStatement(element))
              {
            return null;
              }

              var liveTemplateItem = new LiveTemplateItem
              {
            MenuText = "At the start of a block",
            Description = "At the start of a block",
            Shortcut = "At the start of a block"
              };

              return new List<LiveTemplateItem>
              {
            liveTemplateItem
              };
        }
Пример #8
0
        /// <summary>
        /// Gets the name of the template.
        /// </summary>
        /// <param name="parameters">
        /// The parameters.
        /// </param>
        /// <returns>
        /// The items.
        /// </returns>
        public IEnumerable<LiveTemplateItem> GetItems(SmartGenerateParameters parameters)
        {
            var previousStatement = parameters.PreviousStatement;

              var expressionStatement = previousStatement as IExpressionStatement;
              if (expressionStatement == null)
              {
            return null;
              }

              var invocationExpression = expressionStatement.Expression as IInvocationExpression;
              if (invocationExpression == null)
              {
            return null;
              }

              var invokedExpression = invocationExpression.InvokedExpression as IReferenceExpression;
              if (invokedExpression == null)
              {
            return null;
              }

              var resolveResult = invokedExpression.Reference.Resolve();

              IMethod method = null;

              var methodDeclaration = resolveResult.DeclaredElement as IMethodDeclaration;
              if (methodDeclaration != null)
              {
            method = methodDeclaration.DeclaredElement;
              }

              if (method == null)
              {
            method = resolveResult.DeclaredElement as IMethod;
              }

              if (method == null)
              {
            return null;
              }

              var text = method.ShortName;
              var shortcut = method.ShortName;

              var containingType = method.GetContainingType();
              if (containingType != null)
              {
            text = containingType.ShortName + "." + text;
            shortcut = containingType.ShortName + "." + shortcut;

            var ns = containingType.GetContainingNamespace();
            if (!string.IsNullOrEmpty(ns.ShortName))
            {
              shortcut = ns.ShortName + "." + shortcut;
            }
              }

              var liveTemplateItem = new LiveTemplateItem
              {
            MenuText = string.Format("After call to '{0}'", text),
            Description = string.Format("After call to '{0}'", text),
            Shortcut = string.Format("After call to {0}", shortcut)
              };

              liveTemplateItem.Variables["Name"] = method.ShortName;
              liveTemplateItem.Variables["Type"] = containingType != null ? containingType.ShortName : string.Empty;

              return new List<LiveTemplateItem>
              {
            liveTemplateItem
              };
        }
Пример #9
0
        /// <summary>Gets the name of the template.</summary>
        /// <param name="parameters">The parameters.</param>
        /// <returns>The items.</returns>
        public IEnumerable<LiveTemplateItem> GetItems(SmartGenerateParameters parameters)
        {
            var previousStatement = parameters.PreviousStatement;

              var expressionStatement = previousStatement as IExpressionStatement;
              if (expressionStatement == null)
              {
            return null;
              }

              var invocationExpression = expressionStatement.Expression as IInvocationExpression;
              if (invocationExpression == null)
              {
            return null;
              }

              var invokedExpression = invocationExpression.InvokedExpression as IReferenceExpression;
              if (invokedExpression == null)
              {
            return null;
              }

              var resolveResult = invokedExpression.Reference.Resolve();

              IMethod method = null;

              var methodDeclaration = resolveResult.DeclaredElement as IMethodDeclaration;
              if (methodDeclaration != null)
              {
            method = methodDeclaration.DeclaredElement;
              }

              if (method == null)
              {
            method = resolveResult.DeclaredElement as IMethod;
              }

              if (method == null)
              {
            return null;
              }

              var expression = string.Empty;

              var qualifierExpression = invokedExpression.QualifierExpression;
              if (qualifierExpression != null)
              {
            expression = qualifierExpression.GetText();
              }

              var shortName = method.ShortName;
              var type = string.Empty;

              var text = shortName;
              var shortcut = shortName;

              var containingType = method.GetContainingType();
              if (containingType != null)
              {
            text = containingType.ShortName + "." + text;
            shortcut = containingType.ShortName + "." + shortcut;
            type = containingType.ShortName;

            var ns = containingType.GetContainingNamespace();
            if (!string.IsNullOrEmpty(ns.ShortName))
            {
              shortcut = ns.ShortName + "." + shortcut;
            }
              }

              var liveTemplateItem = new LiveTemplateItem
              {
            MenuText = string.Format("After call to '{0}'", text),
            Description = string.Format("After call to '{0}'", text),
            Shortcut = string.Format("After call to {0}", shortcut),
            Text = string.Format("/* @Qualifier, @MethodName, @ContainingType, @Arg0... */\n")
              };

              liveTemplateItem.Variables["MethodName"] = shortName;
              liveTemplateItem.Variables["ContainingType"] = type;
              liveTemplateItem.Variables["Qualifier"] = expression;

              var arguments = invocationExpression.Arguments;
              if (arguments != null)
              {
            var count = 0;
            foreach (var argument in arguments)
            {
              liveTemplateItem.Variables["Arg" + count] = argument.GetText();
              count++;
            }
              }

              return new List<LiveTemplateItem>
              {
            liveTemplateItem
              };
        }