source: trunk/CrypPlugins/WorkspaceManager/View/Container/ConnectorView.xaml.cs @ 1717

Last change on this file since 1717 was 1717, checked in by matkovic, 12 years ago

-added loading from Model
-added several images
-added Connector data presentation
-several style changes

File size: 4.6 KB
Line 
1using System;
2using System.Collections.Generic;
3using System.Linq;
4using System.Text;
5using System.Windows;
6using System.Windows.Controls;
7using System.Windows.Data;
8using System.Windows.Documents;
9using System.Windows.Input;
10using System.Windows.Media;
11using System.Windows.Media.Imaging;
12using System.Windows.Navigation;
13using System.Windows.Shapes;
14using WorkspaceManager.View.Interface;
15using System.ComponentModel;
16using WorkspaceManager.Model;
17using System.Windows.Controls.Primitives;
18
19namespace WorkspaceManager.View.Container
20{
21    /// <summary>
22    /// Interaction logic for ConnectorView.xaml
23    /// </summary>
24    public partial class ConnectorView : UserControl, IConnectable, IUpdateableView
25    {
26        public static readonly DependencyProperty X = DependencyProperty.Register("PositionOnWorkSpaceX", typeof(double), typeof(ConnectorView), new FrameworkPropertyMetadata(0.0, FrameworkPropertyMetadataOptions.AffectsRender | FrameworkPropertyMetadataOptions.AffectsMeasure));
27        public static readonly DependencyProperty Y = DependencyProperty.Register("PositionOnWorkSpaceY", typeof(double), typeof(ConnectorView), new FrameworkPropertyMetadata(0.0, FrameworkPropertyMetadataOptions.AffectsRender | FrameworkPropertyMetadataOptions.AffectsMeasure));
28
29        public event EventHandler<ConnectorViewEventArgs> OnConnectorMouseLeftButtonDown;
30        public ConnectorModel model;
31        public ConnectorModel Model
32        {
33            get { return model; }
34            private set { model = value; }
35        }
36
37        [TypeConverter(typeof(LengthConverter))]
38        public double PositionOnWorkSpaceX
39        {
40            get { return (double)base.GetValue(X); }
41            set
42            {
43                ResetPopUp();
44                base.SetValue(X, value);
45            }
46        }
47
48        [TypeConverter(typeof(LengthConverter))]
49        public double PositionOnWorkSpaceY
50        {
51            get { return (double)base.GetValue(Y); }
52            set
53            {
54                ResetPopUp();
55                base.SetValue(Y, value);
56            }
57        }
58
59        public ConnectorView()
60        {
61            this.MouseLeftButtonDown += new MouseButtonEventHandler(ConnectorView_MouseLeftButtonDown);
62            InitializeComponent();
63        }
64
65        public ConnectorView(ConnectorModel Model)
66        {
67            setBaseControl(Model);
68            InitializeComponent();
69 
70            Color color = ColorHelper.GetColor(Model.ConnectorType);
71            this.Ellipse.Fill = new SolidColorBrush(Color.FromArgb(color.A, color.R, color.G, color.B));
72            this.Ellipse.ToolTip = Model.ToolTip;
73        }
74
75        private void setBaseControl(ConnectorModel Model)
76        {
77            this.MouseLeftButtonDown += new MouseButtonEventHandler(ConnectorView_MouseLeftButtonDown);
78            this.MouseRightButtonDown += new MouseButtonEventHandler(ConnectorView_MouseRightButtonDown);
79            this.MouseRightButtonUp += new MouseButtonEventHandler(ConnectorView_MouseRightButtonUp);
80            this.MouseLeave += new MouseEventHandler(ConnectorView_MouseLeave);
81            this.Model = Model;
82            this.DataContext = Model;
83            this.Model.UpdateableView = this;
84        }
85
86        void ConnectorView_MouseLeave(object sender, MouseEventArgs e)
87        {
88            BubblePopup.StaysOpen = false;
89        }
90
91        void ConnectorView_MouseRightButtonUp(object sender, MouseButtonEventArgs e)
92        {
93            BubblePopup.StaysOpen = false;
94        }
95
96        void ConnectorView_MouseRightButtonDown(object sender, MouseButtonEventArgs e)
97        {
98            this.BubblePopup.IsOpen = true;
99            BubblePopup.StaysOpen = true;
100        }
101
102        void ConnectorView_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
103        {
104            if (this.OnConnectorMouseLeftButtonDown != null)
105            {
106                this.OnConnectorMouseLeftButtonDown.Invoke(this, new ConnectorViewEventArgs { connector = this });
107            }
108        }
109
110        public void ResetPopUp()
111        {
112            Random random = new Random();
113            BubblePopup.PlacementRectangle = new Rect(new Point(random.NextDouble() / 1000, 0), new Size(75, 25));
114        }
115
116        public bool CanConnect
117        {
118            get { throw new NotImplementedException(); }
119        }
120
121        public void update()
122        {
123            if (model.HasData)
124            {
125                ToolTip = model.Data;
126            }
127
128        }
129
130    }
131
132    public class ConnectorViewEventArgs : EventArgs
133    {
134        public ConnectorView connector;
135    }
136}
Note: See TracBrowser for help on using the repository browser.