private void WriteMethod(StreamWriter writer, MethodInfo method) { writer.WriteLine(); writer.WriteLine(); string returnName = JavaHelper.GetTypeName(method.ReturnType); string methodName = JavaHelper.GetCammelCase(method.Name); writer.WriteLine("public {0} {1}({2}) throws ACBrException", returnName, methodName, JavaHelper.GetMethodDeclarationParamList(method)); writer.WriteLine("{"); WriteMethodBody(writer, method); writer.WriteLine("}"); }
private void WriteEvent(StreamWriter writer, EventInfo eventInfo) { string eventName = JavaHelper.GetCammelCase(eventInfo.Name); writer.WriteLine("//<editor-fold defaultstate=\"collapsed\" desc=\"{0}\">", eventName); Type eventArgs; if (eventInfo.EventHandlerType == typeof(EventHandler)) { eventArgs = typeof(EventArgs); } else { eventArgs = eventInfo.EventHandlerType.GetGenericArguments()[0]; } string eventArgsName = eventArgs.Name.Replace("EventArgs", "EventObject"); string interopCallbackName = eventArgs.Name.Replace("EventArgs", "Callback"); Type interopDelegateType = InteropType.GetNestedType(interopCallbackName); MethodInfo interopDelegate = interopDelegateType.GetMethod("Invoke"); writer.WriteLine("public void add{0}(ACBrEventListener<{1}> listener)", eventInfo.Name, eventArgsName); writer.WriteLine("{"); writer.WriteLine(" if (!hasListeners(\"{0}\"))", eventName); writer.WriteLine(" {"); writer.WriteLine(" {0}.INSTANCE.{1}_Set{2}(getHandle(), new {0}.{3}()", interopClassName, interopPrefix, eventInfo.Name, interopCallbackName); writer.WriteLine(" {"); writer.WriteLine(" @Override"); writer.WriteLine(" public void invoke({0})", JavaHelper.GetMethodDeclarationParamList(interopDelegate)); writer.WriteLine(" {"); writer.WriteLine(" {0}({1});", eventName, JavaHelper.GetInteropMethodParamInvocationList(interopDelegate)); writer.WriteLine(" }"); writer.WriteLine(" });"); writer.WriteLine(" }"); writer.WriteLine(""); writer.WriteLine(" addListener(\"{0}\", listener);", eventName); writer.WriteLine("}"); writer.WriteLine(""); writer.WriteLine(""); writer.WriteLine("public void remove{0}(ACBrEventListener<{1}> listener)", eventInfo.Name, eventArgsName); writer.WriteLine("{"); writer.WriteLine(" removeListener(\"{0}\", listener);", eventName); writer.WriteLine(""); writer.WriteLine(" if (!hasListeners(\"{0}\"))", eventName); writer.WriteLine(" {"); writer.WriteLine(" {0}.INSTANCE.{1}_Set{2}(getHandle(), null);", interopClassName, interopPrefix, eventInfo.Name); writer.WriteLine(" }"); writer.WriteLine("}"); writer.WriteLine(""); writer.WriteLine(""); writer.WriteLine("private void {0}({1})", eventName, JavaHelper.GetMethodDeclarationParamList(interopDelegate)); writer.WriteLine("{"); writer.WriteLine(" {0} e = new {0}(this{1});", eventArgsName, JavaHelper.GetMethodParamInvocationList(interopDelegate)); writer.WriteLine(" notifyListeners(\"{0}\", e);", eventName); writer.WriteLine("}"); writer.WriteLine(); writer.WriteLine(); writer.WriteLine("//</editor-fold>"); }