示例#1
0
 private static void ManageActivityMonitorConnection()
 {
     if (KeyImageInformation.Count == 0 && _activityMonitor != null)
     {
         try
         {
             _activityMonitor.IsConnectedChanged -= DummyEventHandler;
             _activityMonitor.Dispose();
         }
         catch (Exception e)
         {
             Platform.Log(LogLevel.Warn, e, "Failed to unsubscribe from activity monitor events.");
         }
         finally
         {
             _activityMonitor = null;
         }
     }
     else if (KeyImageInformation.Count > 0 && _activityMonitor == null && WorkItemActivityMonitor.IsSupported)
     {
         try
         {
             _activityMonitor = WorkItemActivityMonitor.Create();
             //we subscribe to something to keep the connection open.
             _activityMonitor.IsConnectedChanged += DummyEventHandler;
         }
         catch (Exception e)
         {
             _activityMonitor = null;
             Platform.Log(LogLevel.Warn, e, "Failed to subscribe to activity monitor events.");
         }
     }
 }
        public void Initialize()
        {
            this.ActivityMonitor = WorkItemActivityMonitor.Create(true);
            this.ActivityMonitor.IsConnectedChanged += ActivityMonitorIsConnectedChanged;

            _connectionState = _connectionState.Update();
        }
示例#3
0
        public override void Initialize()
        {
            base.Initialize();
            KeyImageClipboard.OnViewerOpened(base.Context.Viewer);

            UpdateEnabled();

            if (WorkItemActivityMonitor.IsSupported)
            {
                _workItemActivityMonitor = WorkItemActivityMonitor.Create();
                _workItemActivityMonitor.IsConnectedChanged += OnIsConnectedChanged;
            }

            if (!KeyImageClipboard.HasViewPlugin)
            {
                foreach (var a in Actions)
                {
                    // TODO (CR Phoenix5 - High): use the ID, which doesn't change; this will change with language.
                    if (a.Path.LocalizedPath == "global-toolbars/ToolbarStandard/Show Key Images")
                    {
                        var buttonAction = a as ButtonAction;
                        if (buttonAction != null)
                        {
                            buttonAction.Visible = false;
                        }
                    }
                }
            }
        }
 public MoveScpExtension()
     : base(GetSupportedSops())
 {
     _sendOperations = new List <SendOperationInfo>();
     // TODO (CR Jun 2012 - Med): This item is disposable and should ideally be cleaned up.
     _activityMonitor = WorkItemActivityMonitor.Create(false);
     _activityMonitor.WorkItemsChanged += UpdateProgress;
 }
示例#5
0
        public override void Initialize()
        {
            base.Initialize();

            _workItemActivityMonitor = WorkItemActivityMonitor.Create();
            _workItemActivityMonitor.IsConnectedChanged += OnConnectionChanged;

            this.Enabled = _workItemActivityMonitor.IsConnected;
        }
        public override void Initialize()
        {
            base.Initialize();

            this.Context.SelectionChanged += OnSelectedStudyChanged;

            _workItemActivityMonitor = WorkItemActivityMonitor.Create();
            _workItemActivityMonitor.IsConnectedChanged += OnIsConnectedChanged;
        }
示例#7
0
        public override void Initialize()
        {
            base.Initialize();
            KeyImageClipboard.OnViewerOpened(base.Context.Viewer);

            UpdateEnabled();

            _workItemActivityMonitor = WorkItemActivityMonitor.Create();
            _workItemActivityMonitor.IsConnectedChanged += OnIsConnectedChanged;
        }
示例#8
0
        public void TestRealActivityMonitorSubscriptionsWithProxy()
        {
            _expectingAsyncEvents = true;
            //Make sure it's initially open.
            TestServiceProvider.ServiceInstance.Open();

            var monitor = WorkItemActivityMonitor.Create(false);

            TestActivityMonitorSubscriptions(monitor, TestServiceProvider.ServiceInstance);
            monitor.Dispose();
            Assert.AreEqual(0, WorkItemActivityMonitor._proxyCount);
        }
        /// <summary>
        /// Called by the framework to initialize this tool.
        /// </summary>
        public override void Initialize()
        {
            base.Initialize();

            ImageViewer.EventBroker.DisplaySetChanged += OnDisplaySetChanged;
            ImageViewer.EventBroker.LayoutCompleted   += OnLayoutComplete;

            if (WorkItemActivityMonitor.IsSupported)
            {
                _workItemActivityMonitor = WorkItemActivityMonitor.Create();
                _workItemActivityMonitor.WorkItemsChanged += OnWorkItemsChanged;
            }
        }
