source: trunk/CrypPlugins/Substring/Substring.cs @ 2214

Last change on this file since 2214 was 811, checked in by nolte, 12 years ago
  • "Your Substring will be send here" --> substring
  • "Input your String here" --> "Enter your string here"
File size: 6.8 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
17
18using System;
19using System.Collections.Generic;
20using System.Linq;
21using System.Text;
22using Cryptool;
23using Cryptool.PluginBase.IO;
24using Cryptool.PluginBase;
25using Cryptool.PluginBase.Miscellaneous;
26using System.ComponentModel;
27
28
29namespace Cryptool.Plugins.Substring
30{
31    [Author("Dennis Nolte", "nolte@cryptool.org", "Uni Duisburg-Essen", "http://www.uni-due.de")]
32    [PluginInfo(false, "Substring", "Generating Substring", "Substring/DetailedDescription/Description.xaml", "Substring/icon.png")]
33   
34    class Substring : IThroughput
35    {
36        #region IPlugin Members
37
38        //Variables initialized
39        private SubstringSettings settings = new SubstringSettings();
40        private String inputString = "";
41        private int inputPos = 0;
42        private int inputLength = 0;
43        private String outputString = "";
44
45        public event Cryptool.PluginBase.StatusChangedEventHandler OnPluginStatusChanged;
46
47        public event Cryptool.PluginBase.GuiLogNotificationEventHandler OnGuiLogNotificationOccured;
48
49        public event Cryptool.PluginBase.PluginProgressChangedEventHandler OnPluginProgressChanged;
50
51        public Cryptool.PluginBase.ISettings Settings
52        {
53            get { return this.settings; }
54            set { this.settings = (SubstringSettings)value; }
55        }
56
57        public System.Windows.Controls.UserControl Presentation
58        {
59            get { return null; }
60        }
61
62        public System.Windows.Controls.UserControl QuickWatchPresentation
63        {
64            get { return null; }
65        }
66
67        public void PreExecution()
68        {
69           
70        }
71
72        public void Execute()
73        {
74            //checking if input is set
75            if (inputString != null)
76            {
77                ProgressChanged(0.5, 1.0);
78                //checking if the chosen parameters for startposition and length are still in the bound of the given string
79                if ((settings.IntegerStartValue <= inputString.Length) & ((settings.IntegerStartValue + settings.IntegerLengthValue) <= inputString.Length))
80                {
81                    //checking if the user set the length value to 0...if the length = 0 the complete string starting from the startposition will be send
82                    if (settings.IntegerLengthValue != 0)
83                    {
84                        OutputString = inputString.Substring(settings.IntegerStartValue, settings.IntegerLengthValue);
85                    }
86                    else
87                    {
88                        OutputString = inputString.Substring(settings.IntegerStartValue);
89                    }
90                    ProgressChanged(1.0, 1.0);
91                    return;
92                }
93                else
94                {
95                    GuiLogMessage("Your Startposition and/or Length for Substring are invalid", NotificationLevel.Error);
96                }
97            }
98        }
99
100
101        public void PostExecution()
102        {
103           
104        }
105
106        public void Pause()
107        {
108           
109        }
110
111        public void Stop()
112        {
113           
114        }
115
116        public void Initialize()
117        {
118           
119        }
120
121        public void Dispose()
122        {
123           
124        }
125
126        #endregion
127
128        #region SubstringInOut
129        /// <summary>
130        /// The inputs are defined
131        /// </summary>
132        [PropertyInfo(Direction.InputData, "String Input", "Enter your string here", "", true, false, DisplayLevel.Beginner, QuickWatchFormat.Text, null)]
133        public String InputString
134        {
135            get
136            {
137                return inputString;
138            }
139            set
140            {
141                this.inputString = value;
142                OnPropertyChanged("InputString");
143            }
144        }
145
146        [PropertyInfo(Direction.InputData, "Position Input", "Enter your position here", "", DisplayLevel.Beginner)]
147        public int InputPos
148        {
149            get
150            {
151                return inputPos;
152            }
153            set
154            {
155                this.inputPos = value;
156                settings.IntegerStartValue = value;
157                OnPropertyChanged("InputPosition");
158            }
159        }
160
161        [PropertyInfo(Direction.InputData, "Length Input", "Enter your length here", "", DisplayLevel.Beginner)]
162        public int InputLength
163        {
164            get
165            {
166                return inputLength;
167            }
168            set
169            {
170                this.inputLength = value;
171                settings.IntegerLengthValue = value;
172                OnPropertyChanged("InputLength");
173            }
174        }
175
176        /// <summary>
177        /// The output is defined
178        /// </summary>
179        [PropertyInfo(Direction.OutputData, "String Output", "Your substring will be send here", "", DisplayLevel.Beginner)]
180        public String OutputString
181        {
182            get
183            {
184                return outputString;
185            }
186            set
187            {
188                this.outputString = value;
189                OnPropertyChanged("OutputString");
190            }
191        }
192
193        #endregion
194
195        #region INotifyPropertyChanged Members
196
197
198
199        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
200       
201        public void OnPropertyChanged(string name)
202        {
203            EventsHelper.PropertyChanged(PropertyChanged, this, new PropertyChangedEventArgs(name));
204        }
205
206        public event PluginProgressChangedEventHandler OnPluginProcessChanged;
207
208        private void ProgressChanged(double value, double max)
209        {
210            EventsHelper.ProgressChanged(OnPluginProgressChanged, this, new PluginProgressEventArgs(value, max));
211        }
212
213        private void GuiLogMessage(string p,NotificationLevel notificationLevel)
214        {
215            EventsHelper.GuiLogMessage(OnGuiLogNotificationOccured, this, new GuiLogEventArgs(p, this, notificationLevel));
216        }
217
218        #endregion
219
220       
221    }
222}
Note: See TracBrowser for help on using the repository browser.