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

Last change on this file since 1458 was 1458, checked in by Paul Lelgemann, 12 years ago
  • Removed unused references and using statement in CrypP2P, PeerToPeer, PeerToPeerBaseProxy

+ Skeleton for P2PEditor

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