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

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

+ P2PEditor can display the status of jobs, if available; Participating displays overlay while loading workspace data
+ KeySearcher can upload status for P2PEditor display

File size: 9.9 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            this.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("architecture_caption", "architecture_tooltip", GroupExpert, 2, false, DisplayLevel.Expert,
190            ControlType.ComboBox, new[] { "FullMesh", "Chord" })]
191        public int Architecture
192        {
193            get { return (int)settings.Architecture; }
194            set
195            {
196                if ((P2PArchitecture)value != settings.Architecture)
197                {
198                    settings.Architecture = (P2PArchitecture)value;
199                    OnPropertyChanged("Architecture");
200                    HasChanges = true;
201                }
202            }
203        }
204
205        [TaskPane("transportprotocol_caption", "transportprotocol_tooltip", GroupExpert, 3, false, DisplayLevel.Expert,
206            ControlType.ComboBox, new[] { "TCP", "TCP_UDP", "UDP" })]
207        public int TransportProtocol
208        {
209            get { return (int)settings.TransportProtocol; }
210            set
211            {
212                if ((P2PTransportProtocol)value != settings.TransportProtocol)
213                {
214                    settings.TransportProtocol = (P2PTransportProtocol)value;
215                    OnPropertyChanged("TransportProtocol");
216                    HasChanges = true;
217                }
218            }
219        }
220
221        [TaskPane("localPort_caption", "localPort_tooltip", GroupExpert, 4, false, DisplayLevel.Expert,
222            ControlType.NumericUpDown, ValidationType.RangeInteger, 0, 65535)]
223        public int LocalPort
224        {
225            get { return settings.LocalReceivingPort; }
226            set
227            {
228                if (value != settings.LocalReceivingPort)
229                {
230                    settings.LocalReceivingPort = value;
231                    OnPropertyChanged("LocalPort");
232                    HasChanges = true;
233                }
234            }
235        }
236
237        [TaskPane("useLocalAddressDetection_caption", "useLocalAddressDetection_tooltip", GroupExpert, 5, false, DisplayLevel.Expert,
238            ControlType.CheckBox)]
239        public bool UseLocalAddressDetection
240        {
241            get { return settings.UseLocalAddressDetection; }
242            set
243            {
244                if (value != settings.UseLocalAddressDetection)
245                {
246                    settings.UseLocalAddressDetection = value;
247                    OnPropertyChanged("UseLocalAddressDetection");
248                    HasChanges = true;
249                }
250            }
251        }
252
253        [TaskPane("log2monitor_caption", "log2monitor_tooltip", GroupExpert, 6, false, DisplayLevel.Expert,
254            ControlType.CheckBox)]
255        public bool Log2Monitor
256        {
257            get { return settings.Log2Monitor; }
258            set
259            {
260                if (value != settings.Log2Monitor)
261                {
262                    settings.Log2Monitor = value;
263                    OnPropertyChanged("Log2Monitor");
264                    HasChanges = true;
265                }
266            }
267        }
268
269        #endregion
270
271        private void OnPropertyChanged(string p)
272        {
273            if (PropertyChanged != null)
274            {
275                PropertyChanged(this, new PropertyChangedEventArgs(p));
276            }
277
278            P2PSettings.Default.Save();
279        }
280    }
281}
Note: See TracBrowser for help on using the repository browser.