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

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

-small fix

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