Esempio n. 1
0
        private void showView(IReportViewFactory factory)
        {
            if (InvokeRequired)
            {
                Invoke(new ShowViewDelegate(showView), factory);
                return;
            }

            var view = viewFactories[factory];

            if (view == null)
            {
                viewFactories[factory] = view = factory.Create();

                view.WindowState = FormWindowState.Maximized;
                view.MdiParent   = this;
                view.Text        = factory.ViewName;

                if (view is ITreeItemSelectionHandler)
                {
                    SelectionHandlers.Add((ITreeItemSelectionHandler)view);
                }

                var asyncProcess = new TinyAsyncUserProcess
                {
                    Action = tracker => view.attach(serviceContainer, tracker)
                };
                asyncProcess.Execute(this);

                view.FormClosed += delegate
                {
                    if (view is ITreeItemSelectionHandler)
                    {
                        SelectionHandlers.Remove((ITreeItemSelectionHandler)view);
                    }

                    view.detach(serviceContainer, new DummyProgressTracker());
                    viewFactories[factory] = null;
                };
            }

            view.Show();
            view.Activate();
            view.Focus();
        }
Esempio n. 2
0
        private void showView(IReportViewFactory factory)
        {
            if (InvokeRequired)
            {
                Invoke(new ShowViewDelegate(showView), factory);
                return;
            }

            var view = viewFactories[factory];
            if (view == null)
            {
                viewFactories[factory] = view = factory.Create();

                view.WindowState = FormWindowState.Maximized;
                view.MdiParent = this;
                view.Text = factory.ViewName;

                if (view is ITreeItemSelectionHandler)
                {
                    SelectionHandlers.Add((ITreeItemSelectionHandler)view);
                }

                var asyncProcess = new TinyAsyncUserProcess
                {
                    Action = tracker => view.attach(serviceContainer, tracker)
                };
                asyncProcess.Execute(this);

                view.FormClosed += delegate
                {
                    if (view is ITreeItemSelectionHandler)
                    {
                        SelectionHandlers.Remove((ITreeItemSelectionHandler)view);
                    }

                    view.detach(serviceContainer, new DummyProgressTracker());
                    viewFactories[factory] = null;
                };
            }

            view.Show();
            view.Activate();
            view.Focus();
        }