source: trunk/CrypPlugins/Appender/Appender.cs @ 1785

Last change on this file since 1785 was 1042, checked in by Sören Rinne, 12 years ago
  • bugfixing
  • replaced all licenses with the short version
File size: 5.9 KB
Line 
1/*
2   Copyright 2009 Sören Rinne, Ruhr-Universität Bochum, Germany
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;
21
22using Cryptool.PluginBase;
23using System.IO;
24using System.ComponentModel;
25using Cryptool.PluginBase.Cryptography;
26using Cryptool.PluginBase.IO;
27using System.Windows.Controls;
28using Cryptool.PluginBase.Miscellaneous;
29using System.Security.Cryptography;
30// for [MethodImpl(MethodImplOptions.Synchronized)]
31using System.Runtime.CompilerServices;
32
33namespace Cryptool.Appender
34{
35    [Author("Soeren Rinne", "soeren.rinne@cryptool.org", "Ruhr-Universitaet Bochum, Chair for System Security", "http://www.trust.rub.de/")]
36    [PluginInfo(false, "Appender", "Appends values", "Appender/DetailedDescription/Description.xaml", "Appender/Images/icon.png")]
37    public class Appender : IThroughput
38    {
39
40        #region Private variables
41
42        private AppenderSettings settings;
43        private object input = null;
44        private String output;
45
46        #endregion
47
48        #region Public variables
49        #endregion
50
51        #region Public interface
52
53        /// <summary>
54        /// Contructor
55        /// </summary>
56        public Appender()
57        {
58            this.settings = new AppenderSettings();
59        }
60
61        /// <summary>
62        /// Get or set all settings for this algorithm
63        /// </summary>
64        public ISettings Settings
65        {
66            get { return (ISettings)this.settings;
67            }
68            set { this.settings = (AppenderSettings)value;
69            }
70        }
71
72        [PropertyInfo(Direction.InputData, "Input", "Input objects to be appended", "", true, false, DisplayLevel.Beginner, QuickWatchFormat.Text, null)]
73        public object Input
74        {
75            get
76            {
77                return this.input;
78            }
79
80            set
81            {
82                this.input = value;
83                OnPropertyChanged("Input");
84            }
85        }
86
87        [PropertyInfo(Direction.OutputData, "Appended Output", "Output after appending the inputs", "", false, false, DisplayLevel.Beginner, QuickWatchFormat.Text, null)]
88        public String Output
89        {
90            [MethodImpl(MethodImplOptions.Synchronized)]
91            get
92            {
93                return output;
94            }
95            set
96            {   // is readonly
97            }
98        }
99
100        #endregion
101
102        #region IPlugin members
103
104        public void Initialize()
105        {           
106        }
107
108        public void Dispose()
109        {
110            output = "";
111        }
112
113        public UserControl Presentation
114        {
115            get { return null; }
116        }
117
118        public UserControl QuickWatchPresentation
119        {
120            get { return null; }
121        }
122
123        public void Stop()
124        {
125        }
126
127        public void PostExecution()
128        {
129            Dispose();
130        }
131
132        public void PreExecution()
133        {
134            Dispose();
135        }
136
137        #endregion
138
139        #region INotifyPropertyChanged Members
140
141        public event PropertyChangedEventHandler PropertyChanged;
142
143        public event StatusChangedEventHandler OnPluginStatusChanged;
144
145        public void OnPropertyChanged(string name)
146        {
147            if (PropertyChanged != null)
148            {
149                PropertyChanged(this, new PropertyChangedEventArgs(name));
150            }
151        }
152
153        #endregion
154
155        #region Private methods
156
157        #endregion
158
159        #region IPlugin Members
160
161        public event GuiLogNotificationEventHandler OnGuiLogNotificationOccured;
162        private void GuiLogMessage(string message, NotificationLevel logLevel)
163        {
164            EventsHelper.GuiLogMessage(OnGuiLogNotificationOccured, this, new GuiLogEventArgs(message, this, logLevel));
165        }
166
167        public event PluginProgressChangedEventHandler OnPluginProgressChanged;
168        private void ProgressChanged(double value, double max)
169        {
170            EventsHelper.ProgressChanged(OnPluginProgressChanged, this, new PluginProgressEventArgs(value, max));
171        }
172
173        public void Execute()
174        {
175            if (input is Boolean)
176            {
177                if ((bool)input)
178                    output += "1";
179                else
180                    output += "0";
181
182                OnPropertyChanged("Output");
183                ProgressChanged(1, 1);
184            }
185            else if (input is String)
186            {
187                output += input;
188                OnPropertyChanged("Output");
189                ProgressChanged(1, 1);
190            }
191            else
192            {
193                output = "Type not supported";
194                OnPropertyChanged("Output");
195                GuiLogMessage("Input can not be appended: Input type not supported. Supported types are Boolean and String", NotificationLevel.Error);
196            }
197        }
198
199        public void Pause()
200        {
201        }
202
203        private void StatusChanged(int imageIndex)
204        {
205            EventsHelper.StatusChanged(OnPluginStatusChanged, this, new StatusEventArgs(StatusChangedMode.ImageUpdate, imageIndex));
206        }
207
208        #endregion
209    }
210
211    #region Image
212
213    enum ANDImage
214    {
215        Default
216    }
217
218    #endregion
219}
Note: See TracBrowser for help on using the repository browser.