source: trunk/CrypPlugins/SubByteArray/SubByteArray.cs @ 766

Last change on this file since 766 was 766, checked in by malischewski, 12 years ago

SubByteArray-Plugin

File size: 6.9 KB
Line 
1/*                             
2   Copyright 2009 Team CrypTool (Simon Malischewski), 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*/
16using System;
17using System.Collections.Generic;
18using System.Linq;
19using System.Text;
20
21using Cryptool;
22using Cryptool.PluginBase;
23using Cryptool.PluginBase.IO;
24using Cryptool.PluginBase.Miscellaneous;
25using System.ComponentModel;
26using Cryptool.Plugins.SubbyteArrayCryptoolStream;
27
28
29namespace Cryptool.Plugins.SubByteArrayCryptoolStream
30{
31    [Author("Simon Malischewski", "malischewski@cryptool.org", "Uni Duisburg-Essen", "http://wwww.uni-due.de")]
32    [PluginInfo(false, "SubByteArray", "SubByteArray", "SubByteArray/DetailedDescription/Description.xaml", "SubByteArrayCryptoolStream/icon.png")]
33    public class SubByteArrayCryptoolStream : IThroughput
34    {
35        #region Private variables
36
37        private Cryptool.Plugins.SubbyteArrayCryptoolStream.SubByteArrayCryptoolStreamSettings settings;
38        private byte[] inputDataBytes;
39
40        private byte[] outputData;
41        private List<CryptoolStream> listCryptoolStreamsOut = new List<CryptoolStream>();
42
43        #endregion
44
45        public SubByteArrayCryptoolStream()
46        {
47            this.settings = new SubByteArrayCryptoolStreamSettings();
48        }
49
50        public ISettings Settings
51        {
52            get { return this.settings; }
53            set { this.settings = (SubByteArrayCryptoolStreamSettings)value; }
54        }
55
56        public event GuiLogNotificationEventHandler OnGuiLogNotificationOccured;
57        private void GuiLogMessage(string message, NotificationLevel logLevel)
58        {
59            EventsHelper.GuiLogMessage(OnGuiLogNotificationOccured, this, new GuiLogEventArgs(message, this, logLevel));
60        }
61
62        public event PropertyChangedEventHandler PropertyChanged;
63        public void OnPropertyChanged(string name)
64        {
65            EventsHelper.PropertyChanged(PropertyChanged, this, new PropertyChangedEventArgs(name));
66        }
67
68
69        [PropertyInfo(Direction.InputData, "Input ByteArray", "Input ByteArray", "", true, false, DisplayLevel.Beginner, QuickWatchFormat.Hex, null)]
70        public byte[] InputDataBytes
71        {
72            get
73            {
74                if (inputDataBytes != null)
75                {
76                    return this.inputDataBytes;
77                }
78                return null;
79            }
80            set
81            {
82                this.inputDataBytes = value;
83                OnPropertyChanged("InputDataBytes");
84            }
85        }
86
87        [PropertyInfo(Direction.InputData, "Start Index of ByteArray", "Start Index of ByteArray", "", false, false, DisplayLevel.Beginner, QuickWatchFormat.Text, null)]
88        public int Start
89        {
90            get { return this.settings.Start; }
91            set
92            {
93                this.settings.Start = value;
94                this.settings.GetTaskPaneAttributeChanged();
95            }
96        }
97        [PropertyInfo(Direction.InputData, "End Index of ByteArray", "End Index of ByteArray", "", false, false, DisplayLevel.Beginner, QuickWatchFormat.Text, null)]
98        public int End
99        {
100            get { return this.settings.End; }
101            set
102            {
103                this.settings.End = value;
104                this.settings.GetTaskPaneAttributeChanged();
105            }
106        }
107
108
109        [PropertyInfo(Direction.OutputData, "Resulting ByteArray", "Resulting ByteArray", "", false, false, DisplayLevel.Beginner, QuickWatchFormat.Hex, null)]
110        public byte[] OutputData
111        {
112            get
113            {
114                return this.outputData;
115            }
116
117
118            set
119            {
120                outputData = value;
121                OnPropertyChanged("OutputData");
122            }
123        }
124
125
126        #region IPlugin Member
127
128
129
130
131
132        public System.Windows.Controls.UserControl Presentation
133        {
134            get { return null; }
135        }
136
137        public System.Windows.Controls.UserControl QuickWatchPresentation
138        {
139            get { return null; }
140        }
141
142        public void PreExecution()
143        {
144            if (inputDataBytes != null)
145            {
146                //Settings.setArrayLength(inputDataBytes.Length);
147            }
148        }
149
150        public void Execute()
151        {
152           
153                int start = this.settings.Start;
154                int end = this.settings.End;
155               
156                if (this.inputDataBytes != null)
157                {
158                    if ((end <= this.inputDataBytes.Length - 1) && (start <= this.inputDataBytes.Length - 1) && (end >= start)) // Check for valid Start/End Index
159                    {
160                        this.outputData = new byte[(end - start)+1];
161                       
162                        int CurrentOutputIndex = 0;
163                        while (start <= end)
164                        {
165
166                            this.outputData[CurrentOutputIndex] = this.inputDataBytes[start];
167                            start++;
168                            CurrentOutputIndex++;
169                           
170                        }
171
172                        OnPropertyChanged("OutputData");
173                        settings.GetTaskPaneAttributeChanged();
174
175                    }
176                    else
177                    {
178                        GuiLogMessage("Invalid Start or End Index of ByteArray", NotificationLevel.Warning);
179                        settings.Start = 0;
180                        settings.End = 0;
181                    }
182                }
183                else
184                {
185                    GuiLogMessage("Received Null-ByteArray..", NotificationLevel.Error);
186                }
187
188           
189           
190        }
191
192        public void PostExecution()
193        {
194           
195        }
196
197        public void Pause()
198        {
199 
200        }
201
202        public void Stop()
203        {
204           
205        }
206
207        public void Initialize()
208        {
209
210        }
211
212        public void Dispose()
213        {
214           
215        }
216
217        #endregion
218
219
220
221        #region IPlugin Member
222
223        public event StatusChangedEventHandler OnPluginStatusChanged;
224
225        public event PluginProgressChangedEventHandler OnPluginProgressChanged;
226
227        #endregion
228    }
229}
Note: See TracBrowser for help on using the repository browser.