public void Refresh() { { CameraTabs.Clear(); CameraTabs.Add(SimpleIoc.Default.GetInstance<CamerasViewModel>()); foreach (CameraViewModel scvm in SimpleIoc.Default.GetAllCreatedInstances<CameraViewModel>()) { CameraTabs.Add(scvm); } IEditableCollectionView itemsView = (IEditableCollectionView)CollectionViewSource.GetDefaultView(CameraTabs); itemsView.NewItemPlaceholderPosition = NewItemPlaceholderPosition.AtEnd; } { MotionControllerTabs.Clear(); MotionControllerTabs.Add(SimpleIoc.Default.GetInstance<MotionControllersViewModel>()); foreach (MotionControllerViewModel mcvm in SimpleIoc.Default.GetAllCreatedInstances<MotionControllerViewModel>()) { MotionControllerTabs.Add(mcvm); } IEditableCollectionView itemsView = (IEditableCollectionView)CollectionViewSource.GetDefaultView(MotionControllerTabs); itemsView.NewItemPlaceholderPosition = NewItemPlaceholderPosition.AtEnd; } { ServerTabs.Clear(); ServerTabs.Add(SimpleIoc.Default.GetInstance<ServerViewModel>()); IEditableCollectionView itemsView = (IEditableCollectionView)CollectionViewSource.GetDefaultView(ServerTabs); itemsView.NewItemPlaceholderPosition = NewItemPlaceholderPosition.AtEnd; } } // Refresh
/// <summary> /// Funzione che chiude un singolo tab /// </summary> /// <param name="tab">Riferimento al tab da chiudere</param> public void CloseTab(DynamicTabItem tab) { // Caso in cui il tab da chiudere sia l'ultimo attivo: chiusura dell'intera finestra if (ServerTabs.Count == 1) { this.Close(); return; } ServerTabManagement servertab = tab.ServerTab; // In caso di chiusura della main window, la funzione di chiusura di questo tab non andrà più eseguita ClosingEvent -= servertab.ServerTabClose; // Chiusura del tab servertab.ServerTabClose(); // Rimozione di questo tab dalla lista dei tab dei server ServerTabs.Remove(tab); // Rimozione dei questa connessione dalla lista di connessioni attive ActiveConnections.Remove(tab.RemoteHost); if (ServerTabs.Count == 1) { ForegroundAppsBox.IsEnabled = false; } }
//************************************************************************************************************* public void ConnectToServer(Server server) { TabPageEx tab = new TabPageEx(server.Name); tab.Tag = server; ServerTabs._tabCloseBtn = KRBTabControlNS.CustomTab.KRBTabControl.TabCloseImage.Normal; ServerTabs.TabPages.Add(tab); tab.ImageIndex = (int)server.Type; tab.SomeUserObject = server; server.Open(tab); ServerTabs.SelectTab(ServerTabs.TabPages.Count - 1); FocusSelectedTab(); }
/// <summary> /// Funzione che crea un nuovo tab /// </summary> /// <param name="client"></param> /// <param name="stream"></param> /// <param name="address"></param> public void NewTab(TcpClient client, NetworkStream stream, String address) { DynamicTabItem tab = new DynamicTabItem(this); ServerTabManagement s = new ServerTabManagement(tab); tab.ServerTab = s; // Il titolo del nuovo tab ed il suo host remoto corrispondono all'indirizzo del server tab.DynamicHeader = tab.RemoteHost = address; if (address.StartsWith("127.")) { tab.DynamicHeader = "Loopback"; } else { Dns.BeginGetHostEntry(address, new AsyncCallback((IAsyncResult ar) => { try { string host = Dns.EndGetHostEntry(ar).HostName; this.Dispatcher.BeginInvoke(DispatcherPriority.Normal, new Action(() => { tab.DynamicHeader = host; })); } catch (SocketException) { Console.WriteLine("Server {0}: Nessun host trovato", address); } }), null); } s.Connection = client; s.Stream = stream; s.StartServerDataExchange(); tab.Content = s; // Aggiunta del nuovo tab alla lista ServerTabs.Add(tab); // Evidenziazione dell'ultimo tab creato ServerTabControl.SelectedIndex = ServerTabs.Count - 1; if (ServerTabs.Count > 1) { ForegroundAppsBox.IsEnabled = true; } }
//************************************************************************************************************* private void timerCloseTab_Tick(object sender, EventArgs e) { timerCloseTab.Stop(); ServerTabs.CloseTabByButton(tryCloseTab); }