コード例 #1
0
        /// <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);
                }
            }
        }
コード例 #2
0
        /// <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);
        }
コード例 #3
0
ファイル: StatusViewModel.cs プロジェクト: sven-n/whatson
 public StatusViewModel(ConnectorViewModel connector)
 {
     this.Parent = connector;
 }
コード例 #4
0
        /// <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);
            }
        }