source: trunk/CrypPlugins/Variable/VariableStore.cs @ 2061

Last change on this file since 2061 was 587, checked in by Sven Rech, 12 years ago

added Variable plugin description

File size: 5.2 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
17using System;
18using System.Collections.Generic;
19using System.Linq;
20using System.Text;
21
22using Cryptool.PluginBase;
23using Cryptool.PluginBase.IO;
24using System.Collections;
25using Cryptool.PluginBase.Miscellaneous;
26using System.ComponentModel;
27
28namespace Cryptool.Plugins.Variable
29{
30    delegate void StoreVariable(string variable, object input);
31   
32    [Author("Sven Rech", "sven.rech@cryptool.org", "Uni Duisburg-Essen", "http://www.uni-due.de")]
33    [PluginInfo(false, "VariableStore", "Variable Store", "Variable/DetailedDescription/Description.xaml", "Variable/storeIcon.png")]
34    class VariableStore : IOutput
35    {
36        static public event StoreVariable OnVariableStore;
37
38        #region Private variables
39        private VariableSettings settings;       
40        private List<CryptoolStream> listCryptoolStreamOut = new List<CryptoolStream>();       
41        #endregion
42
43        public VariableStore()
44        {
45            this.settings = new VariableSettings();
46        }
47
48        public ISettings Settings
49        {
50            get { return settings; }
51            set { settings = (VariableSettings)value; }
52        }
53
54        #region Properties
55       
56        private Object storeObject = null;
57        [PropertyInfo(Direction.InputData, "Variable Store Object", "Object to be stored to the corresponding variable", "", DisplayLevel.Beginner)]
58        public Object VariableStoreObject
59        {
60            get
61            {
62                return storeObject;
63            }
64            set
65            {
66                storeObject = value;
67                OnPropertyChanged("VariableStoreObject");
68            }
69        }
70       
71        #endregion
72
73        #region IPlugin Members
74
75        public event StatusChangedEventHandler OnPluginStatusChanged;
76
77        public System.Windows.Controls.UserControl Presentation
78        {
79            get { return null; }
80        }
81
82        public System.Windows.Controls.UserControl QuickWatchPresentation
83        {
84            get { return null; }
85        }
86
87        public void PreExecution()
88        {
89            Dispose();
90        }
91
92        public void Execute()
93        {
94            if (settings.VariableName == "")
95            {
96                GuiLogMessage("The variable name may not be empty.", NotificationLevel.Error);
97                return;
98            }
99
100            if (storeObject == null)
101            {
102                GuiLogMessage("Object is null, not passing forward.", NotificationLevel.Info);
103                return;
104            }
105
106            ProgressChanged(0.5, 1.0);
107            if (storeObject is CryptoolStream)
108            {
109                CryptoolStream cs = new CryptoolStream();
110                cs.OpenRead((storeObject as CryptoolStream).FileName);
111                listCryptoolStreamOut.Add(cs);
112                if (OnVariableStore != null)
113                    OnVariableStore(settings.VariableName, cs);
114            }
115            else
116            {
117                if (OnVariableStore != null)
118                    OnVariableStore(settings.VariableName, storeObject);
119            }
120            ProgressChanged(1.0, 1.0);
121        }
122
123        public void PostExecution()
124        {
125            Dispose();
126        }
127
128        public void Pause()
129        {
130           
131        }
132
133        public void Stop()
134        {
135         
136        }
137
138        public void Initialize()
139        {
140           
141        }
142
143        public void Dispose()
144        {
145            foreach (CryptoolStream cs in listCryptoolStreamOut)
146                cs.Close();
147        }
148
149        public event GuiLogNotificationEventHandler OnGuiLogNotificationOccured;
150
151        private void GuiLogMessage(string p, NotificationLevel notificationLevel)
152        {
153            EventsHelper.GuiLogMessage(OnGuiLogNotificationOccured, this, new GuiLogEventArgs(p, this, notificationLevel));
154        }
155
156        public event PluginProgressChangedEventHandler OnPluginProgressChanged;
157
158        private void ProgressChanged(double value, double max)
159        {
160            EventsHelper.ProgressChanged(OnPluginProgressChanged, this, new PluginProgressEventArgs(value, max));
161        }
162
163        #endregion
164
165        #region INotifyPropertyChanged Members
166
167        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
168
169        private void OnPropertyChanged(string p)
170        {
171            EventsHelper.PropertyChanged(PropertyChanged, this, new PropertyChangedEventArgs(p));
172        }
173
174        #endregion
175    }
176}
Note: See TracBrowser for help on using the repository browser.