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

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

-LogPresentation completely new designed
-Usability improved
-Style Changed

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