41
41
public class LanguageItemWindow: MonoDevelop.Components.TooltipWindow
43
OutputSettings settings;
45
static string paramStr = GettextCatalog.GetString ("Parameter");
46
static string localStr = GettextCatalog.GetString ("Local variable");
47
static string fieldStr = GettextCatalog.GetString ("Field");
48
static string propertyStr = GettextCatalog.GetString ("Property");
49
static string methodStr = GettextCatalog.GetString ("Method");
50
static string typeStr = GettextCatalog.GetString ("Type");
51
static string namespaceStr = GettextCatalog.GetString ("Namespace");
58
public LanguageItemWindow (ProjectDom dom, Gdk.ModifierType modifierState, Ambience ambience, ResolveResult result, string errorInformations, ICompilationUnit unit)
43
Pango.FontDescription fontDescription;
45
public bool IsEmpty { get; set; }
47
public LanguageItemWindow (ExtensibleTextEditor ed, Gdk.ModifierType modifierState, ResolveResult result, string errorInformations, ICompilationUnit unit)
60
settings = new OutputSettings (OutputFlags.ClassBrowserEntries | OutputFlags.IncludeParameterName | OutputFlags.IncludeKeywords | OutputFlags.IncludeMarkup | OutputFlags.UseFullName);
61
if ((Gdk.ModifierType.ShiftMask & modifierState) == Gdk.ModifierType.ShiftMask) {
62
settings.EmitNameCallback = delegate(INode domVisitable, ref string outString) {
63
// crop used namespaces.
67
foreach (IUsing u in unit.Usings) {
68
foreach (string ns in u.Namespaces) {
69
if (outString.StartsWith (ns + ".")) {
70
len = Math.Max (len, ns.Length + 1);
74
string newName = outString.Substring (len);
76
// check if there is a name clash.
77
if (dom.GetType (newName) != null)
79
foreach (IUsing u in unit.Usings) {
80
foreach (string ns in u.Namespaces) {
81
if (dom.GetType (ns + "." + newName) != null)
86
if (len > 0 && count == 1)
92
// Approximate value for usual case
93
StringBuilder s = new StringBuilder (150);
96
if (result is AggregatedResolveResult)
97
result = ((AggregatedResolveResult)result).PrimaryResult;
98
if (result is ParameterResolveResult) {
99
s.Append ("<small><i>");
101
s.Append ("</i></small>\n");
102
s.Append (ambience.GetString (((ParameterResolveResult)result).Parameter, settings));
103
} else if (result is LocalVariableResolveResult) {
104
s.Append ("<small><i>");
106
s.Append ("</i></small>\n");
107
s.Append (ambience.GetString (((LocalVariableResolveResult)result).ResolvedType, settings));
109
s.Append (((LocalVariableResolveResult)result).LocalVariable.Name);
110
} else if (result is MemberResolveResult) {
111
IMember member = ((MemberResolveResult)result).ResolvedMember;
112
if (member == null) {
113
IReturnType returnType = ((MemberResolveResult)result).ResolvedType;
114
if (returnType != null) {
115
IType type = dom.GetType (returnType);
117
s.Append ("<small><i>");
119
s.Append ("</i></small>\n");
120
s.Append (ambience.GetString (type, settings));
121
doc = AmbienceService.GetDocumentationSummary (type);
125
if (member is IField) {
126
s.Append ("<small><i>");
128
s.Append ("</i></small>\n");
129
} else if (member is IProperty) {
130
s.Append ("<small><i>");
131
s.Append (propertyStr);
132
s.Append ("</i></small>\n");
134
s.Append (ambience.GetString (member, settings));
135
doc = AmbienceService.GetDocumentationSummary (member);
137
} else if (result is NamespaceResolveResult) {
138
s.Append ("<small><i>");
139
s.Append (namespaceStr);
140
s.Append ("</i></small>\n");
141
s.Append (ambience.GetString (new Namespace (((NamespaceResolveResult)result).Namespace), settings));
142
} else if (result is MethodResolveResult) {
143
MethodResolveResult mrr = (MethodResolveResult)result;
144
s.Append ("<small><i>");
145
s.Append (methodStr);
146
s.Append ("</i></small>\n");
147
s.Append (ambience.GetString (mrr.MostLikelyMethod, settings));
148
if (mrr.Methods.Count > 1) {
149
int overloadCount = mrr.Methods.Count - 1;
150
s.Append (string.Format (GettextCatalog.GetPluralString (" (+{0} overload)", " (+{0} overloads)", overloadCount), overloadCount));
153
doc = AmbienceService.GetDocumentationSummary (((MethodResolveResult)result).MostLikelyMethod);
155
s.Append (ambience.GetString (result.ResolvedType, settings));
159
if (!string.IsNullOrEmpty (doc)) {
160
s.Append ("\n<small>");
161
s.Append (AmbienceService.GetDocumentationMarkup ( "<summary>" + doc + "</summary>"));
162
s.Append ("</small>");
166
if (!string.IsNullOrEmpty (errorInformations)) {
169
s.Append ("<small>");
170
s.Append (errorInformations);
171
s.Append ("</small>");
174
if (s.ToString ().Trim ().Length == 0) {
49
ProjectDom dom = ed.ProjectDom;
50
Ambience ambience = AmbienceService.GetAmbience (ed.Document.MimeType);
52
string tooltip = null;
53
if (result != null && ed.TextEditorResolverProvider != null) {
54
tooltip = ed.TextEditorResolverProvider.CreateTooltip (dom, unit, result, errorInformations, ambience, modifierState);
55
if (result.ResolveErrors.Count > 0) {
56
StringBuilder sb = new StringBuilder ();
60
sb.AppendLine (GettextCatalog.GetPluralString ("Error:", "Errors:", result.ResolveErrors.Count));
61
for (int i = 0; i < result.ResolveErrors.Count; i++) {
63
sb.Append (result.ResolveErrors[i]);
64
if (i + 1 < result.ResolveErrors.Count)
67
tooltip = sb.ToString ();
70
tooltip = errorInformations;
72
if (string.IsNullOrEmpty (tooltip)) {
179
MonoDevelop.Components.FixedWidthWrapLabel lab = new MonoDevelop.Components.FixedWidthWrapLabel ();
180
lab.Wrap = Pango.WrapMode.WordChar;
182
lab.BreakOnCamelCasing = true;
183
lab.BreakOnPunctuation = true;
184
lab.Markup = s.ToString ();
77
var label = new MonoDevelop.Components.FixedWidthWrapLabel () {
78
Wrap = Pango.WrapMode.WordChar,
80
BreakOnCamelCasing = true,
81
BreakOnPunctuation = true,
185
84
this.BorderWidth = 3;
188
88
EnableTransparencyControl = true;