source: trunk/CrypPlugins/Comparators/Comparators.cs @ 2280

Last change on this file since 2280 was 944, checked in by Matthäus Wander, 12 years ago

Comparators:

  • icon update in Initialization (references #80)

RSA:

  • duplicate icon definitions removed (hope this doesn't break some particular workaround or whatever)
File size: 8.5 KB
Line 
1/*                             
2   Copyright 2009 Team CrypTool (Sven Rech,Dennis Nolte,Raoul Falk,Nils Kopal), Uni 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;
18using System.Collections.Generic;
19using System.Linq;
20using System.Text;
21using Cryptool.PluginBase;
22using Cryptool.PluginBase.IO;
23using System.ComponentModel;
24using Cryptool.PluginBase.Miscellaneous;
25using System.Runtime.CompilerServices;
26
27namespace Cryptool.Plugins.Comparators
28{
29    [Author("Raoul Falk", "falk@cryptool.org", "Uni Duisburg-Essen", "http://www.uni-due.de")]
30    [PluginInfo(false, "Comparators", "Simple comparators (=,!=, <, >, <=, >=). See detailed description.", "Comparators/DetailedDescription/Description.xaml", "Comparators/icons/icon_is.png", "Comparators/icons/icon_isnot.png", "Comparators/icons/icon_smaller.png", "Comparators/icons/icon_bigger.png", "Comparators/icons/icon_smallerIs.png", "Comparators/icons/icon_biggerIs.png")]
31
32    class Comparators : IThroughput
33    {
34        #region private variables
35
36        private ComparatorsSettings settings = new ComparatorsSettings();
37        private IComparable inputOne;
38        private IComparable inputTwo;
39        private bool output;
40
41        #endregion
42
43        #region public interfaces
44
45        public Comparators()
46        {
47            this.settings = new ComparatorsSettings();
48            this.settings.OnPluginStatusChanged += settings_OnPluginStatusChanged;
49        }
50
51        public ISettings Settings
52        {
53            get { return this.settings; }
54            set { this.settings = (ComparatorsSettings)value; }
55        }
56
57        private void Comparators_LogMessage(string msg, NotificationLevel loglevel)
58        {
59            EventsHelper.GuiLogMessage(OnGuiLogNotificationOccured, this, new GuiLogEventArgs(msg, this, loglevel));
60        }
61
62        public System.Windows.Controls.UserControl Presentation
63        {
64            get { return null; }
65        }
66
67        public System.Windows.Controls.UserControl QuickWatchPresentation
68        {
69            get { return null; }
70        }
71
72        [PropertyInfo(Direction.InputData, "Input one", "Input one.", "", true, false, DisplayLevel.Beginner, QuickWatchFormat.Text, null)]
73        public IComparable InputOne
74        {
75            [MethodImpl(MethodImplOptions.Synchronized)]
76            get { return inputOne; }
77            [MethodImpl(MethodImplOptions.Synchronized)]
78            set
79            {
80                if (value != inputOne)
81                {
82                    inputOne = value;
83                    OnPropertyChanged("InputOne");
84                }
85            }
86        }
87
88        [PropertyInfo(Direction.InputData, "Input two", "Input two.", "", true, false, DisplayLevel.Beginner, QuickWatchFormat.Text, null)]
89        public IComparable InputTwo
90        {
91            [MethodImpl(MethodImplOptions.Synchronized)]
92            get { return inputTwo; }
93            [MethodImpl(MethodImplOptions.Synchronized)]
94            set
95            {
96                if (value != inputTwo)
97                {
98                    inputTwo = value;
99                    OnPropertyChanged("InputTwo");
100                }
101            }
102        }
103
104        [PropertyInfo(Direction.OutputData, "Output", "Output.", "", true, false, DisplayLevel.Beginner, QuickWatchFormat.Text, null)]
105        public bool Output
106        {
107            [MethodImpl(MethodImplOptions.Synchronized)]
108            get
109            {
110                return output;
111            }
112
113            [MethodImpl(MethodImplOptions.Synchronized)]
114            set
115            {
116                this.output = value;
117                OnPropertyChanged("Output");
118            }
119        }
120
121        #endregion
122
123        #region IPlugin members
124
125        public void Dispose()
126        {
127
128        }
129
130        public void Execute()
131        {
132            if (InputOne != null && InputTwo != null)
133            {
134                try
135                {
136                    switch (this.settings.Comparator)
137                    {
138                        // if operator is =
139                        case 0:
140                            {
141                                Output = InputOne.CompareTo(InputTwo) == 0;
142                                ProgressChanged(100, 100);
143                                break;
144                            }
145                        // if operator is !=
146                        case 1:
147                            {
148                                Output = InputOne.CompareTo(InputTwo) != 0;
149                                ProgressChanged(100, 100);
150                                break;
151                            }
152                        //if operator is <
153                        case 2:
154                            {
155                                Output = InputOne.CompareTo(InputTwo) < 0;
156                                ProgressChanged(100, 100);
157                                break;
158
159                            }
160                        //if operator is >
161                        case 3:
162                            {
163
164                                Output = InputOne.CompareTo(InputTwo) > 0;
165                                ProgressChanged(100, 100);
166                                break;
167                            }
168                        //if operator is <=
169                        case 4:
170                            {
171
172                                Output = InputOne.CompareTo(InputTwo) <= 0;
173                                ProgressChanged(100, 100);
174                                break;
175
176                            }
177                        //if operator is >=
178                        case 5:
179                            {
180                                Output = InputOne.CompareTo(InputTwo) >= 0;
181                                ProgressChanged(100, 100);
182                                break;
183                            }
184                    }
185                }
186                catch (Exception e)
187                {
188                    GuiLogMessage("The given Inputs are not comparable: " + e.Message, NotificationLevel.Error);
189                }
190
191            }
192        }
193
194        public void Initialize()
195        {
196            settings.ChangePluginIcon(settings.Comparator);
197        }
198
199        public void Pause()
200        {
201
202        }
203
204        public void PostExecution()
205        {
206
207        }
208
209        public void PreExecution()
210        {
211
212        }
213
214        public void Stop()
215        {
216
217        }
218
219        #endregion
220
221        #region INotifyPropertyChanged Member
222
223        public event PropertyChangedEventHandler PropertyChanged;
224
225        protected void OnPropertyChanged(string name)
226        {
227            EventsHelper.PropertyChanged(PropertyChanged, this, new PropertyChangedEventArgs(name));
228        }
229        #endregion
230
231        #region event handling
232
233        private void Progress(double value, double max)
234        {
235            EventsHelper.ProgressChanged(OnPluginProgressChanged, this, new PluginProgressEventArgs(value, max));
236        }
237
238        public event StatusChangedEventHandler OnPluginStatusChanged;
239
240        void settings_OnPluginStatusChanged(IPlugin sender, StatusEventArgs args)
241        {
242            if (OnPluginStatusChanged != null) OnPluginStatusChanged(this, args);
243        }
244
245        public event PluginProgressChangedEventHandler OnPluginProgressChanged;
246
247        private void ProgressChanged(double value, double max)
248        {
249            EventsHelper.ProgressChanged(OnPluginProgressChanged, this, new PluginProgressEventArgs(value, max));
250        }
251
252        public event GuiLogNotificationEventHandler OnGuiLogNotificationOccured;
253
254        private void GuiLogMessage(string p, NotificationLevel notificationLevel)
255        {
256            EventsHelper.GuiLogMessage(OnGuiLogNotificationOccured, this, new GuiLogEventArgs(p, this, notificationLevel));
257        }
258
259        #endregion
260    }
261}
Note: See TracBrowser for help on using the repository browser.