示例#1
0
        private void StartWebViewer()
        {
            var rootPanel = RootVisual as Panel;

            //TODO (CR May 2010): need the lock?
            lock (_startLock)
            {
                if (_context != null)
                {
                    return;
                }

                _context = ApplicationContext.Initialize();
            }

            string query = HtmlPage.Document.DocumentUri.Query;

            Imageviewer viewer;

            if (!string.IsNullOrEmpty(query))
            {
                var request = new StartViewerApplicationRequest
                {
                    AccessionNumber  = new ObservableCollection <string>(),
                    StudyInstanceUid = new ObservableCollection <string>(),
                    PatientId        = new ObservableCollection <string>()
                };

                string[] vals = HttpUtility.UrlDecode(query).Split(new[] { '?', ';', '=', ',', '&' });
                for (int i = 0; i < vals.Length - 1; i++)
                {
                    if (String.IsNullOrEmpty(vals[i]))
                    {
                        continue;
                    }

                    if (vals[i].Equals("study"))
                    {
                        i++;
                        request.StudyInstanceUid.Add(vals[i]);
                    }
                    else if (vals[i].Equals("patientid"))
                    {
                        i++;
                        request.PatientId.Add(vals[i]);
                    }
                    else if (vals[i].Equals("aetitle"))
                    {
                        i++;
                        request.AeTitle = vals[i];
                    }
                    else if (vals[i].Equals("accession"))
                    {
                        i++;
                        request.AccessionNumber.Add(vals[i]);
                    }
                    else if (vals[i].Equals("application"))
                    {
                        i++;
                        request.ApplicationName = vals[i];
                    }
                }

                request.Username        = ApplicationContext.Current.Parameters.Username;
                request.SessionId       = ApplicationContext.Current.Parameters.SessionToken;
                request.IsSessionShared = ApplicationContext.Current.Parameters.IsSessionShared;

                viewer = new Imageviewer(request);
            }
            else
            {
                viewer = new Imageviewer(null);
            }

            viewer.EventMediator.CriticalError            += CriticalError;
            viewer.EventMediator.ServerApplicationStopped += OnServerApplicationStopped;
            viewer.EventMediator.ChannelOpened            += OnChannelOpened;
            viewer.EventMediator.ChannelOpening           += OnChannelOpening;
            viewer.EventMediator.WarningEvent             += OnWarning;

            if (rootPanel != null)
            {
                // Add a Log Panel at the bottom of the screen.  This can be opened by CTRL-ALT-L.
                _logPanel = new LogPanel
                {
                    Visibility = Visibility.Collapsed,
                    Height     = 200
                };
                var theGrid = new Grid();
                theGrid.RowDefinitions.Add(new RowDefinition());
                theGrid.RowDefinitions.Add(new RowDefinition {
                    Height = new GridLength(0, GridUnitType.Auto)
                });
                _logPanel.SetValue(Grid.RowProperty, 1);
                viewer.SetValue(Grid.RowProperty, 0);
                theGrid.Children.Add(viewer);
                theGrid.Children.Add(_logPanel);
                rootPanel.Children.Add(theGrid);
                rootPanel.KeyUp += OnKeyUp;
                rootPanel.UpdateLayout();
            }
        }