public EventCallBackHandler(NotifyIcon notifyIcon, IApplicationController ctroller, ServiceStatusManager statusManager)
 {
     NotifyIcon = notifyIcon;
     controller = ctroller;
     serviceStatusManager = statusManager;
 }
        private void InitializeContext(bool showUpdateDateMsg = false)
        {
            components = new System.ComponentModel.Container();

            InitializeMef();
            controller = container.GetExportedValue<IApplicationController>();
            controller.Initialize();

            controller.SetAddFileCommand(new DelegateCommand(AddFile));
            controller.SetAddApiTokenCommand(new DelegateCommand(AddApiToken));
            controller.SetUpdateApiTokenCommand(new DelegateCommand(UpdateApiToken));
            controller.SetRemoveApiTokenCommand(new DelegateCommand(RemoveApiToken));
            controller.SetUploadFilesCommand(new DelegateCommand(ForceUploads));
            controller.SetGetFilesCommand(new DelegateCommand(GetFiles));
            controller.SetGetTokensCommand(new DelegateCommand(GetTokens));
            controller.SetGetDeleteFileCommand(new DelegateCommand(DeleteFile));
            controller.SetUpdateFilesCommand(new DelegateCommand(UpdateFileInfo));

            NotifyIcon = new NotifyIcon(components)
            {
                ContextMenuStrip = new ContextMenuStrip(),
                Icon = Core.Properties.Resources.NotifyIcon,
                Text = Core.Properties.Resources.DefaultNotificationToolTip,
                BalloonTipText = Core.Properties.Resources.DefaultNotificationToolTip
            };

            //Status manager is ues to check if windows WCF service is runing and if windows server is running
            ServiceStatusManager = new ServiceStatusManager(NotifyIcon, controller);
            NotifyIcon.ContextMenuStrip.Opening += ContextMenuStripOpening;
            NotifyIcon.DoubleClick += NotifyIconDoubleClick;
            NotifyIcon.MouseUp += NotifyIconMouseUp;
            NotifyIcon.Visible = true;

            try
            {
                var updaterChecker = Util.CreateUpdater();
                updateIsRequired = updaterChecker.IsUpdateFileExist();
                if (updateIsRequired)
                {
                    if (DoUpdateMsg(updaterChecker.Manifest.AppVersion) == DialogResult.Yes)
                    {
                        updaterChecker.ExecuteOutProcessUpdate();
                        return;
                    }
                }

                if (showUpdateDateMsg)
                     MessageBox.Show(Resources.IsUptoDateMsg,
                        Resources.UpdateAlertCaption, MessageBoxButtons.OK,
                        MessageBoxIcon.Information, MessageBoxDefaultButton.Button1);

                updateTimer = new Timer { Interval = 1000 * 60 * Settings.Default.UpdateIntervalInMinutes };
                updateTimer.Tick += (s, e) => CheckUpdateApp(false);
                updateTimer.Start();

                Process.Start("TicketEvolution.Updater.exe");
            }
            catch (Exception ex)
            {

                Log.DebugFormat("Exception occured trying to start Updater: {0}", ex.Message);
            }
        }