示例#10
0
        /// <summary>
        /// Constructor.
        /// </summary>
        /// <param name="sourceAE">The AE title of the remote application sending the SOP Instances.</param>
        /// <param name="configuration">Storage configuration. </param>
        /// <param name="hostname">The IP Address the remote app is connecting with.</param>
        /// <param name="auditSource">The source of the request for auditing purposes </param>
        public DicomReceiveImportContext(string sourceAE, string hostname, StorageConfiguration configuration, EventSource auditSource) : base(sourceAE, configuration, auditSource)
        {
            // TODO (CR Jun 2012 - Med): This object is disposable and should be cleaned up.

            _monitor = WorkItemActivityMonitor.Create(false);
            _monitor.WorkItemsChanged += WorkItemsChanged;

            var serverList = ServerDirectory.GetRemoteServersByAETitle(sourceAE);
            if (serverList.Count == 1)
                _dicomServerNode = CollectionUtils.FirstElement(serverList);

            _hostname = hostname;
        }
        /// <summary>
        /// Constructor.
        /// </summary>
        /// <param name="sourceAE">The AE title of the remote application sending the SOP Instances.</param>
        /// <param name="configuration">Storage configuration. </param>
        /// <param name="hostname">The IP Address the remote app is connecting with.</param>
        /// <param name="auditSource">The source of the request for auditing purposes </param>
        public DicomReceiveImportContext(string sourceAE, string hostname, StorageConfiguration configuration, EventSource auditSource) : base(sourceAE, configuration, auditSource)
        {
            _monitor = WorkItemActivityMonitor.Create(false);
            _monitor.WorkItemsChanged += WorkItemsChanged;

            var serverList = ServerDirectory.GetRemoteServersByAETitle(sourceAE);

            if (serverList.Count == 1)
            {
                _dicomServerNode = CollectionUtils.FirstElement(serverList);
            }

            _hostname = hostname;
        }
示例#12
0
        public override void Initialize()
        {
            base.Initialize();

            _workItemActivityMonitor = WorkItemActivityMonitor.Create();
            _workItemActivityMonitor.IsConnectedChanged += IsConnectedChanged;
            _workItemActivityMonitor.WorkItemsChanged   += WorkItemsChanged;
            Enabled = _workItemActivityMonitor.IsConnected;

            _asyncOperation = AsyncOperationManager.CreateOperation(null);

            if (XnatSettings.Default.DownloadCheckInterval > 0)
            {
                StartDownloadCheckingThread();
            }
        }
示例#13
0
        public override void Start()
        {
            _delaySetFileStoreDirectory          = new DelayedEventPublisher(RealSetFileStoreDirectory);
            _activityMonitor                     = WorkItemActivityMonitor.Create();
            _activityMonitor.IsConnectedChanged += ActivityMonitorOnIsConnectedChanged;

            _configuration      = StudyStore.GetConfiguration();
            _fileStoreDirectory = _currentFileStoreDirectory = _configuration.FileStoreDirectory;

            UpdateFileStoreDriveName();
            MaximumUsedSpaceChanged();

            _currentDeletionRule = _configuration.DefaultDeletionRule.Clone();

            base.Start();
        }
        private void Connect()
        {
            if (_workItemActivityMonitor != null)
            {
                return;
            }

            Platform.Log(LogLevel.Debug, "Attempting to connect to ActivityMonitorService.");

            _workItemActivityMonitor = WorkItemActivityMonitor.Create(false);
            _workItemActivityMonitor.WorkItemsChanged   += OnWorkItemsChanged;
            _workItemActivityMonitor.StudiesCleared     += OnStudiesCleared;
            _workItemActivityMonitor.IsConnectedChanged += OnIsConnectedChanged;

            _updatedIdleStudies = new HashSet <long>();

            FireIsConnectedChanged();
        }
示例#15
0
        private void StartMonitoringStudies()
        {
            if (_activityMonitor != null)
            {
                return;
            }

            _synchronizationContext = SynchronizationContext.Current;
            //Don't use the sync context when monitoring work item activity, since we'll be processing
            //the changed studies asynchronously anyway.
            _activityMonitor = WorkItemActivityMonitor.Create(false);
            _activityMonitor.IsConnectedChanged += OnIsConnectedChangedAsync;
            _activityMonitor.WorkItemsChanged   += OnWorkItemsChangedAsync;
            _activityMonitor.StudiesCleared     += OnStudiesClearedAsync;

            UpdateReindexing();

            _processChangedStudiesTimer = new System.Threading.Timer(ProcessChangedStudiesAsync, null, 100, 100);
        }
