/// <summary> /// Function determines behaviour after a connector in the tree was clicked with shift pressed. It allows to select items from last selected item to currently selected one. /// Allows selection between groups. /// </summary> /// <param name="connector">Clicked connector.</param> private void OnShiftProjectClicked(ConnectorViewModel connector) { if (this.selectedConnectors.Count == 0) { this.OnCtrlProjectClicked(connector); return; } ConnectorViewModel source = connector; ConnectorViewModel target = this.selectedConnectors.Last(); Collection <ConnectorViewModel> ungroupedConnectors = new Collection <ConnectorViewModel>(); foreach (var group in this.model.ConnectorGroups) { foreach (var connectorInGroup in group.ConnectorViewModels) { ungroupedConnectors.Add(connectorInGroup); } } if (source.Identifier == target.Identifier) { this.SelectConnector(connector); return; } bool select = false; foreach (var item in ungroupedConnectors) { if (item.Identifier == source.Identifier || item.Identifier == target.Identifier) { this.SelectConnector(item); select = !select; } else if (select) { this.SelectConnector(item); } } }
/// <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); }
public StatusViewModel(ConnectorViewModel connector) { this.Parent = connector; }
/// <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); } }