source: trunk/CrypPlugins/P2PEditor/P2PEditorSettings.cs @ 1619

Last change on this file since 1619 was 1619, checked in by Paul Lelgemann, 12 years ago

+ P2PEditor: new tab, which "invites" to connect to the network

File size: 10.4 KB
Line 
1/*
2   Copyright 2010 Paul Lelgemann, University of Duisburg-Essen
3
4   Licensed under the Apache License, Version 2.0 (the "License");
5   you may not use this file except in compliance with the License.
6   You may obtain a copy of the License at
7
8       http://www.apache.org/licenses/LICENSE-2.0
9
10   Unless required by applicable law or agreed to in writing, software
11   distributed under the License is distributed on an "AS IS" BASIS,
12   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   See the License for the specific language governing permissions and
14   limitations under the License.
15*/
16
17using System.ComponentModel;
18using Cryptool.P2P;
19using Cryptool.PluginBase;
20using Cryptool.Plugins.PeerToPeer.Internal;
21
22namespace Cryptool.P2PEditor
23{
24    internal class P2PEditorSettings : ISettings
25    {
26        private readonly P2PEditor _p2PEditor;
27        private readonly P2PSettings _settings;
28
29        private const string GroupExperienced = "experienced_settings";
30        private const string GroupExpert = "expert_settings";
31
32        public P2PEditorSettings(P2PEditor p2PEditor)
33        {
34            _p2PEditor = p2PEditor;
35            _settings = P2PSettings.Default;
36        }
37
38        #region ISettings Members
39
40        public event PropertyChangedEventHandler PropertyChanged;
41
42        public bool HasChanges { get; set; }
43
44        #endregion
45
46        #region Settings
47
48        [TaskPane("username_caption",
49            "username_tooltip"
50            , null, 0, false, DisplayLevel.Beginner, ControlType.TextBox)]
51        public string PeerName
52        {
53            get { return _settings.PeerName; }
54            set
55            {
56                if (value != _settings.PeerName)
57                {
58                    _settings.PeerName = value;
59                    OnPropertyChanged("PeerName");
60                    HasChanges = true;
61                }
62            }
63        }
64
65        [TaskPane("worldname_caption", "worldname_tooltip", null, 1, false, DisplayLevel.Beginner, ControlType.TextBox)]
66        public string WorldName
67        {
68            get { return _settings.WorldName; }
69            set
70            {
71                if (value != _settings.WorldName)
72                {
73                    _settings.WorldName = value;
74                    OnPropertyChanged("WorldName");
75                    HasChanges = true;
76                }
77            }
78        }
79
80        // TODO New ControlType needed to choose dialogs? OpenFileDialog not fitting.
81        [TaskPane("workspacePath_caption", "workspacePath_tooltip", null, 2, true, DisplayLevel.Beginner, ControlType.TextBox)]
82        public string WorkspacePath
83        {
84            get { return _settings.WorkspacePath; }
85            set
86            {
87                if (value != _settings.WorkspacePath)
88                {
89                    _settings.WorkspacePath = value;
90                    OnPropertyChanged("WorkspacePath");
91                    HasChanges = true;
92                }
93            }
94        }
95
96        [TaskPane("start_caption", "start_tooltip", null, 3, true, DisplayLevel.Beginner, ControlType.Button)]
97        public void ButtonStart()
98        {
99            if (!P2PManager.IsConnected)
100            {
101                P2PManager.Connect();
102                OnPropertyChanged("ButtonStart");
103                _p2PEditor.GuiLogMessage(Resources.Attributes.start_launched, NotificationLevel.Info);
104            } else
105            {
106                _p2PEditor.GuiLogMessage(Resources.Attributes.start_failed, NotificationLevel.Warning);
107            }
108        }
109
110        [TaskPane("stop_caption", "stop_tooltip", null, 4, true, DisplayLevel.Beginner, ControlType.Button)]
111        public void ButtonStop()
112        {
113            if (P2PManager.IsConnected)
114            {
115                P2PManager.Disconnect();
116                OnPropertyChanged("ButtonStop");
117                _p2PEditor.GuiLogMessage(Resources.Attributes.stop_launched, NotificationLevel.Info);
118            }
119            else
120            {
121                _p2PEditor.GuiLogMessage(Resources.Attributes.stop_failed, NotificationLevel.Warning);
122            }
123        }
124
125        [TaskPane("distributedJobListRefreshInterval_caption", "distributedJobListRefreshInterval_tooltip", GroupExperienced, 0, false, DisplayLevel.Experienced,
126            ControlType.NumericUpDown, ValidationType.RangeInteger, 0, int.MaxValue)]
127        public int DistributedJobListRefreshInterval
128        {
129            get { return _settings.DistributedJobListRefreshInterval; }
130            set
131            {
132                if (value != _settings.DistributedJobListRefreshInterval)
133                {
134                    _settings.DistributedJobListRefreshInterval = value;
135                    OnPropertyChanged("DistributedJobListRefreshInterval");
136                    HasChanges = true;
137                }
138            }
139        }
140
141        [TaskPane("connectOnStartup_caption", "connectOnStartup_tooltip", GroupExperienced, 1, true, DisplayLevel.Experienced,
142            ControlType.CheckBox)]
143        public bool ConnectOnStartup
144        {
145            get { return _settings.ConnectOnStartup; }
146            set
147            {
148                if (value != _settings.ConnectOnStartup)
149                {
150                    _settings.ConnectOnStartup = value;
151                    OnPropertyChanged("ConnectOnStartup");
152                    HasChanges = true;
153                }
154            }
155        }
156
157        [TaskPane("linkmanager_caption", "linkmanager_tooltip", GroupExpert, 0, false, DisplayLevel.Expert,
158            ControlType.ComboBox, new[] {"Snal"})]
159        public int LinkManager
160        {
161            get { return (int) _settings.LinkManager; }
162            set
163            {
164                if ((P2PLinkManagerType) value != _settings.LinkManager)
165                {
166                    _settings.LinkManager = (P2PLinkManagerType) value;
167                    OnPropertyChanged("LinkManager");
168                    HasChanges = true;
169                }
170            }
171        }
172
173        [TaskPane("bootstrapper_caption", "bootstrapper_tooltip", GroupExpert, 1, false, DisplayLevel.Expert
174            , ControlType.ComboBox, new[] {"LocalMachineBootstrapper", "IrcBootstrapper"})]
175        public int Bootstrapper
176        {
177            get { return (int) _settings.Bootstrapper; }
178            set
179            {
180                if ((P2PBootstrapperType) value != _settings.Bootstrapper)
181                {
182                    _settings.Bootstrapper = (P2PBootstrapperType) value;
183                    OnPropertyChanged("Bootstrapper");
184                    HasChanges = true;
185                }
186            }
187        }
188
189        [TaskPane("overlay_caption", "overlay_tooltip", GroupExpert, 2, false, DisplayLevel.Expert,
190            ControlType.ComboBox, new[] {"FullMeshOverlay"})]
191        public int Overlay
192        {
193            get { return (int) _settings.Overlay; }
194            set
195            {
196                if ((P2POverlayType) value != _settings.Overlay)
197                {
198                    _settings.Overlay = (P2POverlayType) value;
199                    OnPropertyChanged("Overlay");
200                    HasChanges = true;
201                }
202            }
203        }
204
205        [TaskPane("dht_caption", "dht_tooltip", GroupExpert, 3, false, DisplayLevel.Expert,
206            ControlType.ComboBox, new[] {"FullMeshDHT"})]
207        public int Dht
208        {
209            get { return (int) _settings.Dht; }
210            set
211            {
212                if ((P2PDHTType) value != _settings.Dht)
213                {
214                    _settings.Dht = (P2PDHTType) value;
215                    OnPropertyChanged("Dht");
216                    HasChanges = true;
217                }
218            }
219        }
220
221        [TaskPane("transportprotocol_caption", "transportprotocol_tooltip", GroupExpert, 3, false, DisplayLevel.Expert,
222            ControlType.ComboBox, new[] { "TCP", "TCP_UDP", "UDP" })]
223        public int TransportProtocol
224        {
225            get { return (int)_settings.TransportProtocol; }
226            set
227            {
228                if ((P2PTransportProtocol)value != _settings.TransportProtocol)
229                {
230                    _settings.TransportProtocol = (P2PTransportProtocol)value;
231                    OnPropertyChanged("TransportProtocol");
232                    HasChanges = true;
233                }
234            }
235        }
236
237        [TaskPane("localPort_caption", "localPort_tooltip", GroupExpert, 4, false, DisplayLevel.Expert,
238            ControlType.NumericUpDown, ValidationType.RangeInteger, 0, 65535)]
239        public int LocalPort
240        {
241            get { return _settings.LocalReceivingPort; }
242            set
243            {
244                if (value != _settings.LocalReceivingPort)
245                {
246                    _settings.LocalReceivingPort = value;
247                    OnPropertyChanged("LocalPort");
248                    HasChanges = true;
249                }
250            }
251        }
252
253        [TaskPane("useLocalAddressDetection_caption", "useLocalAddressDetection_tooltip", GroupExpert, 5, false, DisplayLevel.Expert,
254            ControlType.CheckBox)]
255        public bool UseLocalAddressDetection
256        {
257            get { return _settings.UseLocalAddressDetection; }
258            set
259            {
260                if (value != _settings.UseLocalAddressDetection)
261                {
262                    _settings.UseLocalAddressDetection = value;
263                    OnPropertyChanged("UseLocalAddressDetection");
264                    HasChanges = true;
265                }
266            }
267        }
268
269        [TaskPane("log2monitor_caption", "log2monitor_tooltip", GroupExpert, 6, false, DisplayLevel.Expert,
270            ControlType.CheckBox)]
271        public bool Log2Monitor
272        {
273            get { return _settings.Log2Monitor; }
274            set
275            {
276                if (value != _settings.Log2Monitor)
277                {
278                    _settings.Log2Monitor = value;
279                    OnPropertyChanged("Log2Monitor");
280                    HasChanges = true;
281                }
282            }
283        }
284
285        #endregion
286
287        private void OnPropertyChanged(string p)
288        {
289            if (PropertyChanged != null)
290            {
291                PropertyChanged(this, new PropertyChangedEventArgs(p));
292            }
293
294            P2PSettings.Default.Save();
295        }
296    }
297}
Note: See TracBrowser for help on using the repository browser.