예제 #1
0
        public void DeviceOnline(Device device, IDevicePanel devicePanel)
        {
            if (OfflineDevices.Contains(device))
            {
                _Dispatcher.Invoke(() => OfflineDevices.Remove(device));
            }

            if (!OnlineDevices.Contains(device))
            {
                _Dispatcher.Invoke(() => OnlineDevices.Add(device));
            }

            SortDevices(OfflineDevices);
            SortDevices(OnlineDevices);

            _devicePanelsRepository.TryRegisterDevicePanel(device, devicePanel);
        }
예제 #2
0
        public void SelectionsStopMonitor(ListBox listBox)
        {
            IEnumerable <Device> devices = listBox.SelectedItems.Cast <Device>() !;

            foreach (Device device in devices)
            {
                IDevicePanel?devicePanel = _devicePanelsRepository.FindDevicePanel(device);
                if (devicePanel is null || (!devicePanel.CanStopMonitor()))
                {
                    MessageBox.Show($"{device.Name} can't stop monitor now.", "Error:");
                    return;
                }
            }
            foreach (Device device in devices)
            {
                IDevicePanel devicePanel = _devicePanelsRepository.FindDevicePanel(device) !;
                devicePanel.StopMonitor();
            }
            Window.GetWindow(listBox).Close();
        }
예제 #3
0
 public void SelectionsRun(ListBox listBox)
 {
     try
     {
         IEnumerable <Device> devices = listBox.SelectedItems.Cast <Device>() !;
         //IEnumerable<IDevicePanel?> devicePanels = devices.Select(_devicePanelsRepository.FindDevicePanel);
         foreach (Device device in devices)
         {
             IDevicePanel?devicePanel = _devicePanelsRepository.FindDevicePanel(device);
             if (devicePanel is null || (!devicePanel.CanRunProgram()))
             {
                 MessageBox.Show($"{device.Name} can't run program now.", "Error:");
                 return;
             }
         }
         foreach (Device device in devices)
         {
             IDevicePanel devicePanel = _devicePanelsRepository.FindDevicePanel(device) !;
             devicePanel.StartRunProgram();
         }
     }catch (Exception e) { MessageBox.Show(e.ToString()); }
     finally { Window.GetWindow(listBox).Close(); }
 }
예제 #4
0
        public void SelectionsConnect(ListBox listBox)
        {
            try
            {
                IEnumerable <Device> devices = listBox.SelectedItems.Cast <Device>() !.ToList() !;
                TabItem?   lastTabItem       = null;
                TabControl tabControl        = (Application.Current.MainWindow as MainWindow) !.TabControl_DevicePanels;
                foreach (Device device in devices)
                {
                    _pluginLoadService.Load(device);
                    IDevicePanel devicePanel = _devicePanelInstanceService.CreateDevicePanelInstance(device);

                    TabItem tabItem = new TabItem()
                    {
                        Header  = device.Name,
                        Content = devicePanel.CreateDevicePanelUI(),
                        VerticalContentAlignment = VerticalAlignment.Top
                    };


                    tabControl.Items.Add(tabItem);
                    lastTabItem = tabItem;
                    _devicesRepository.DeviceOnline(device, devicePanel);
                }
                if (lastTabItem != null)
                {
                    tabControl.SelectedItem = lastTabItem;
                }
            }catch (Exception err)
            {
                MessageBox.Show(err.ToString(), "Can't connect device error");
            }
            finally
            {
                Window.GetWindow(listBox).Close();
            }
        }