Created
March 9, 2018 00:57
-
-
Save rookiejava/17f8d8f92032e3c06187ecd92a9fe486 to your computer and use it in GitHub Desktop.
IoC Container example for GestureRecognizer on Tizen
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
static void Main(string[] args) | |
{ | |
// Using AutoFac as a container | |
var builder = new ContainerBuilder(); | |
// Create the Logger instance | |
var loggerInstance = Xamarin.Forms.Platform.Tizen.Log.Logger; | |
// Tell AutoFac about LoggedTapGestureRecognizer and which constructor to use | |
builder.RegisterType<LoggedTapGestureRecognizer>().UsingConstructor(typeof(IGestureRecognizer), typeof(ILogger)); | |
var container = builder.Build(); | |
// Tell the Registrar to give AutoFac a chance to resolve instances before | |
// constructing them using Activator.CreateInstance | |
DependencyResolver.ResolveUsing((type, arg) => container.IsRegistered(type) ? container.Resolve(type, new TypedParameter(typeof(IGestureRecognizer), arg[0]), new TypedParameter(typeof(ILogger), loggerInstance)) : null); | |
// Create the app | |
var app = new App(); | |
// Init Forms | |
global::Xamarin.Forms.Platform.Tizen.Forms.Init(app); | |
app.Run(args); | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using ElmSharp; | |
using Xamarin.Forms; | |
using Xamarin.Forms.Platform.Tizen; | |
using ContainerTests.Tizen; | |
[assembly: ExportHandler(typeof(TapGestureRecognizer), typeof(LoggedTapGestureRecognizer))] | |
namespace ContainerTests.Tizen | |
{ | |
public class LoggedTapGestureRecognizer : GestureHandler | |
{ | |
private readonly ILogger _logger; | |
public LoggedTapGestureRecognizer(IGestureRecognizer recognizer, ILogger logger) : base(recognizer) | |
{ | |
_logger = logger; | |
} | |
public override GestureLayer.GestureType Type | |
{ | |
get | |
{ | |
var recognizer = Recognizer as TapGestureRecognizer; | |
if (recognizer != null) | |
{ | |
int numberOfTaps = recognizer.NumberOfTapsRequired; | |
if (numberOfTaps > 2) | |
return GestureLayer.GestureType.TripleTap; | |
else if (numberOfTaps > 1) | |
return GestureLayer.GestureType.DoubleTap; | |
} | |
return GestureLayer.GestureType.Tap; | |
} | |
} | |
protected override void OnStarted(View sender, object data) | |
{ | |
_logger.Debug("Test", "OnStarted occured", "", "", 0); | |
} | |
protected override void OnMoved(View sender, object data) | |
{ | |
_logger.Debug("Test", "OnMoved occured", "", "", 0); | |
} | |
protected override void OnCompleted(View sender, object data) | |
{ | |
_logger.Debug("Test", "OnCompleted occured", "", "", 0); | |
(Recognizer as TapGestureRecognizer)?.SendTapped(sender); | |
} | |
protected override void OnCanceled(View sender, object data) | |
{ | |
_logger.Debug("Test", "OnCanceled occured", "", "", 0); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment