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

Last change on this file since 2067 was 2067, checked in by matkovic, 11 years ago

-Major Style changes
-Fit to Screen added

File size: 6.9 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    public enum ConnectorOrientation
22    {
23        North,
24        South,
25        West,
26        East,
27        Unset
28    };
29
30    /// <summary>
31    /// Interaction logic for ConnectorView.xaml
32    /// </summary>
33    public partial class ConnectorView : UserControl, IConnectable, IUpdateableView
34    {
35        public static readonly DependencyProperty X = DependencyProperty.Register("PositionOnWorkSpaceX", typeof(double), typeof(ConnectorView), new FrameworkPropertyMetadata(0.0, FrameworkPropertyMetadataOptions.AffectsRender | FrameworkPropertyMetadataOptions.AffectsMeasure));
36        public static readonly DependencyProperty Y = DependencyProperty.Register("PositionOnWorkSpaceY", typeof(double), typeof(ConnectorView), new FrameworkPropertyMetadata(0.0, FrameworkPropertyMetadataOptions.AffectsRender | FrameworkPropertyMetadataOptions.AffectsMeasure));
37
38        public event EventHandler<ConnectorViewEventArgs> OnConnectorMouseLeftButtonDown;
39        public ConnectorModel model;
40        public ConnectorModel Model
41        {
42            get { return model; }
43            private set { model = value; }
44        }
45
46        [TypeConverter(typeof(LengthConverter))]
47        public double PositionOnWorkSpaceX
48        {
49            get { return (double)base.GetValue(X); }
50            set
51            {
52                base.SetValue(X, value);
53            }
54        }
55
56        [TypeConverter(typeof(LengthConverter))]
57        public double PositionOnWorkSpaceY
58        {
59            get { return (double)base.GetValue(Y); }
60            set
61            {
62                base.SetValue(Y, value);
63            }
64        }
65
66        private ConnectorOrientation orientation;
67        public ConnectorOrientation Orientation
68        {
69            get 
70            {
71                return orientation;
72            }
73            set
74            {
75                orientation = value;
76                switch (value)
77                {
78                    case ConnectorOrientation.West:
79                        if (model.Outgoing)
80                            Rotation.Angle = 90;
81                        else
82                            Rotation.Angle = -90;
83                        break;
84                    case ConnectorOrientation.East:
85                        if (model.Outgoing)
86                            Rotation.Angle = -90;
87                        else
88                            Rotation.Angle = 90;
89                        break;
90                    case ConnectorOrientation.North:
91                        if (model.Outgoing)
92                            Rotation.Angle = 180;
93                        else
94                            Rotation.Angle = 0;
95                        break;
96                    case ConnectorOrientation.South:
97                        if (model.Outgoing)
98                            Rotation.Angle = 0;
99                        else
100                            Rotation.Angle = 180;
101                        break;
102                }
103
104                this.Model.Orientation = value;
105            }
106        }
107
108        public ConnectorView()
109        {
110            InitializeComponent();
111        }
112
113        public ConnectorView(ConnectorModel Model)
114        {
115            InitializeComponent();
116            setBaseControl(Model);
117
118            if (Model.IsMandatory)
119                ConnectorRep.Stroke = Brushes.OrangeRed;
120
121            if (Model.Orientation == ConnectorOrientation.Unset)
122            {
123                if (model.Outgoing)
124                    this.Orientation = ConnectorOrientation.East;
125                else
126                    this.Orientation = ConnectorOrientation.West;
127            }
128            else
129                this.Orientation = Model.Orientation;
130
131            Color color = ColorHelper.GetLineColor(Model.ConnectorType);
132            this.ConnectorRep.Fill = new SolidColorBrush(Color.FromArgb(color.A, color.R, color.G, color.B));
133            this.ConnectorRep.ToolTip = Model.ToolTip;
134        }
135
136        void ConnectorView_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
137        {
138            //if (this.OnConnectorMouseLeftButtonDown != null)
139            //{
140            //    this.OnConnectorMouseLeftButtonDown.Invoke(this, new ConnectorViewEventArgs { connector = this });
141            //}
142        }
143
144        private void setBaseControl(ConnectorModel Model)
145        {
146            //this.PreviewMouseLeftButtonDown += new MouseButtonEventHandler(ConnectorView_MouseLeftButtonDown);
147            //this.PreviewMouseRightButtonDown += new MouseButtonEventHandler(ConnectorView_MouseRightButtonDown);
148            //this.PreviewMouseRightButtonUp += new MouseButtonEventHandler(ConnectorView_MouseRightButtonUp);
149            //this.MouseLeave += new MouseEventHandler(ConnectorView_MouseLeave);
150            this.Model = Model;
151            this.DataContext = Model;
152            this.Model.UpdateableView = this;
153        }
154
155        //void ConnectorView_MouseLeave(object sender, MouseEventArgs e)
156        //{
157        //    BubblePopup.StaysOpen = false;
158        //}
159
160        //void ConnectorView_MouseRightButtonUp(object sender, MouseButtonEventArgs e)
161        //{
162        //    BubblePopup.StaysOpen = false;
163        //}
164
165        //void ConnectorView_MouseRightButtonDown(object sender, MouseButtonEventArgs e)
166        //{
167        //    this.BubblePopup.IsOpen = true;
168        //    BubblePopup.StaysOpen = true;
169        //}
170
171        //void ConnectorView_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
172        //{
173        //    if (this.OnConnectorMouseLeftButtonDown != null)
174        //    {
175        //        this.OnConnectorMouseLeftButtonDown.Invoke(this, new ConnectorViewEventArgs { connector = this });
176        //    }
177        //}
178
179        //public void ResetPopUp()
180        //{
181        //    Random random = new Random();
182        //    BubblePopup.PlacementRectangle = new Rect(new Point(random.NextDouble() / 1000, 0), new Size(0, 0));
183        //}
184
185        public bool CanConnect
186        {
187            get { throw new NotImplementedException(); }
188        }
189
190        public void update()
191        {
192            if (model.HasData)
193            {
194                ToolTip = model.Data;
195            }
196
197        }
198
199    }
200
201    public class ConnectorViewEventArgs : EventArgs
202    {
203        public ConnectorView connector;
204    }
205}
Note: See TracBrowser for help on using the repository browser.