source: trunk/CrypPlugins/PeerToPeerBaseProxy/P2PPeerSettings.cs @ 1438

Last change on this file since 1438 was 1438, checked in by Paul Lelgemann, 12 years ago
  • Removed unused configuration options of PeerToPeerProxy
File size: 3.9 KB
Line 
1using System;
2using System.Collections.Generic;
3using System.Linq;
4using System.Text;
5using Cryptool.PluginBase;
6using System.ComponentModel;
7using Cryptool.PluginBase.Control;
8using System.Windows;
9using Cryptool.Plugins.PeerToPeer.Internal;
10using Cryptool.Plugins.PeerToPeer;
11
12namespace Cryptool.Plugins.PeerToPeerProxy
13{
14    class P2PPeerSettings : ISettings
15    {
16        public event TaskPaneAttributeChangedHandler TaskPaneAttributeChanged;
17        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
18
19        private bool hasChanges = false;
20        private P2PPeer p2pPeer;
21
22        #region ISettings Members
23
24        public bool HasChanges
25        {
26            get
27            {
28                return hasChanges;
29            }
30            set
31            {
32                hasChanges = value;
33            }
34        }
35
36        #endregion
37
38        #region taskPane
39
40        public P2PPeerSettings (P2PPeer p2pPeer)
41            {
42            if(TaskPaneAttributeChanged != null)
43                TaskPaneAttributeChanged(this, new TaskPaneAttributeChangedEventArgs(new TaskPaneAttribteContainer("BtnStop", Visibility.Hidden)));
44            this.p2pPeer = p2pPeer;
45            ChangePluginIcon(PeerStatus.NotConnected);
46            }
47
48        #endregion
49
50        #region Start- and Stop-Buttons incl. functionality
51
52        [TaskPane("Internal state dump", "Dumps the interla state of the P2P system to syslog.", "P2P Expert Settings", 0, true, DisplayLevel.Beginner, ControlType.Button)]
53        public void BtnLogInternalState()
54        {
55            this.p2pPeer.LogInternalState();
56        }
57
58        #endregion
59
60        #region INotifyPropertyChanged Members
61
62        private void OnPropertyChanged(string p)
63        {
64            if (PropertyChanged != null)
65            {
66                PropertyChanged(this, new PropertyChangedEventArgs(p));
67            }
68        }
69
70        #endregion
71
72        // Index depends on icon-position in P2PPeer-Class properties
73        public enum PeerStatus
74        {
75            NotConnected = 0,
76            Connecting = 1,
77            Online = 2,
78            Error = 3
79        }
80
81        /// <summary>
82        /// Changes icon of P2PPeer and visibility of the control buttons in settings
83        /// </summary>
84        /// <param name="peerStat"></param>
85        public void PeerStatusChanged(PeerStatus peerStat)
86        {
87            ChangePluginIcon(peerStat);
88            // Only set visibility in final states!
89            switch (peerStat)
90            {
91                case PeerStatus.Online:
92                    TaskPaneAttributeChanged(this, new TaskPaneAttributeChangedEventArgs(
93                        new TaskPaneAttribteContainer("BtnStart", Visibility.Collapsed)));
94                    TaskPaneAttributeChanged(this, new TaskPaneAttributeChangedEventArgs(
95                        new TaskPaneAttribteContainer("BtnStop", Visibility.Visible)));
96                    break;
97                case PeerStatus.NotConnected:
98                    TaskPaneAttributeChanged(this, new TaskPaneAttributeChangedEventArgs(
99                        new TaskPaneAttribteContainer("BtnStart", Visibility.Visible)));
100                    TaskPaneAttributeChanged(this, new TaskPaneAttributeChangedEventArgs(
101                        new TaskPaneAttribteContainer("BtnStop", Visibility.Hidden)));
102                    break;
103                case PeerStatus.Error:
104                case PeerStatus.Connecting:
105                default:
106                    break;
107            }
108        }
109
110        public event StatusChangedEventHandler OnPluginStatusChanged;
111        private void ChangePluginIcon(PeerStatus peerStatus)
112        {
113            if (OnPluginStatusChanged != null) 
114                OnPluginStatusChanged(null, new StatusEventArgs(StatusChangedMode.ImageUpdate, (int)peerStatus));
115        }
116    }
117}
Note: See TracBrowser for help on using the repository browser.