示例#1
0
        /// <summary>
        /// Handles all drag events from all thumbs.
        /// The actual transformation is set in other code
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void BigThumb_DragCompleted(object sender, DragCompletedEventArgs e)
        {
            if (!e.Canceled)
            {
                var lastTranslation = (TranslateTransform)LastOperation;
                lastTranslation.X = DragXTravel;
                lastTranslation.Y = DragYTravel;

                InvalidateVisual();

                //move the molecule
                EditViewModel.DoTransform(LastOperation, AdornedMolecules);

                RaiseDRCompleted(sender, e);

                CurrentEditor.SuppressRedraw = false;

                foreach (Molecule adornedMolecule in AdornedMolecules)
                {
                    adornedMolecule.UpdateVisual();
                }
            }
            else
            {
                EditViewModel.RemoveFromSelection(AdornedMolecules.ConvertAll(am => (ChemistryBase)am));
            }
            Dragging = false;
        }
示例#2
0
        private void HandleResizeCompleted(object sender, DragCompletedEventArgs dragCompletedEventArgs)
        {
            Resizing = false;

            if (LastOperation != null)
            {
                EditViewModel.DoTransform(LastOperation, AdornedMolecules);

                SetBoundingBox();
                ResizeCompleted?.Invoke(this, dragCompletedEventArgs);
                SetCentroid();
                InvalidateVisual();
            }
            (sender as Thumb)?.ReleaseMouseCapture();
        }
示例#3
0
        private void CurrentEditor_PreviewMouseLeftButtonUp(object sender, MouseButtonEventArgs e)
        {
            dynamic currentObject = CurrentObject(e);

            if (IsDragging)
            {
                if (_atomList != null && _atomList.Any())
                {
                    EditViewModel.DoTransform(_shift, _atomList);
                    _atomList[0].Parent.UpdateVisual();
                }

                IsDragging = false;
                if (_ghostAdorner != null)
                {
                    RemoveAdorner(_ghostAdorner);
                    _ghostAdorner = null;
                }

                _atomList = null;
            }
            else
            {
                //did we go up on the target we went down on?
                if ((currentObject != null) & (currentObject == _initialTarget))
                {
                    //select it
                    DoSelectionClick(e);
                }
                else if (_initialTarget != null && EditViewModel.SelectedItems.Contains(_initialTarget))
                {
                    DoSelectionClick(e);
                }

                if (_lassoAdorner != null)
                {
                    _lassoHits = new List <object>();
                    GatherSelection(_lassoAdorner.Outline);
                    _lassoHits = _lassoHits.Distinct().ToList();
                    EditViewModel.AddToSelection(_lassoHits);
                }
                if (EditViewModel.SelectedItems.Any())
                {
                    CurrentStatus = ActiveSelText;
                }

                if (_lassoAdorner != null)
                {
                    DisposeLasso();
                }
            }

            _initialTarget = null;
            _mouseTrack    = null;

            CurrentEditor.ReleaseMouseCapture();

            CurrentEditor.Focus();
            var al = AdornerLayer.GetAdornerLayer(CurrentEditor);

            al.Update();
            CurrentStatus = DefaultText;
        }