示例#16
0
        public override void Initialize()
        {
            base.Initialize();
            KeyImageClipboard.OnViewerOpened(Context.Viewer);

            UpdateEnabled();

            if (WorkItemActivityMonitor.IsSupported)
            {
                _workItemActivityMonitor = WorkItemActivityMonitor.Create();
                _workItemActivityMonitor.IsConnectedChanged += OnIsConnectedChanged;
            }

            if (!KeyImageClipboardComponent.HasViewPlugin)
            {
                foreach (var buttonAction in Actions.Where(a => a.ActionID == "show").OfType <ClickAction>())
                {
                    buttonAction.Visible = false;
                }
            }
        }
示例#17
0
        public void RunApplication(string[] args)
        {
            Console.WriteLine("Starting WorkItemActivityMonitor test application ...");

            _workItemActivityMonitor = WorkItemActivityMonitor.Create(false);
            _workItemActivityMonitor.IsConnectedChanged += OnIsConnectedChanged;
            _workItemActivityMonitor.WorkItemsChanged   += OnWorkItemsChanged;

            Console.WriteLine("Press <Enter> to terminate.");
            Console.WriteLine();
            Console.WriteLine();

            string message = String.Format("IsConnected={0}", _workItemActivityMonitor.IsConnected);

            Console.WriteLine(message);

            Console.ReadLine();

            _workItemActivityMonitor.IsConnectedChanged -= OnIsConnectedChanged;
            _workItemActivityMonitor.WorkItemsChanged   -= OnWorkItemsChanged;
            _workItemActivityMonitor.Dispose();
        }
        public override void Start()
        {
            base.Start();

            _workItems.Columns.Add(new TableColumn <WorkItem, string>(SR.ColumnPatient, w => w.PatientInfo)
            {
                WidthFactor = .7f
            });
            _workItems.Columns.Add(new TableColumn <WorkItem, string>(SR.ColumnStudy, w => w.StudyInfo)
            {
                WidthFactor = .9f
            });
            _workItems.Columns.Add(new TableColumn <WorkItem, string>(SR.ColumnActivityDescription, w => w.ActivityDescription)
            {
                WidthFactor = .7f
            });
            _workItems.Columns.Add(new TableColumn <WorkItem, string>(SR.ColumnStatus, w => w.Status.GetDescription())
            {
                WidthFactor         = .3f,
                TooltipTextProvider = w => string.IsNullOrEmpty(w.ProgressStatusDescription)
                                                                                                                                                ? string.Empty
                                                                                                                                                : w.ProgressStatusDescription,
                Comparison = WorkItem.StatusComparison
            });
            _workItems.Columns.Add(new TableColumn <WorkItem, string>(SR.ColumnStatusDescription, w => w.ProgressStatus)
            {
                WidthFactor = 1.5f
            });
            var requestedTimeColumn = new DateTimeTableColumn <WorkItem>(SR.ColumnRequestedTime, w => w.RequestedTime)
            {
                WidthFactor = .5f
            };

            _workItems.Columns.Add(requestedTimeColumn);
            _workItems.Columns.Add(new DateTimeTableColumn <WorkItem>(SR.ColumnScheduledTime, w => w.ScheduledTime)
            {
                WidthFactor = .5f
            });
            _workItems.Columns.Add(new TableColumn <WorkItem, string>(SR.ColumnPriority, w => w.Priority.GetDescription())
            {
                WidthFactor = .25f,
                Comparison  = WorkItem.PriorityComparison
            });
            _workItems.Columns.Add(new TableColumn <WorkItem, IconSet>(SR.ColumnProgress, w => w.ProgressIcon)
            {
                WidthFactor = .4f,
                Comparison  = WorkItem.ProgressComparison
            });


            // establish initial sort order
            _workItems.Sort(new TableSortParams(requestedTimeColumn, false));

            this.ActivityMonitor = WorkItemActivityMonitor.Create(true);
            _connectionState     = _connectionState.Update();

            this.ActivityMonitor.IsConnectedChanged += ActivityMonitorIsConnectedChanged;

            _localServerWatcher.DicomServerConfigurationChanged  += OnDicomServerConfigurationChanged;
            _localServerWatcher.StudyStorageConfigurationChanged += OnStorageConfigurationChanged;
            _localServerWatcher.DiskSpaceUsageChanged            += OnDiskspaceChanged;
        }