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

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

Edited description, added Progress change

File size: 7.2 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", "SubByteArray/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        public event PluginProgressChangedEventHandler OnPluginProcessChanged;
69
70        private void ProgressChanged(double value, double max)
71        {
72            EventsHelper.ProgressChanged(OnPluginProgressChanged, this, new PluginProgressEventArgs(value, max));
73        }
74
75        [PropertyInfo(Direction.InputData, "Input ByteArray", "Input ByteArray", "", true, false, DisplayLevel.Beginner, QuickWatchFormat.Hex, null)]
76        public byte[] InputDataBytes
77        {
78            get
79            {
80                if (inputDataBytes != null)
81                {
82                    return this.inputDataBytes;
83                }
84                return null;
85            }
86            set
87            {
88                this.inputDataBytes = value;
89                OnPropertyChanged("InputDataBytes");
90            }
91        }
92
93        [PropertyInfo(Direction.InputData, "Start Index of ByteArray", "Start Index of ByteArray", "", false, false, DisplayLevel.Beginner, QuickWatchFormat.Text, null)]
94        public int Start
95        {
96            get { return this.settings.Start; }
97            set
98            {
99                this.settings.Start = value;
100                this.settings.GetTaskPaneAttributeChanged();
101            }
102        }
103        [PropertyInfo(Direction.InputData, "End Index of ByteArray", "End Index of ByteArray", "", false, false, DisplayLevel.Beginner, QuickWatchFormat.Text, null)]
104        public int End
105        {
106            get { return this.settings.End; }
107            set
108            {
109                this.settings.End = value;
110                this.settings.GetTaskPaneAttributeChanged();
111            }
112        }
113
114
115        [PropertyInfo(Direction.OutputData, "Resulting ByteArray", "Resulting ByteArray", "", false, false, DisplayLevel.Beginner, QuickWatchFormat.Hex, null)]
116        public byte[] OutputData
117        {
118            get
119            {
120                return this.outputData;
121            }
122
123
124            set
125            {
126                outputData = value;
127                OnPropertyChanged("OutputData");
128            }
129        }
130
131
132        #region IPlugin Member
133
134
135
136
137
138        public System.Windows.Controls.UserControl Presentation
139        {
140            get { return null; }
141        }
142
143        public System.Windows.Controls.UserControl QuickWatchPresentation
144        {
145            get { return null; }
146        }
147
148        public void PreExecution()
149        {
150            if (inputDataBytes != null)
151            {
152                //Settings.setArrayLength(inputDataBytes.Length);
153            }
154        }
155
156        public void Execute()
157        {
158           
159                int start = this.settings.Start;
160                int end = this.settings.End;
161               
162                if (this.inputDataBytes != null)
163                {
164                    if ((end <= this.inputDataBytes.Length - 1) && (start <= this.inputDataBytes.Length - 1) && (end >= start)) // Check for valid Start/End Index
165                    {
166                        this.outputData = new byte[(end - start)+1];
167                       
168                        int CurrentOutputIndex = 0;
169                        while (start <= end)
170                        {
171
172                            this.outputData[CurrentOutputIndex] = this.inputDataBytes[start];
173                            start++;
174                            CurrentOutputIndex++;
175                           
176                        }
177                        ProgressChanged(1.0, 1.0);
178                        OnPropertyChanged("OutputData");
179                        settings.GetTaskPaneAttributeChanged();
180
181                    }
182                    else
183                    {
184                        GuiLogMessage("Invalid Start or End Index of ByteArray", NotificationLevel.Warning);
185                        settings.Start = 0;
186                        settings.End = 0;
187                    }
188                }
189                else
190                {
191                    GuiLogMessage("Received Null-ByteArray..", NotificationLevel.Error);
192                }
193
194           
195           
196        }
197
198        public void PostExecution()
199        {
200           
201        }
202
203        public void Pause()
204        {
205 
206        }
207
208        public void Stop()
209        {
210           
211        }
212
213        public void Initialize()
214        {
215
216        }
217
218        public void Dispose()
219        {
220           
221        }
222
223        #endregion
224
225
226
227        #region IPlugin Member
228
229        public event StatusChangedEventHandler OnPluginStatusChanged;
230
231        public event PluginProgressChangedEventHandler OnPluginProgressChanged;
232
233        #endregion
234    }
235}
Note: See TracBrowser for help on using the repository browser.