static string GetMemberExpression (TextEditor editor, MemberResolveResult mr, DomRegion expressionRegion)
		{
			var ed = (ExtensibleTextEditor) editor;
			string expression = null;
			string member = null;

			if (mr.Member != null) {
				if (mr.Member is IProperty) {
					// Visual Studio will evaluate Properties if you hover over their definitions...
					var prop = (IProperty) mr.Member;

					if (prop.CanGet) {
						if (prop.IsStatic)
							expression = prop.FullName;
						else
							member = prop.Name;
					} else {
						return null;
					}
				} else if (mr.Member is IField) {
					var field = (IField) mr.Member;

					if (field.IsStatic)
						expression = field.FullName;
					else
						member = field.Name;
				} else {
					return null;
				}
			}

			if (expression == null) {
				if (member == null)
					return null;

				if (mr.TargetResult != null) {
					if (mr.TargetResult is LocalResolveResult) {
						expression = GetLocalExpression (editor, (LocalResolveResult) mr.TargetResult, expressionRegion);
					} else if (mr.TargetResult is MemberResolveResult) {
						expression = GetMemberExpression (editor, (MemberResolveResult) mr.TargetResult, expressionRegion);
					} else {
						var targetRegion = mr.TargetResult.GetDefinitionRegion ();

						if (targetRegion.BeginLine != 0 && targetRegion.BeginColumn != 0) {
							var start = new DocumentLocation (targetRegion.BeginLine, targetRegion.BeginColumn);
							var end   = new DocumentLocation (targetRegion.EndLine, targetRegion.EndColumn);
							expression = ed.GetTextBetween (start, end).Trim ();
						}
					}
				}

				if (!string.IsNullOrEmpty (expression))
					expression += "." + member;
				else
					expression = member;
			}

			return expression;
		}
Example #2
0
 protected void WriteTarget(MemberResolveResult memberResult)
 {            
     if (memberResult.Member.IsStatic)
     {
         switch(memberResult.Member.SymbolKind) {
             case SymbolKind.Method: {
                     if(memberResult.Member.DeclaringType != TransformCtx.CurClass) {
                         this.Write(BridgeTypes.ToJsName(memberResult.Member.DeclaringType, this.Emitter));
                         this.WriteDot();
                     }
                     break;
                 }
             case SymbolKind.Property: {
                     if(Helpers.IsFieldProperty(memberResult.Member, this.Emitter)) {
                         this.Write(BridgeTypes.ToJsName(memberResult.Member.DeclaringType, this.Emitter));
                         this.WriteDot();
                     }
                     else {
                         if(memberResult.Member.DeclaringType != TransformCtx.CurClass) {
                             this.Write(BridgeTypes.ToJsName(memberResult.Member.DeclaringType, this.Emitter));
                             this.WriteDot();
                         }
                     }
                     break;
                 }
             default: {
                     this.Write(BridgeTypes.ToJsName(memberResult.Member.DeclaringType, this.Emitter));
                     this.WriteDot();
                     break;
                 }
         }
     }
     else
     {
         switch(memberResult.Member.SymbolKind) {
             case SymbolKind.Method: {
                     if(memberResult.Member.DeclaringType != TransformCtx.CurClass) {
                         this.WriteThis();
                         if(this.IdentifierExpression.Role == Roles.TargetExpression) {
                             this.WriteObjectColon();
                         }
                         else {
                             this.WriteDot();
                         }
                     }
                     break;
                 }
             case SymbolKind.Property: {
                     if(Helpers.IsFieldProperty(memberResult.Member, this.Emitter)) {
                         this.WriteThis();
                         this.WriteDot();
                     }
                     else {
                         if(memberResult.Member.DeclaringType != TransformCtx.CurClass) {
                             this.WriteThis();
                             this.WriteObjectColon();
                         }
                     }
                     break;
                 }
             default: {
                     this.WriteThis();
                     this.WriteDot();
                     break;
                 }
         }
     }
 }
Example #3
0
        protected void WriteTarget(MemberResolveResult memberResult)
        {            
            if (memberResult.Member.IsStatic)
            {
                if (!this.Emitter.Validator.IsIgnoreType(memberResult.Member.DeclaringTypeDefinition) && memberResult.Member.DeclaringTypeDefinition.Kind != TypeKind.Enum)
                {
                    this.Write("Bridge.get(" + BridgeTypes.ToJsName(memberResult.Member.DeclaringType, this.Emitter) + ")");
                }
                else
                {
                    this.Write(BridgeTypes.ToJsName(memberResult.Member.DeclaringType, this.Emitter));
                }
            }
            else
            {
                this.WriteThis();
            }

            this.WriteDot();
        }
Example #4
0
        protected void WriteTarget(MemberResolveResult memberResult)
        {
            if (memberResult.Member.IsStatic)
            {
                this.Write(BridgeTypes.ToJsName(memberResult.Member.DeclaringType, this.Emitter));
            }
            else
            {
                this.WriteThis();
            }

            this.WriteDot();
        }
        public static bool IsResourcesMemberField(MemberResolveResult memberResult)
        {
            MonoDroidProject monoDroidProject = AndroidProjectHelpers.ResolveAndroidProject ();

            return (memberResult.TargetResult.Type.DeclaringType.FullName == monoDroidProject.DefaultNamespace + ".Resource");
        }
        public static List<string> ResolveToFilenames(MemberResolveResult member, MonoDroidProject androidProject, string resolveCategory)
        {
            FileInfo fi = new FileInfo (androidProject.AndroidResgenFile.FullPath);

            var directories = Directory.GetDirectories (fi.Directory.FullName);

            List<DirectoryInfo> layoutFolders = new List<DirectoryInfo> ();
            foreach (var d in directories) {
                if (d.ToLower().Contains(resolveCategory)) {
                    layoutFolders.Add (new DirectoryInfo(d));
                }
            }

            List<string> resolvedLayouts = new List<string> ();

            foreach (var folder in layoutFolders)
            {
                // Get all the resources directories;
                var r = androidProject.GetAndroidResources (folder.Name); // Also get the land, portrait etc...

                resolvedLayouts.AddRange(from l in r
                    where l.Key == member.Member.Name
                    select l.Value.FilePath.FullPath.ToString ());
            }

            return resolvedLayouts;
        }