Example #1
0
 internal void Initialize(SAPbouiCOM.Application inApplication, SAPbobsCOM.Company inCompany)
 {
     Application = inApplication;
     Company     = inCompany;
 }
Example #2
0
        public static ISboAddon Create(string nameSpace, string name, SAPbouiCOM.Application inApplication, SAPbobsCOM.Company inCompany)
        {
            if (Instance != null)
            {
                throw new Exception("Addon instance already exists");
            }

            var _addon = new SboAddon(nameSpace, name);

            Instance = _addon;

            _addon.Initialize(inApplication, inCompany);
            _addon.Events.Initialize();

            _addon.SetUiLanguage();
            _addon.Application.AppEvent += type =>
            {
                Logger.Info("Application event triggered: {0}", type);
                switch (type)
                {
                case BoAppEventTypes.aet_ShutDown:
                    break;

                case BoAppEventTypes.aet_CompanyChanged:
                    break;

                case BoAppEventTypes.aet_LanguageChanged:
                    _addon.SetUiLanguage();
                    break;

                case BoAppEventTypes.aet_ServerTerminition:
                    break;

                case BoAppEventTypes.aet_FontChanged:
                    break;

                default:
                    throw new ArgumentOutOfRangeException("type");
                }
            };

            var testUiConnection = new Action(async() =>
            {
                while (true)
                {
                    try
                    {
                        var appId = Instance.Application.AppId;

                        await Task.Delay(TimeSpan.FromSeconds(15 + (appId * 0)));
                    }
                    catch (Exception)
                    {
                        Logger.Info("Lost connection to application. Exiting.");
                        Environment.Exit(1);
                    }
                }
            });

            Task.Factory.StartNew(testUiConnection, CancellationToken.None, TaskCreationOptions.None, Instance.UiTaskScheduler);

            Instance.LastEvent = DateTime.Now;

            return(Instance);
        }