source: trunk/CrypPlugins/BooleanOperators/BoolButton.cs @ 759

Last change on this file since 759 was 759, checked in by weyers, 12 years ago

added boolean button

File size: 5.6 KB
Line 
1using System;
2using System.Collections.Generic;
3using System.Linq;
4using System.Text;
5using System.Windows;
6using System.Windows.Controls;
7using System.ComponentModel;
8using System.Windows.Input;
9
10using Cryptool;
11using Cryptool.PluginBase;
12using Cryptool.PluginBase.Cryptography;
13using Cryptool.PluginBase.Miscellaneous;
14using Cryptool.Plugins.BooleanOperators;
15using Cryptool.PluginBase.IO;
16
17using BooleanOperators;
18
19
20
21
22
23namespace Cryptool.Plugins.BoolButton
24{
25    [Author("Julian Weyers", "julian.weyers@cryptool.org", "Uni Duisburg-Essen", "http://www.uni-duisburg-essen.de")]
26    [PluginInfo(true, "Boolean Button", "Boolean Button", "BooleanOperators/DetailedDescription/Description.xaml", "BooleanOperators/icons/false.png", "BooleanOperators/icons/true.png")]
27
28    public class BoolButton : IInput
29    {
30        private BoolButtonSettings settings;
31        private Boolean output = true;
32        private ButtonInputPresentation myButton;
33       
34        public BoolButton()
35        {
36            this.settings = new BoolButtonSettings();           
37           // this.settings.OnPluginStatusChanged += settings_OnPluginStatusChanged;
38            this.settings.PropertyChanged += settings_PropertyChanged;
39            myButton = new ButtonInputPresentation();
40            Presentation = myButton;
41            this.settings.PropertyChanged += myButton.ExecuteThisMethodWhenButtonIsClicked;
42       }
43
44       void settings_PropertyChanged(object sender, PropertyChangedEventArgs e)
45        {
46            if (myButton.c == true)
47            {
48                Output = false;
49                // as the setting is not changeable in play mode, there is no need to update Output property
50                //Output = (settings.Value == 1);
51
52                settings_OnPluginStatusChanged(this, new StatusEventArgs(StatusChangedMode.ImageUpdate, 1));
53            }
54            else 
55            {
56                Output = true;
57                settings_OnPluginStatusChanged(this, new StatusEventArgs(StatusChangedMode.ImageUpdate, 0));
58            }
59        }
60
61        [PropertyInfo(Direction.OutputData, "Output", "Output", "", false, false, DisplayLevel.Beginner, QuickWatchFormat.None, null)]
62       
63        public Boolean Output
64        {
65            get
66            {
67                return this.output;
68            }
69            set
70            {
71                this.output = value;
72                OnPropertyChange("Output");
73            }
74        }
75
76        #region IPlugin Member
77       
78       
79
80        public void Dispose()
81        {
82            //throw new NotImplementedException(); 
83        }
84
85        public void Execute()
86        {
87           
88            Output = true;
89            if (myButton.c == true)
90            {
91                Output = false;
92                settings_OnPluginStatusChanged(this, new StatusEventArgs(StatusChangedMode.ImageUpdate, 0));
93            }
94            if (myButton.c == false)
95            {
96                Output = true;
97                settings_OnPluginStatusChanged(this, new StatusEventArgs(StatusChangedMode.ImageUpdate, 1));
98            }
99            //Output = (settings.Value == 1);
100           
101            //settings_OnPluginStatusChanged(this, new StatusEventArgs(StatusChangedMode.ImageUpdate, settings.Value));
102
103            ProgressChanged(1, 1);
104        }
105
106        public void Initialize()
107        {
108            Output = true;
109            if (myButton.c == true)
110            {
111                Output = false;
112            }
113            if (myButton.c == false)
114            {
115                Output = true;
116            }
117            // not working, see ticket #80
118           // settings_OnPluginStatusChanged(this, new StatusEventArgs(StatusChangedMode.ImageUpdate, settings.Value));
119
120        }
121
122        public void Pause()
123        {
124        }
125
126        public void PostExecution()
127        {
128        }
129
130        public void PreExecution()
131        {
132        }
133
134        public UserControl Presentation
135        { 
136            get; 
137            private set; 
138        }
139
140        public System.Windows.Controls.UserControl QuickWatchPresentation
141        {
142           
143            get { return Presentation; }
144        }
145
146        public ISettings Settings
147        {
148            get { return this.settings; }
149            set { this.settings = (BoolButtonSettings)value; }
150        }
151
152        public void Stop()
153        {
154        }
155
156        #endregion
157
158        #region event handling
159
160        public event GuiLogNotificationEventHandler OnGuiLogNotificationOccured;
161        public event PluginProgressChangedEventHandler OnPluginProgressChanged;
162        public event StatusChangedEventHandler OnPluginStatusChanged;
163        public event PropertyChangedEventHandler PropertyChanged;
164
165        private void OnPropertyChange(String propertyname)
166        {
167            EventsHelper.PropertyChanged(PropertyChanged, this, new PropertyChangedEventArgs(propertyname));
168        }
169
170        private void settings_OnPluginStatusChanged(IPlugin sender, StatusEventArgs args)
171        {
172            if (OnPluginStatusChanged != null) OnPluginStatusChanged(this, args);
173        }
174
175        private void ProgressChanged(double value, double max)
176        {
177            EventsHelper.ProgressChanged(OnPluginProgressChanged, this, new PluginProgressEventArgs(value, max));
178        }
179
180        private void GuiLogMessage(string p, NotificationLevel notificationLevel)
181        {
182            EventsHelper.GuiLogMessage(OnGuiLogNotificationOccured, this, new GuiLogEventArgs(p, this, notificationLevel));
183        }
184
185        #endregion
186       
187    }
188}
Note: See TracBrowser for help on using the repository browser.