コード例 #1
0
        /*private readonly LegendListener _legendListener;
         * private readonly MainPluginListener _mainPluginListener;
         *
         *
         * private readonly MenuListener _menuListener;
         */
        //
        //

        public MainPresenter(
            IAppContext context,
            IMainView view,
            IConfigService configService,
            MapLegendPresenter mapLegendPresenter,
            OverviewPresenter overviewPresenter,
            IProjectService projectService)
            : base(view)
        {
            Logger.Current.Trace("Start MainPresenter");
            if (view == null)
            {
                throw new ArgumentNullException("view");
            }
            if (projectService == null)
            {
                throw new ArgumentNullException("projectService");
            }
            if (configService == null)
            {
                throw new ArgumentNullException("configService");
            }


            _context        = context;
            _configService  = configService;
            _projectService = projectService;

            //  view.Map.Lock();
            try
            {
                var appContext = context as AppContext;
                if (appContext == null)
                {
                    throw new InvalidCastException("Invalid type of IAppContext instance");
                }

                appContext.Init(view, projectService, configService, mapLegendPresenter, overviewPresenter);
                //projectService, configService);

                //最后去整理,当前的工作环境需要的配置参数有哪些

                /* view.Map.Initialize();
                 * view.Map.ApplyConfig(configService);*/

                view.ViewClosing  += OnViewClosing;
                view.ViewUpdating += OnViewUpdating;
                view.BeforeShow   += OnBeforeShow;

                var container = context.Container;
                _statusBarListener = container.GetSingleton <StatusBarListener>();
                _menuGenerator     = container.GetSingleton <MenuGenerator>();
                _menuUpdater       = new MenuUpdater(_context, PluginIdentity.Default, _menuGenerator.GetMenuKeys());
                _mapListener       = container.GetSingleton <MapListener>();

                /*_menuListener = container.GetSingleton<MenuListener>();
                 *
                 * _mainPluginListener = container.GetSingleton<MainPluginListener>();
                 * _legendListener = container.GetSingleton<LegendListener>();
                 *
                 */

                SplashView.Instance.ShowStatus("开始引导插件...");
                appContext.InitPlugins(configService); // must be called after docking is initialized

                _context.RibbonMenu.ReorderTabs();

                // this will display progress updates and debug window
                // file based-logger is already working
                Logger.Current.Init(appContext);
            }
            finally
            {
                /*view.Map.Unlock();
                 * context.Legend.Unlock();*/
            }

            View.AsForm.Shown += ViewShown;
            Logger.Current.Trace("End MainPresenter");
        }