source: trunk/CrypPlugins/LengthOf/LengthOf.cs @ 710

Last change on this file since 710 was 710, checked in by arnold, 12 years ago

Wiki week task: LengthOf (get length of string or array)

File size: 5.1 KB
Line 
1using System;
2using System.Collections.Generic;
3using System.Linq;
4using System.Text;
5using Cryptool;
6using Cryptool.PluginBase.IO;
7using Cryptool.PluginBase;
8using Cryptool.PluginBase.Miscellaneous;
9using System.ComponentModel;
10
11// Currently this PlugIn accepts every Array-Type, string and byte. In other cases a GuiMessage.Error is thrown.
12namespace Cryptool.Plugins.LengthOf
13{
14    [Author("Christian Arnold", "christian.arnold@stud.uni-due.de", "Uni Duisburg-Essen", "http://www.uni-due.de")]
15    [PluginInfo(false, "LengthOf", "Operates the Length of an input", "", "LengthOf/LenOf.png")]
16    public class LengthOf : IThroughput
17    {
18        private LengthOfSettings settings = new LengthOfSettings();
19
20        private object objInput = null;
21        private int outputLen = 0;
22
23
24        #region IPlugin Members
25
26        public void Execute()
27        {
28            if (ObjInput != null)
29            {
30                Type typeInput = ObjInput.GetType();
31                if (typeInput.IsArray)
32                {
33                    OutputLen = (ObjInput as Array).Length;
34                    GuiLogMessage("Object is an array. Length: " + OutputLen, NotificationLevel.Info);
35                }
36                else //no array
37                {
38                    if (ObjInput is string)
39                    {
40                        string sInput = objInput as String;
41                        OutputLen = sInput.Length;
42                    }
43                    else if (ObjInput is byte)
44                    {
45                        string sInput2 = ((byte)objInput).ToString();
46                        OutputLen = sInput2.Length;
47                    }
48                    else
49                    {
50                        GuiLogMessage("Inputtype not handled!", NotificationLevel.Error);
51                    }
52                    //switch (typeInput.ToString())
53                    //{
54                    //    case "System.String":
55                    //        string sInput = objInput as String;
56                    //        OutputLen = sInput.Length;
57                    //        break;
58                    //    case "System.Byte":
59                    //        string sInput2 = ((byte)objInput).ToString();
60                    //        OutputLen = sInput2.Length;
61                    //        break;
62                    //    default:
63                    //        GuiLogMessage("Inputtype not handled!", NotificationLevel.Error);
64                    //        //throw new Exception("Inputtype not handled!");
65                    //        break;
66                    //}
67                    GuiLogMessage("Object isn't an array. Length: " + OutputLen, NotificationLevel.Info);
68                }
69            }
70        }
71
72        [PropertyInfo(Direction.InputData, "Object Input", "Input your Object here", "", true, false, DisplayLevel.Beginner, QuickWatchFormat.Text, null)]
73        public object ObjInput
74        {
75            get
76            {
77                return objInput;
78            }
79            set
80            {
81                this.objInput = value;
82                OnPropertyChanged("ObjInput");
83            }
84        }
85
86        [PropertyInfo(Direction.OutputData, "Integer Output", "The Length of your Object will be send here", "", DisplayLevel.Beginner)]
87        public int OutputLen
88        {
89            get
90            {
91                return outputLen;
92            }
93            set
94            {
95                this.outputLen = value;
96                OnPropertyChanged("OutputLen");
97            }
98        }
99
100        public void Dispose()
101        {
102        }
103
104        public void Initialize()
105        {
106        }
107
108        public event GuiLogNotificationEventHandler OnGuiLogNotificationOccured;
109
110        public event PluginProgressChangedEventHandler OnPluginProgressChanged;
111        public event StatusChangedEventHandler OnPluginStatusChanged;
112
113        public void Pause()
114        {
115        }
116
117        public void PostExecution()
118        {
119        }
120
121        public void PreExecution()
122        {
123        }
124
125        public System.Windows.Controls.UserControl Presentation
126        {
127            get { return null; }
128        }
129
130        public System.Windows.Controls.UserControl QuickWatchPresentation
131        {
132            get { return null; }
133        }
134
135        public Cryptool.PluginBase.ISettings Settings
136        {
137            get { return this.settings; }
138            set { this.settings = (LengthOfSettings)value; }
139        }
140
141        public void Stop()
142        {
143
144        }
145
146        #endregion
147
148        #region INotifyPropertyChanged Members
149
150        public event PropertyChangedEventHandler PropertyChanged;
151
152        public void OnPropertyChanged(string name)
153        {
154            EventsHelper.PropertyChanged(PropertyChanged, this, new PropertyChangedEventArgs(name));
155        }
156
157        private void GuiLogMessage(string p, NotificationLevel notificationLevel)
158        {
159            EventsHelper.GuiLogMessage(OnGuiLogNotificationOccured, this, new GuiLogEventArgs(p, this, notificationLevel));
160        }
161        #endregion
162    }
163}
Note: See TracBrowser for help on using the repository browser.