public CryptoLineView(ConnectionModel model, ConnectorVisual source, ConnectorVisual target)
        {
            // TODO: Complete member initialization
            //Add connection to statistics:
            ComponentConnectionStatistics.IncrementConnectionUsage(source.Model.PluginModel.PluginType,
                                                                   source.Model.GetName(),
                                                                   target.Model.PluginModel.PluginType,
                                                                   target.Model.GetName());

            Editor = (EditorVisual)model.WorkspaceModel.MyEditor.Presentation;
            InitializeComponent();
            Canvas.SetZIndex(this, -1);
            this.Model  = model;
            this.Source = source;
            this.Target = target;

            Line = new InternalCryptoLineView(model, source, target, Editor.VisualCollection, Editor.VisualsHelper);
            Line.SetBinding(InternalCryptoLineView.StartPointProperty, WorkspaceManager.View.Base.Util.CreateConnectorBinding(source, this));
            Line.SetBinding(InternalCryptoLineView.EndPointProperty, WorkspaceManager.View.Base.Util.CreateConnectorBinding(target, this));

            Editor.ItemsSelected += new EventHandler <SelectedItemsEventArgs>(itemsSelected);
            Line.ComputationDone += new EventHandler <ComputationDoneEventArgs>(LineComputationDone);
            Source.Update        += new EventHandler(Update);
            Target.Update        += new EventHandler(Update);

            if (model.PointList != null)
            {
                assembleGeo();
            }
        }
        private static void OnIsDraggedValueChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            InternalCryptoLineView l = (InternalCryptoLineView)d;

            l.HasComputed    = false;
            l.IsEditingPoint = false;
            l.loaded         = false;
            if (l.IsDragged == false)
            {
                l.InvalidateVisual();
            }
        }
        private static void OnHasComputedChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            InternalCryptoLineView l = (InternalCryptoLineView)d;

            if (l.model == null)
            {
                return;
            }

            if (l.HasComputed == true)
            {
                l.Save();
            }
        }
        private static void OnIsPositionChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            InternalCryptoLineView l = (InternalCryptoLineView)d;

            l.HasComputed = false;
            if (l.model != null && l.model.IsCopy)
            {
                l.model.IsCopy = false;
                l.loaded       = false;
            }

            l.InvalidateVisual();
            if (l.helper != null)
            {
                l.helper.DrawDecoration();
            }
        }
 public CryptoLineView(ObservableCollection <UIElement> visuals)
 {
     InitializeComponent();
     Canvas.SetZIndex(this, -1);
     Line = new InternalCryptoLineView(visuals);
 }