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

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

o CrypP2P: Code cleanup
o P2PEditor: job list will be reloaded in a BackgroundWorker

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