source: trunk/CrypPlugins/WorkspaceManager/View/Container/PluginContainerView.xaml.cs @ 1991

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

-fixed pathfinding
-fixed line drawing
-added Colorpicker
-fixed lock/unlock at TextInputWrapper
-feature: Background and TextForeground in TextInputWrapper added
-fixed a issue With loading and such
-WorkspaceModel doesn't throw exception anymore (Samples functional again)
-fixed some Styles
-Startable implemented and loaded right
-Startable Logo moved

File size: 30.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 WorkspaceManager.Model;
16using WorkspaceManager.View.VisualComponents;
17using System.Windows.Controls.Primitives;
18using System.Windows.Media.Animation;
19using WorkspaceManager;
20using System.Windows.Threading;
21using System.Threading;
22using Cryptool.PluginBase;
23
24namespace WorkspaceManager.View.Container
25{
26    public enum PluginViewState
27    {   
28        Min,
29        Presentation,
30        Data,
31        Log,
32        Setting,
33        Description
34    };
35
36    /// <summary>
37    /// Interaction logic for PluginContainerView.xaml
38    /// </summary>
39    public partial class PluginContainerView : UserControl, IDraggable, IUpdateableView
40    {
41        #region Events
42        public event EventHandler<ConnectorViewEventArgs> ConnectorMouseLeftButtonDown;
43        public event EventHandler<PluginContainerViewDeleteViewEventArgs> Delete;
44        public event EventHandler<PluginContainerViewFullScreenViewEventArgs> FullScreen;
45        #endregion
46
47        #region Private Variables
48
49        private List<UIElement> optionList = new List<UIElement>();
50        private int optionPointer = 0;
51        #endregion
52
53        #region Properties
54
55        internal Point GetRoutingPoint(int routPoint)
56        {
57            switch (routPoint)
58            {
59                case 0:
60                    return new Point((this.RenderTransform as TranslateTransform).X - 1, (this.RenderTransform as TranslateTransform).Y - 1);
61                case 1:
62                    return new Point((this.RenderTransform as TranslateTransform).X - 1, (this.RenderTransform as TranslateTransform).Y + this.ActualHeight + 1);
63                case 2:
64                    return new Point((this.RenderTransform as TranslateTransform).X + 1 + this.ActualWidth, (this.RenderTransform as TranslateTransform).Y + 1);
65                case 3:
66                    return new Point((this.RenderTransform as TranslateTransform).X + this.ActualWidth + 1, (this.RenderTransform as TranslateTransform).Y + this.ActualHeight + 1);
67            }
68            return default(Point);
69        }
70
71        public Point[] RoutingPoints
72        {
73            get
74            {
75                return  new Point[] {
76                        new Point((this.RenderTransform as TranslateTransform).X-1 ,(this.RenderTransform as TranslateTransform).Y-1),
77                        //new Point((this.RenderTransform as TranslateTransform).X + (this.ActualWidth / 2),(this.RenderTransform as TranslateTransform).Y-1),
78                        //new Point((this.RenderTransform as TranslateTransform).X-1,(this.RenderTransform as TranslateTransform).Y + (this.ActualHeight / 2)),
79                        new Point((this.RenderTransform as TranslateTransform).X-1,(this.RenderTransform as TranslateTransform).Y + this.ActualHeight+1),
80                        new Point((this.RenderTransform as TranslateTransform).X+1 + this.ActualWidth,(this.RenderTransform as TranslateTransform).Y+1),
81                        //new Point((this.RenderTransform as TranslateTransform).X + (this.ActualWidth / 2), (this.RenderTransform as TranslateTransform).Y + this.ActualHeight+1),
82                        //new Point((this.RenderTransform as TranslateTransform).X + this.ActualWidth+1, (this.RenderTransform as TranslateTransform).Y + (this.ActualHeight / 2)),
83                        new Point((this.RenderTransform as TranslateTransform).X + this.ActualWidth+1, (this.RenderTransform as TranslateTransform).Y + this.ActualHeight+1)};
84            }
85        }
86
87        public static readonly DependencyProperty IsFullscreenProperty = DependencyProperty.Register("IsFullscreen", typeof(bool), typeof(PluginContainerView));
88        public bool IsFullscreen
89        {
90            get
91            {
92                return (bool)base.GetValue(IsFullscreenProperty);
93            }
94            set
95            {
96                base.SetValue(IsFullscreenProperty, value);
97            }
98        }
99
100        public static readonly DependencyProperty ViewStateProperty = DependencyProperty.Register("ViewState", typeof(PluginViewState), typeof(PluginContainerView), new FrameworkPropertyMetadata(PluginViewState.Min));
101
102        public PluginViewState ViewState
103        {
104            get 
105            {
106                return (PluginViewState)base.GetValue(ViewStateProperty);
107            }
108            set
109            {
110
111                switch (value)
112                {
113                    case PluginViewState.Presentation:
114                        if (PresentationPanel.Child == null)
115                        {
116                            PluginBase.Width = PluginBase.MinWidth;
117                            PluginBase.Height = PluginBase.MinHeight;
118                            ViewPanel.Visibility = Visibility.Collapsed;
119                            break;
120                        }
121                        PluginBase.Width = Model.Width;
122                        PluginBase.Height = Model.Height;
123                        ViewPanel.Visibility = Visibility.Visible;
124                        break;
125
126                    case PluginViewState.Data:
127                        PluginBase.Width = Model.Width;
128                        PluginBase.Height = Model.Height;
129                        ViewPanel.Visibility = Visibility.Visible;
130                        break;
131                    case PluginViewState.Log:
132                        PluginBase.Width = Model.Width;
133                        PluginBase.Height = Model.Height;
134                        ViewPanel.Visibility = Visibility.Visible;
135                        break;
136                    case PluginViewState.Min:
137                        PluginBase.Width = PluginBase.MinWidth;
138                        PluginBase.Height = PluginBase.MinHeight;
139                        ViewPanel.Visibility = Visibility.Collapsed;
140                        break;
141
142                    case PluginViewState.Setting:
143                        PluginBase.Width = Model.Width;
144                        PluginBase.Height = Model.Height;
145                        ViewPanel.Visibility = Visibility.Visible;
146                        break;
147
148                    case PluginViewState.Description:
149                        PluginBase.Width = Model.Width;
150                        PluginBase.Height = Model.Height;
151                        ViewPanel.Visibility = Visibility.Visible;
152                        break;
153                }
154
155                base.SetValue(ViewStateProperty, value);
156                this.Model.ViewState = value;
157            }
158        }
159
160        private Image icon;
161        public Image Icon
162        {
163            get
164            {
165                return icon;
166            }
167            set
168            {
169                icon = value;
170                icon.Stretch = Stretch.Uniform;
171                icon.Width = 40;
172                icon.Height = 40;
173                IconPanel.Child = icon;
174            }
175        }
176
177        private List<ConnectorView> connectorViewList;
178        public List<ConnectorView> ConnectorViewList
179        {
180            get { return connectorViewList; }
181            private set { connectorViewList = value; }
182        }
183
184        private PluginModel model;
185        public PluginModel Model
186        {
187            get { return model; }
188            private set { model = value; }
189        }
190
191        public bool CanDrag { get; set; }
192
193        #endregion
194
195        #region Contructors
196        public PluginContainerView()
197        {
198            InitializeComponent();
199        }
200
201        public PluginContainerView(PluginModel model)
202        {
203            InitializeComponent();
204            setBaseControl(model);
205            DataContext = this;
206
207            West.PreviewDrop += new DragEventHandler(Connector_Drop);
208            East.PreviewDrop += new DragEventHandler(Connector_Drop);
209            North.PreviewDrop += new DragEventHandler(Connector_Drop);
210            South.PreviewDrop += new DragEventHandler(Connector_Drop);
211
212            handleStartable();
213
214            LogPanel.Child = new LogPresentation();
215            PresentationPanel.Child = Model.PluginPresentation;
216            TaskPaneCtrl Settings = new TaskPaneCtrl();
217            SettingsPanel.Child = Settings;
218            Settings.DisplayPluginSettings(Model.Plugin, Model.Plugin.GetPluginInfoAttribute().Caption, Cryptool.PluginBase.DisplayPluginMode.Normal);
219
220            foreach (ConnectorModel ConnectorModel in model.InputConnectors)
221            {
222                ConnectorView connector = new ConnectorView(ConnectorModel);
223                AddConnectorView(connector);
224                DataPanel.Children.Add(new DataPresentation(connector));
225            }
226
227            foreach (ConnectorModel ConnectorModel in model.OutputConnectors)
228            {
229                ConnectorView connector = new ConnectorView(ConnectorModel);
230                AddConnectorView(connector);
231                DataPanel.Children.Add(new DataPresentation(connector));
232            }
233            this.ViewState = Model.ViewState;
234        }
235
236        private void handleStartable()
237        {
238            if (Model.Startable)
239                play.Visibility = Visibility.Visible;
240            else
241                play.Visibility = Visibility.Collapsed;
242
243            if (model.RepeatStart)
244            {
245                model.RepeatStart = false;
246                playimg.Source = new BitmapImage(new Uri("../Image/play.png", UriKind.RelativeOrAbsolute));
247            }
248            else
249            {
250                model.RepeatStart = true;
251                playimg.Source = new BitmapImage(new Uri("../Image/pause.png", UriKind.RelativeOrAbsolute));
252            }
253        }
254
255        void Connector_Drop(object sender, DragEventArgs e)
256        {
257            StackPanel panel = sender as StackPanel;
258            try
259            {
260                if (e.Data.GetDataPresent("connector"))
261                {
262                    ConnectorView connector = e.Data.GetData("connector") as ConnectorView;
263                    if (panel.Children.Contains(connector))
264                        return;
265
266                    switch (connector.Orientation)
267                    {
268                        case ConnectorOrientation.West:
269                            this.West.Children.Remove(connector);
270                            break;
271                        case ConnectorOrientation.East:
272                            this.East.Children.Remove(connector);
273                            break;
274                        case ConnectorOrientation.North:
275                            this.North.Children.Remove(connector);
276                            break;
277                        case ConnectorOrientation.South:
278                            this.South.Children.Remove(connector);
279                            break;
280                    }
281
282                    switch (panel.Name)
283                    {
284                        case "West":
285                            connector.Orientation = ConnectorOrientation.West;
286                            this.West.Children.Add(connector);
287                            break;
288                        case "East":
289                            connector.Orientation = ConnectorOrientation.East;
290                            this.East.Children.Add(connector);
291                            break;
292                        case "North":
293                            connector.Orientation = ConnectorOrientation.North;
294                            this.North.Children.Add(connector);
295                            break;
296                        case "South":
297                            connector.Orientation = ConnectorOrientation.South;
298                            this.South.Children.Add(connector);
299                            break;
300                    }
301
302                    SetAllConnectorPositionX();
303                    e.Handled = true;
304                }
305            }
306            catch (Exception ex)
307            {
308                Console.Out.WriteLine(ex.ToString());
309            }
310        }
311
312        #endregion
313
314        #region Public Methods
315        public void AddConnectorView(ConnectorView connector)
316        {
317            switch (connector.Orientation)
318            {
319                case ConnectorOrientation.West:
320                    this.West.Children.Add(connector);
321                    break;
322                case ConnectorOrientation.East:
323                    this.East.Children.Add(connector);
324                    break;
325                case ConnectorOrientation.North:
326                    this.North.Children.Add(connector);
327                    break;
328                case ConnectorOrientation.South:
329                    this.South.Children.Add(connector);
330                    break;
331            }
332
333            connector.OnConnectorMouseLeftButtonDown += new EventHandler<ConnectorViewEventArgs>(connector_OnConnectorMouseLeftButtonDown);
334            connectorViewList.Add(connector);
335        }
336
337
338
339        public void ResetPopUp()
340        {
341            Random random = new Random();
342            BubblePopup.PlacementRectangle = new Rect(new Point(random.NextDouble() / 1000, 0), new Size(0, 0));
343            //ProgressPopup.PlacementRectangle = new Rect(new Point(random.NextDouble() / 1000, 0), new Size(0, 0));
344        }
345
346        public void SetPosition(Point value)
347        {
348            TranslateTransform pos = (this.RenderTransform as TranslateTransform);
349            pos.X = value.X;
350            pos.Y = value.Y;
351            ResetPopUp();
352            Model.Position = new Point(pos.X, pos.Y);
353            SetAllConnectorPositionX();
354        }
355
356        public Point GetPosition()
357        {
358            return new Point((this.RenderTransform as TranslateTransform).X, (this.RenderTransform as TranslateTransform).Y);
359        }
360
361        #endregion
362
363        #region Private Methods
364
365        private void setBaseControl(PluginModel model)
366        {
367            this.Loaded += new RoutedEventHandler(PluginContainerView_Loaded);
368            this.MouseEnter += new MouseEventHandler(PluginContainerView_MouseEnter);
369            this.MouseLeave += new MouseEventHandler(PluginContainerView_MouseLeave);
370            this.MouseDoubleClick += new MouseButtonEventHandler(PluginContainerView_MouseDoubleClick);
371            this.Model = model;
372            this.Model.UpdateableView = this;
373            this.Model.LogUpdated += new EventHandler<LogUpdated>(Model_LogUpdated);
374            this.DataContext = Model;
375            this.ConnectorViewList = new List<ConnectorView>();
376            this.RenderTransform = new TranslateTransform();
377            this.Icon = this.Model.getImage();
378        }
379
380        void PluginContainerView_MouseDoubleClick(object sender, MouseButtonEventArgs e)
381        {
382            if (Model.PluginPresentation != null && !IsFullscreen)
383            {
384                ViewState = PluginViewState.Presentation;
385                showFullScreen();
386            }
387            else if(Model.PluginPresentation == null && !IsFullscreen)
388            {
389                ViewState = PluginViewState.Data;
390                showFullScreen();
391            }
392        }
393
394        void Model_LogUpdated(object sender, LogUpdated e)
395        {
396            LogPresentation log = LogPanel.Child as LogPresentation;
397            log.AddLogList(Model.GuiLogEvents);
398        }
399
400        private void SetAllConnectorPositionX()
401        {
402            try
403            {
404                GeneralTransform gTransform, gTransformSec;
405                Point point, relativePoint;
406                double x, y;
407
408                foreach (ConnectorView conn in West.Children)
409                {
410                    gTransform = this.West.TransformToVisual(this);
411                    gTransformSec = conn.TransformToVisual(this.West);
412
413                    point = gTransform.Transform(new Point(0, 0));
414                    relativePoint = gTransformSec.Transform(new Point(0, 0));
415
416                    x = (RenderTransform as TranslateTransform).X + point.X + relativePoint.X;
417                    y = (RenderTransform as TranslateTransform).Y + point.Y + relativePoint.Y;
418
419                    conn.PositionOnWorkSpaceX = x;
420                    conn.PositionOnWorkSpaceY = y;
421                }
422
423                foreach (ConnectorView conn in East.Children)
424                {
425                    gTransform = this.East.TransformToVisual(this);
426                    gTransformSec = conn.TransformToVisual(this.East);
427
428                    point = gTransform.Transform(new Point(0, 0));
429                    relativePoint = gTransformSec.Transform(new Point(0, 0));
430
431                    x = (RenderTransform as TranslateTransform).X + point.X + relativePoint.X;
432                    y = (RenderTransform as TranslateTransform).Y + point.Y + relativePoint.Y;
433
434                    conn.PositionOnWorkSpaceX = x;
435                    conn.PositionOnWorkSpaceY = y;
436                }
437
438                foreach (ConnectorView conn in North.Children)
439                {
440                    gTransform = this.North.TransformToVisual(this);
441                    gTransformSec = conn.TransformToVisual(this.North);
442
443                    point = gTransform.Transform(new Point(0, 0));
444                    relativePoint = gTransformSec.Transform(new Point(0, 0));
445
446                    x = (RenderTransform as TranslateTransform).X + point.X + relativePoint.X;
447                    y = (RenderTransform as TranslateTransform).Y + point.Y + relativePoint.Y;
448
449                    conn.PositionOnWorkSpaceX = x;
450                    conn.PositionOnWorkSpaceY = y;
451                }
452
453                foreach (ConnectorView conn in South.Children)
454                {
455                    gTransform = this.South.TransformToVisual(this);
456                    gTransformSec = conn.TransformToVisual(this.South);
457
458                    point = gTransform.Transform(new Point(0, 0));
459                    relativePoint = gTransformSec.Transform(new Point(0, 0));
460
461                    x = (RenderTransform as TranslateTransform).X + point.X + relativePoint.X;
462                    y = (RenderTransform as TranslateTransform).Y + point.Y + relativePoint.Y;
463
464                    conn.PositionOnWorkSpaceX = x;
465                    conn.PositionOnWorkSpaceY = y;
466                }
467            }
468            catch (Exception e)
469            {
470                Console.Out.WriteLine(e.ToString());
471            }
472        }
473        #endregion
474
475        #region Controls
476
477        void PluginContainerView_Loaded(object sender, RoutedEventArgs e)
478        {
479
480
481            BorderGradientStop.Color = ColorHelper.GetColor(this.Model.PluginType);
482            BorderGradientStopSecond.Color = Color.FromArgb(100, this.BorderGradientStop.Color.R, this.BorderGradientStop.Color.G, this.BorderGradientStop.Color.B);
483
484            if (Model.PluginPresentation != null)
485            {
486                optionList.Add(Resources["PresentationButton"] as UIElement);
487                optionList.Add(Resources["DataButton"] as UIElement);
488                optionList.Add(Resources["LogButton"] as UIElement);
489                optionList.Add(Resources["SettingButton"] as UIElement);
490            }
491            else 
492            {
493                optionList.Add(Resources["DataButton"] as UIElement);
494                optionList.Add(Resources["LogButton"] as UIElement);
495                optionList.Add(Resources["SettingButton"] as UIElement);
496            }
497
498            if (model.RepeatStart)
499            {
500                Model.RepeatStart = false;
501                playimg.Source = new BitmapImage(new Uri("../Image/play.png", UriKind.RelativeOrAbsolute));
502            }
503            else
504            {
505                Model.RepeatStart = true;
506                playimg.Source = new BitmapImage(new Uri("../Image/pause.png", UriKind.RelativeOrAbsolute));
507            }
508               
509            reAssambleOptions();
510
511            LogPresentation LogView = LogPanel.Child as LogPresentation;
512            LogView.LogUpdated += new EventHandler<LogUpdated>(LogView_LogUpdated);
513
514            SetAllConnectorPositionX();
515           
516        }
517
518        void LogView_LogUpdated(object sender, LogUpdated e)
519        {
520            LogPresentation logView = sender as LogPresentation;
521            ErrorCount.Text = logView.ErrorCount.ToString();
522            WarningCount.Text = logView.WarningCount.ToString();
523            DebugCount.Text = logView.DebugCount.ToString();
524            InfoCount.Text = logView.InfoCount.ToString();
525            LogReport.Text = e.log.Message;
526            BubblePopup.IsOpen = true;
527        }
528
529        private int optionModulo(int value)
530        {
531            int x = value % optionList.Count;
532
533            if (x < 0)
534            {
535                x += optionList.Count;
536            }
537
538            return x;
539        }
540
541        private void reAssambleOptions()
542        {
543            SlotOne.Child = null;
544            SlotTwo.Child = null;
545            SlotThree.Child = null;
546            SlotFour.Child = null;
547            SlotFive.Child = null;
548            if (Model.PluginPresentation != null)
549            {
550                SlotOne.Visibility = Visibility.Visible;
551                SlotFive.Visibility = Visibility.Visible;
552
553                SlotOne.Child = null;
554                SlotTwo.Child = null;
555                SlotThree.Child = null;
556                SlotFour.Child = null;
557                SlotFive.Child = null;
558
559                SlotOne.Child = optionList.ElementAt(optionModulo(optionPointer - 2));
560                SlotTwo.Child = optionList.ElementAt(optionModulo(optionPointer - 1));
561                SlotThree.Child = optionList.ElementAt(optionPointer);
562                SlotFour.Child = optionList.ElementAt(optionModulo(optionPointer + 1)); 
563            }
564            else 
565            {
566                SlotOne.Visibility = Visibility.Collapsed;
567                SlotFive.Visibility = Visibility.Collapsed;
568
569                SlotOne.Child = null;
570                SlotTwo.Child = null;
571                SlotThree.Child = null;
572                SlotFour.Child = null;
573                SlotFive.Child = null;
574
575                SlotTwo.Child = optionList.ElementAt(optionModulo(optionPointer - 1));
576                SlotThree.Child = optionList.ElementAt(optionPointer);
577                SlotFour.Child = optionList.ElementAt(optionModulo(optionPointer + 1));
578            }
579        }
580
581        void connector_OnConnectorMouseLeftButtonDown(object sender, ConnectorViewEventArgs e)
582        {
583            DataObject dragData = new DataObject("connector", e.connector);
584            DragDrop.DoDragDrop(e.connector.Parent, dragData, DragDropEffects.Move);
585
586            if (this.ConnectorMouseLeftButtonDown != null)
587                this.ConnectorMouseLeftButtonDown.Invoke(this, e);
588        }
589
590        private void delete()
591        {
592            if (this.Delete != null)
593                this.Delete.Invoke(this, new PluginContainerViewDeleteViewEventArgs { container = this });
594        }
595
596        private void showFullScreen()
597        {
598            if (this.FullScreen != null)
599            {
600                IsFullscreen = true;
601                this.FullScreen.Invoke(this, new PluginContainerViewFullScreenViewEventArgs { container = this });
602            }
603        }
604
605        private void Button_Click_1(object sender, RoutedEventArgs e)
606        {
607           
608        }
609
610        public void PrepareFullscreen()
611        {
612            this.ViewPanelParent.Children.Clear();
613            this.OptPanelParent.Children.Remove(OptionPanel);
614            this.ProgressbarRoot.Children.Clear();
615            this.ProgressPercentageRoot.Children.Clear();
616        }
617
618        public void Reset()
619        {
620            if (this.IsFullscreen)
621            {
622                this.ViewPanelParent.Children.Add(ViewPanel);
623                this.OptPanelParent.Children.Add(OptionPanel);
624                this.ProgressbarRoot.Children.Add(ProgressbarParent);
625                this.ProgressPercentageRoot.Children.Add(ProgressPercentage);
626                this.IsFullscreen = false;
627            }
628        }
629
630        private void Button_Click(object sender, RoutedEventArgs e)
631        {
632            Button bttn = sender as Button;
633            if (bttn.Name == "play")
634            {
635                if (model.RepeatStart)
636                {
637                    model.RepeatStart = false;
638                    playimg.Source = new BitmapImage(new Uri("../Image/play.png", UriKind.RelativeOrAbsolute));
639                }
640                else
641                {
642                    model.RepeatStart = true;
643                    playimg.Source = new BitmapImage(new Uri("../Image/pause.png", UriKind.RelativeOrAbsolute));
644                }
645                return;
646            }
647            if (bttn.Name == "del")
648            {
649                this.delete();
650                return;
651            }
652        }
653
654        void PluginContainerView_MouseLeave(object sender, MouseEventArgs e)
655        {
656            //if(ViewState != PluginViewState.Min)
657            //    OptionPanel.Visibility = Visibility.Visible;
658            //else
659            //    OptionPanel.Visibility = Visibility.Collapsed;
660            (Resources["FadeIn"] as Storyboard).Stop(ControlPanel);
661            ControlPanel.BeginStoryboard(Resources["FadeOut"] as Storyboard);
662        }
663
664        void PluginContainerView_MouseEnter(object sender, MouseEventArgs e)
665        {
666            //OptionPanel.Visibility = Visibility.Visible;
667            (Resources["FadeOut"] as Storyboard).Stop(ControlPanel);
668            ControlPanel.BeginStoryboard(Resources["FadeIn"] as Storyboard);
669        }
670
671        private void Thumb_DragDelta(object sender, System.Windows.Controls.Primitives.DragDeltaEventArgs e)
672        {
673            Thumb t = sender as Thumb;
674            if (t.Cursor == Cursors.SizeWE)
675            {
676                if ((PluginBase.ActualWidth + e.HorizontalChange) > Model.MinWidth)
677                    PluginBase.Width = PluginBase.ActualWidth + e.HorizontalChange;
678            }
679
680            if (t.Cursor == Cursors.SizeNS)
681            {
682                if ((PluginBase.ActualHeight + e.VerticalChange) > Model.MinHeight)
683                    PluginBase.Height = PluginBase.ActualHeight + e.VerticalChange;
684            }
685
686            if (t.Cursor == Cursors.SizeNWSE)
687            {
688                if ((PluginBase.ActualHeight + e.VerticalChange) > Model.MinHeight)
689                    PluginBase.Height = PluginBase.ActualHeight + e.VerticalChange;
690
691                if ((PluginBase.ActualWidth + e.HorizontalChange) > Model.MinWidth)
692                    PluginBase.Width = PluginBase.ActualWidth + e.HorizontalChange;
693            }
694
695            Model.Height = PluginBase.ActualHeight;
696            Model.Width = PluginBase.ActualWidth;
697           
698     
699        }
700
701        private void MinMaxBorder_MouseLeftButtonDown(object sender, RoutedEventArgs e)
702        {
703            this.SetAllConnectorPositionX();
704        }
705
706        #endregion
707
708        #region IUpdateableView Members
709
710        public void update()
711        {
712            ProgressBar.Value = Model.PercentageFinished;
713
714            if (ViewState == PluginViewState.Data)
715            {
716                foreach (UIElement element in DataPanel.Children)
717                {
718                    DataPresentation data = element as DataPresentation;
719                    data.update();
720                }
721            }
722
723            if (Model.GuiLogEvents.Count != 0)
724            {
725                LogPresentation log = LogPanel.Child as LogPresentation;
726                log.AddLogList(Model.GuiLogEvents);
727            }
728
729            if (model.State == PluginModelState.Warning)
730            {
731                this.Window.Background = new SolidColorBrush(Colors.Yellow);
732            }
733            else if (model.State == PluginModelState.Error)
734            {
735                this.Window.Background = new SolidColorBrush(Colors.Red);
736            }
737            else
738            {
739                //todo: assign old color and appereance
740            }
741           
742        }
743
744        #endregion
745
746        private void OptionClickHandler(object sender, RoutedEventArgs e)
747        {
748            Button button = sender as Button;
749            switch (button.Name)
750            {
751                case "Left":
752                    optionPointer = optionModulo(optionPointer + 1);
753                    OptionCaption.Text = (optionList.ElementAt(optionPointer) as Button).ToolTip as String;
754                    reAssambleOptions();
755                    break;
756
757                case "Right":
758                    optionPointer = optionModulo(optionPointer - 1);;
759                    OptionCaption.Text = (optionList.ElementAt(optionPointer) as Button).ToolTip as String;
760                    reAssambleOptions();
761                    break;
762            }
763            e.Handled = true;
764        }
765
766        private void OptionChooseHandler(object sender, RoutedEventArgs e)
767        {
768            Button button = sender as Button;
769            switch (button.Name)
770            {
771                case "PresentationButton":
772                    if (PresentationPanel.Child == null)
773                    {
774                        ViewState = PluginViewState.Min;
775                        break;
776                    }
777                    ViewState = PluginViewState.Presentation;
778                    break;
779
780                case "DataButton":
781                    ViewState = PluginViewState.Data;
782                    break;
783
784                case "LogButton":
785                    ViewState = PluginViewState.Log;
786                    break;
787
788                case "MinimizeButton":
789                    if(ViewState == PluginViewState.Min)
790                        ViewState = PluginViewState.Log;
791                    else
792                        ViewState = PluginViewState.Min;
793                    break;
794
795                case "SettingButton":
796                    ViewState = PluginViewState.Setting;
797                    break;
798
799                case "MaxButton":
800                    showFullScreen();
801                    break;
802            }
803            e.Handled = true;
804        }
805
806        private void SettingButton_MouseEnter(object sender, MouseEventArgs e)
807        {
808            Button btn = sender as Button;
809            OptionCaption.Text = btn.ToolTip as String;
810        }
811
812    }
813
814
815    public class PluginContainerViewDeleteViewEventArgs : EventArgs
816    {
817        public PluginContainerView container;
818    }
819
820    public class PluginContainerViewFullScreenViewEventArgs : EventArgs
821    {
822        public PluginContainerView container;
823    }
824}
Note: See TracBrowser for help on using the repository browser.