source: trunk/CrypPlugins/PeerToPeerManager_NEW/P2PManager_KeyPatternSettings.cs @ 1166

Last change on this file since 1166 was 1166, checked in by arnold, 12 years ago

P2PManager: Design embellished and added an "estimated end time" information.
Samples: Output Boxes for KeySearcher Outputs

File size: 9.3 KB
Line 
1/* Copyright 2010 Team CrypTool (Christian Arnold), Uni Duisburg-Essen
2
3   Licensed under the Apache License, Version 2.0 (the "License");
4   you may not use this file except in compliance with the License.
5   You may obtain a copy of the License at
6
7       http://www.apache.org/licenses/LICENSE-2.0
8
9   Unless required by applicable law or agreed to in writing, software
10   distributed under the License is distributed on an "AS IS" BASIS,
11   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12   See the License for the specific language governing permissions and
13   limitations under the License.
14*/
15
16using System;
17using System.Collections.Generic;
18using System.Linq;
19using System.Text;
20using Cryptool.PluginBase;
21using System.ComponentModel;
22using Cryptool.PluginBase.Control;
23using System.Windows;
24using Cryptool.Plugins.PeerToPeer;
25using Cryptool.PluginBase.Miscellaneous;
26
27namespace Cryptool.Plugins.PeerToPeer
28{
29    public class P2PManager_KeyPatternSettings : ISettings
30    {
31        public event TaskPaneAttributeChangedHandler TaskPaneAttributeChanged;
32        private bool hasChanges = false;
33        //private KeySearcher keysearcher;
34
35        #region ISettings Members
36
37        public bool HasChanges
38        {
39            get
40            {
41                return this.hasChanges;
42            }
43            set
44            {
45                this.hasChanges = true;
46            }
47        }
48
49        #endregion
50
51        public P2PManager_KeyPatternSettings()
52        {
53            if (TaskPaneAttributeChanged != null)
54            {
55                TaskPaneAttributeChanged(this, new TaskPaneAttributeChangedEventArgs(new TaskPaneAttribteContainer("BtnSolutionFound", Visibility.Collapsed)));
56                TaskPaneAttributeChanged(this, new TaskPaneAttributeChangedEventArgs(new TaskPaneAttribteContainer("BtnUnregister", Visibility.Hidden)));
57                TaskPaneAttributeChanged(this, new TaskPaneAttributeChangedEventArgs(new TaskPaneAttribteContainer("BtnRegister", Visibility.Visible)));
58            }
59            ChangePluginIcon(MngStatus.Neutral);
60        }
61
62        private string sTopic = "NewTopic";
63        [TaskPane("Topic Name", "Choose a topic name with which all subscribers can register.", null, 0, false, DisplayLevel.Beginner, ControlType.TextBox)]
64        public string TopicName
65        {
66            get { return this.sTopic; }
67            set
68            {
69                if (this.sTopic != value && value != String.Empty && value != null)
70                {
71                    this.sTopic = value;
72                    HasChanges = true;
73                    OnPropertyChanged("TopicName");
74                }
75            }
76        }
77
78        /* FOR TESTING ISSUES */
79        [TaskPane("Unregister", "Click here to Unregister the publisher from all registered subscribers!", "Control region", 0, true, DisplayLevel.Beginner, ControlType.Button)]
80        public void BtnUnregister()
81        {
82            TaskPaneAttributeChanged(this, new TaskPaneAttributeChangedEventArgs(new TaskPaneAttribteContainer("BtnSolutionFound", Visibility.Collapsed)));
83            TaskPaneAttributeChanged(this, new TaskPaneAttributeChangedEventArgs(new TaskPaneAttribteContainer("BtnUnregister", Visibility.Collapsed)));
84            TaskPaneAttributeChanged(this, new TaskPaneAttributeChangedEventArgs(new TaskPaneAttribteContainer("BtnRegister", Visibility.Visible)));
85            OnPropertyChanged("BtnUnregister");
86        }
87        [TaskPane("Register", "Click here to Register the publisher pro-active with all formely registered subscribers!", "Control region", 1, true, DisplayLevel.Beginner, ControlType.Button)]
88        public void BtnRegister()
89        {
90            TaskPaneAttributeChanged(this, new TaskPaneAttributeChangedEventArgs(new TaskPaneAttribteContainer("BtnSolutionFound", Visibility.Visible)));
91            TaskPaneAttributeChanged(this, new TaskPaneAttributeChangedEventArgs(new TaskPaneAttribteContainer("BtnRegister", Visibility.Collapsed)));
92            TaskPaneAttributeChanged(this, new TaskPaneAttributeChangedEventArgs(new TaskPaneAttribteContainer("BtnUnregister", Visibility.Visible)));
93            OnPropertyChanged("BtnRegister");
94        }
95        [TaskPane("Solution found", "TESTING: Emulate solution-found-case!", "Control region", 2, true, DisplayLevel.Beginner, ControlType.Button)]
96        public void BtnSolutionFound()
97        {
98            TaskPaneAttributeChanged(this, new TaskPaneAttributeChangedEventArgs(new TaskPaneAttribteContainer("BtnSolutionFound", Visibility.Collapsed)));
99            TaskPaneAttributeChanged(this, new TaskPaneAttributeChangedEventArgs(new TaskPaneAttribteContainer("BtnUnregister", Visibility.Collapsed)));
100            TaskPaneAttributeChanged(this, new TaskPaneAttributeChangedEventArgs(new TaskPaneAttribteContainer("BtnRegister", Visibility.Visible)));
101            OnPropertyChanged("BtnSolutionFound");
102        }
103        /* FOR TESTING ISSUES */
104
105        private long sendAliveMessageInterval = 60;
106        [TaskPane("Alive Message Interval (in seconds)", "In which interval do you wish to receive Alive-Messages from your Subscribers?"
107            , "Subscriber Properties", 1, false, DisplayLevel.Beginner, ControlType.NumericUpDown, ValidationType.RangeInteger, 10, 3600)]
108        public long SendAliveMessageInterval
109        {
110            get
111            {
112                return this.sendAliveMessageInterval;
113            }
114            set
115            {
116                if (value != this.sendAliveMessageInterval)
117                {
118                    this.sendAliveMessageInterval = value;
119                    OnPropertyChanged("SendAliveMessageInterval");
120                }
121            }
122        }
123
124        private string key;
125        [TaskPane("Key", "Key pattern used to bruteforce", null, 2, false, DisplayLevel.Beginner, ControlType.TextBox)]
126        public String Key
127        {
128            get
129            {
130                return key;
131            }
132            set
133            {
134                key = value;
135                OnPropertyChanged("Key");
136
137                //if (!(keysearcher.Pattern != null && keysearcher.Pattern.testKey(value)))
138                //    keysearcher.GuiLogMessage("Wrong key pattern!", NotificationLevel.Error);
139            }
140        }
141
142        private int keyPatternSize = 10; // in hundred-thousand
143        [TaskPane("KeyPatternSize", "Choose the Size of the specific sub-KeyPattern (in hundred-thousand steps)"
144            , null, 3, false, DisplayLevel.Beginner, ControlType.NumericUpDown, ValidationType.RangeInteger, 1, 200)]
145        public int KeyPatternSize
146        {
147            get
148            {
149                return this.keyPatternSize;
150            }
151            set
152            {
153                if (value != this.keyPatternSize)
154                {
155                    this.keyPatternSize = value;
156                    OnPropertyChanged("KeyPatternSize");
157                }
158            }
159        }
160
161        private int bytesToUse = 128; // in hundred-thousand
162        [TaskPane("BytesToUse", "Choose the bytes to use for the decryption process and displaying decryption results"
163            , null, 4, false, DisplayLevel.Beginner, ControlType.NumericUpDown, ValidationType.RangeInteger, 32, 1024)]
164        public int BytesToUse
165        {
166            get
167            {
168                return this.bytesToUse;
169            }
170            set
171            {
172                if (value != this.bytesToUse)
173                {
174                    if (value == null || value == 0 || value < 128)
175                    {
176                        this.bytesToUse = 128;
177                    }
178                    else if (this.bytesToUse > 1024)
179                    {
180                        this.bytesToUse = 1024;
181                    }
182                    else
183                    {
184                        this.bytesToUse = value;
185                    }
186                    OnPropertyChanged("BytesToUse");
187                }
188            }
189        }
190        #region INotifyPropertyChanged Members
191
192        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
193
194        private void OnPropertyChanged(string p)
195        {
196            if (PropertyChanged != null)
197            {
198                PropertyChanged(this, new PropertyChangedEventArgs(p));
199            }
200        }
201
202        #endregion
203
204        #region PlugIn-Icon status Stuff
205
206        // Index depends on icon-position in P2PManager-Class properties
207        public enum MngStatus
208        {
209            Neutral = 0,
210            Working = 1,
211            Finished = 2
212            //Error = 3
213        }
214
215        /// <summary>
216        /// Changes icon of P2PManager and visibility of the control buttons in settings
217        /// </summary>
218        /// <param name="peerStat"></param>
219        public void MngStatusChanged(MngStatus mngStat)
220        {
221            ChangePluginIcon(mngStat);
222        }
223
224        public event StatusChangedEventHandler OnPluginStatusChanged;
225        private void ChangePluginIcon(MngStatus mngStatus)
226        {
227            if (OnPluginStatusChanged != null)
228                OnPluginStatusChanged(null, new StatusEventArgs(StatusChangedMode.ImageUpdate, (int)mngStatus));
229        }
230
231        #endregion
232    }
233}
Note: See TracBrowser for help on using the repository browser.