/// <summary> /// Defines behoaviour when a group is clicked. If not all connectors in the group are selected, then it selects them. /// If there are all connectors in the group selected, then the funcion deselects them. /// </summary> /// <param name="group">Group to check and de/select items in.</param> private void OnGroupClicked(ConnectorGroupViewModel group) { bool allConnectorsInGroupSelected = true; foreach (var connector in group.ConnectorViewModels) { if (!this.IsConnectorSelected(connector)) { allConnectorsInGroupSelected = false; } } if (allConnectorsInGroupSelected) { foreach (var connector in group.ConnectorViewModels) { this.DeselectConnector(connector); } } else { foreach (var connector in group.ConnectorViewModels) { this.SelectConnector(connector); } } }
/// <summary> /// Defines behaviour when an item in tree is clicked with Ctrl. /// </summary> /// <param name="sender">sender item.</param> /// <param name="e">event args.</param> private void ControlLeftMouseDownHandler(object sender, MouseButtonEventArgs e) { TreeViewItem item = (TreeViewItem)sender; if (item == null) { return; } var connector = new ConnectorViewModel(); if (item.Header is ConnectorViewModel) { connector = (ConnectorViewModel)item.Header; this.OnCtrlProjectClicked(connector); } else { var group = new ConnectorGroupViewModel(); if (item.Header is ConnectorGroupViewModel) { group = (ConnectorGroupViewModel)item.Header; this.OnGroupClicked(group); } } this.model.UpdateSelectedConnectors(this.selectedConnectors); }
/// <summary> /// Based on group and connector function generates container from item and calls style set for the generated container. /// </summary> /// <param name="connectorGroupViewModel">Group of the connector.</param> /// <param name="connectorViewModel">Connector to set its style.</param> private void SetConnectorInGroupStyle(ConnectorGroupViewModel connectorGroupViewModel, ConnectorViewModel connectorViewModel) { TreeViewItem groupTreeViewItem = (TreeViewItem)this.mainTreeView.ItemContainerGenerator.ContainerFromItem(connectorGroupViewModel); var treeViewItemInGroup = (TreeViewItem)groupTreeViewItem?.ItemContainerGenerator.ContainerFromItem(connectorViewModel) ?? (TreeViewItem)this.mainTreeView.ItemContainerGenerator.ContainerFromItem(connectorViewModel); if (treeViewItemInGroup != null) { this.SetStyle(ref treeViewItemInGroup); } }
/// <summary> /// Defines behaviour when LMB is released. /// </summary> /// <param name="sender">sender item.</param> /// <param name="e">event args.</param> private void ControlLeftMouseUpHandler(object sender, MouseButtonEventArgs e) { TreeViewItem item = (TreeViewItem)sender; var connector = new ConnectorViewModel(); if (item == null) { return; } if (item.Header is ConnectorViewModel) { connector = (ConnectorViewModel)item.Header; this.DeselectAllConnectors(); this.connectorItemEventFired = true; this.OnCtrlProjectClicked(connector); } else { if (this.connectorItemEventFired) { this.connectorItemEventFired = false; } else { var group = new ConnectorGroupViewModel(); if (item.Header is ConnectorGroupViewModel) { group = (ConnectorGroupViewModel)item.Header; this.DeselectAllConnectors(); this.OnGroupClicked(group); } } } this.model.UpdateSelectedConnectors(this.selectedConnectors); }