source: trunk/CrypPlugins/WorkspaceManager/View/Container/IControlPlaceHolder.xaml.cs @ 2396

Last change on this file since 2396 was 2396, checked in by matkovic, 11 years ago

-small fix

File size: 5.3 KB
Line 
1using System;
2using System.Collections.Generic;
3using System.Linq;
4using System.Text;
5using System.Windows;
6using System.Windows.Controls;
7using System.Windows.Data;
8using System.Windows.Documents;
9using System.Windows.Input;
10using System.Windows.Media;
11using System.Windows.Media.Imaging;
12using System.Windows.Navigation;
13using System.Windows.Shapes;
14using WorkspaceManager.Model;
15using Cryptool.PluginBase.Editor;
16using WorkspaceManager.View.Converter;
17using Cryptool.PluginBase;
18
19namespace WorkspaceManager.View.Container
20{
21    /// <summary>
22    /// Interaction logic for IControlPlaceHolder.xaml
23    /// </summary>
24    public partial class IControlPlaceHolder : UserControl
25    {
26        public PluginModel PluginModel
27        {
28            get { return (PluginModel)GetValue(PluginModelProperty); }
29            set
30            {
31                SetValue(PluginModelProperty, value);
32                bg.DataContext = PluginModel;
33            }
34        }
35
36        public static readonly DependencyProperty PluginModelProperty =
37           DependencyProperty.Register(
38           "PluginModel",
39           typeof(PluginModel),
40           typeof(IControlPlaceHolder),
41           null);
42
43        public ConnectorModel Model
44        {
45            get { return (ConnectorModel)GetValue(ModelProperty); }
46            set 
47            { 
48                SetValue(ModelProperty, value); 
49            }
50        }
51
52        public static readonly DependencyProperty ModelProperty =
53           DependencyProperty.Register(
54           "Model",
55           typeof(ConnectorModel),
56           typeof(IControlPlaceHolder),
57           null);
58
59        public IControlPlaceHolder()
60        {
61            InitializeComponent();
62            this.MouseEnter += new MouseEventHandler(IControlPlaceHolder_MouseEnter);
63            this.MouseLeave += new MouseEventHandler(IControlPlaceHolder_MouseLeave);
64            this.MouseLeftButtonDown += new MouseButtonEventHandler(IControlPlaceHolder_MouseLeftButtonDown);
65            this.Loaded += new RoutedEventHandler(IControlPlaceHolder_Loaded);
66            this.Drop +=new DragEventHandler(IControlPlaceHolder_Drop);
67            bg.DataContext = PluginModel;
68        }
69
70        void IControlPlaceHolder_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
71        {
72            if (!e.Handled && PluginModel != null)
73            {
74                PluginChangedEventArgs args = new PluginChangedEventArgs(PluginModel.Plugin, PluginModel.Name, DisplayPluginMode.Normal);
75                this.Model.WorkspaceModel.WorkspaceManagerEditor.onSelectedPluginChanged(args);
76                e.Handled = true;
77            }
78        }
79
80        void IControlPlaceHolder_Loaded(object sender, RoutedEventArgs e)
81        {
82            bg.DataContext = PluginModel;
83            this.ToolTip = Model.Name;
84        }
85
86        void IControlPlaceHolder_MouseLeave(object sender, MouseEventArgs e)
87        {
88            SolidColorBrush color = (SolidColorBrush)this.Resources["Color"];
89            color.Color = Colors.Black;
90        }
91
92        void IControlPlaceHolder_MouseEnter(object sender, MouseEventArgs e)
93        {
94            SolidColorBrush color = (SolidColorBrush)this.Resources["Color"];
95            color.Color = Colors.White;
96        }
97
98        void  IControlPlaceHolder_Drop(object sender, DragEventArgs e)
99        {
100                if (this.Model.WorkspaceModel.WorkspaceEditor.State == EditorState.READY)
101            {
102                if (e.Data.GetDataPresent("Cryptool.PluginBase.Editor.DragDropDataObject"))
103                {
104                    try
105                    {
106                        DragDropDataObject obj = e.Data.GetData("Cryptool.PluginBase.Editor.DragDropDataObject") as DragDropDataObject;
107                        PluginModel pluginModel = this.Model.WorkspaceModel.newPluginModel(DragDropDataObjectToPluginConverter.CreatePluginInstance(obj.AssemblyFullName, obj.TypeFullName));
108                        if (obj != null)
109                        {
110                            foreach (ConnectorModel mod in pluginModel.InputConnectors)
111                            {
112                                if (mod.IControl && mod.ConnectorType.Name == Model.ConnectorType.Name)
113                                {
114                                    this.PluginModel = pluginModel;
115                                    break;
116                                }
117                            }
118                        }
119
120                        this.Model.WorkspaceModel.WorkspaceManagerEditor.HasChanges = true;
121                    }
122                    catch (Exception ex)
123                    {
124                        this.Model.WorkspaceModel.WorkspaceManagerEditor.GuiLogMessage("Could not add Plugin to Workspace:" + ex.Message, NotificationLevel.Error);
125                        this.Model.WorkspaceModel.WorkspaceManagerEditor.GuiLogMessage(ex.StackTrace, NotificationLevel.Error);
126                        return;
127                    }
128                }
129                else
130                    return;
131            }
132
133            e.Handled = true;
134        }
135
136        private void MenuItem_Click(object sender, RoutedEventArgs e)
137        {
138            Model.WorkspaceModel.deletePluginModel(PluginModel);
139            PluginModel = null;
140        }
141    }
142}
Note: See TracBrowser for help on using the repository browser.