source: trunk/CrypPlugins/WorkspaceManager/View/VisualComponents/TextInputWrapper.xaml.cs @ 1895

Last change on this file since 1895 was 1895, checked in by kopal, 11 years ago
  • removed Parent because it did not work well (have to implement new Parent concept)
  • TextModels (RichTextBox) data is now saved/loaded
File size: 5.9 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 System.Windows.Controls.Primitives;
16
17namespace WorkspaceManager.View.VisualComponents
18{
19    /// <summary>
20    /// Interaction logic for TextInputWrapper.xaml
21    /// </summary>
22    public partial class TextInputWrapper : UserControl
23    {
24        public event EventHandler<TextInputDeleteEventArgs> Delete;
25
26        public static readonly DependencyProperty IsSelectedProperty = DependencyProperty.Register("IsSelected", typeof(bool), typeof(TextInputWrapper));
27        public bool IsSelected
28        {
29            get
30            {
31                return (bool)base.GetValue(IsSelectedProperty);
32            }
33            set
34            {
35                base.SetValue(IsSelectedProperty, value);
36            }
37        }
38
39        public TextModel Model { get; set; }
40        public Point Position { get; set; }
41
42        private UserContentWrapper ContentParent;
43
44        public TextInputWrapper()
45        {
46            InitializeComponent();
47        }
48
49        public TextInputWrapper(Model.TextModel model, Point point, UserContentWrapper userContentWrapper)
50        {
51            InitializeComponent();
52            this.ParentPanel.PreviewMouseLeftButtonDown += new MouseButtonEventHandler(TextInputWrapper_PreviewMouseLeftButtonDown);
53            //this.MouseRightButtonDown += new MouseButtonEventHandler(TextInputWrapper_MouseRightButtonDown);
54            this.Loaded += new RoutedEventHandler(TextInputWrapper_Loaded);
55            this.DataContext = this;
56            this.Model = model;
57            this.Model.loadRTB(this.mainRTB);
58            this.mainRTB.TextChanged += MainRTBTextChanged;
59            this.Position = point;
60            this.ContentParent = userContentWrapper;
61            this.RenderTransform = new TranslateTransform(point.X, point.Y);           
62        }
63
64        /// <summary>
65        /// Serializes the content of the RTB to the TextModel and
66        /// sets the editor to HasChanges=true
67        ///
68        /// called if the RTB is changed
69        /// </summary>
70        /// <param name="sender"></param>
71        /// <param name="args"></param>
72        private void MainRTBTextChanged(object sender, TextChangedEventArgs args)
73        {
74            this.Model.saveRTB(this.mainRTB);           
75        }
76
77        void TextInputWrapper_Loaded(object sender, RoutedEventArgs e)
78        {
79            this.Width = Model.Width;
80            this.Height = Model.Height;
81            this.ParentPanel.IsEnabled = Model.IsEnabled;           
82        }
83
84        private void OverLayingControl_DragDelta_Move(object sender, DragDeltaEventArgs e)
85        {
86            (this.RenderTransform as TranslateTransform).X += e.HorizontalChange;
87            (this.RenderTransform as TranslateTransform).Y += e.VerticalChange;
88            Model.Position.X = (this.RenderTransform as TranslateTransform).X;
89            Model.Position.Y = (this.RenderTransform as TranslateTransform).Y;
90        }
91
92        private void delete()
93        {
94            if (this.Delete != null)
95                this.Delete.Invoke(this, new TextInputDeleteEventArgs { txt = this });
96        }
97
98        private void MenuItem_Click(object sender, RoutedEventArgs e)
99        {
100            this.delete();
101        }
102
103        private void MenuItem_Click_1(object sender, RoutedEventArgs e)
104        {
105            MenuItem item = sender as MenuItem;
106            if (this.ParentPanel.IsEnabled == true)
107            {
108                this.ParentPanel.IsEnabled = false;
109                this.Model.IsEnabled = false;
110                this.ContentParent.SelectedItem = null;
111                return;
112            }
113
114            if (this.ParentPanel.IsEnabled == false)
115            {
116                this.ParentPanel.IsEnabled = true;
117                this.Model.IsEnabled = true;
118                this.ContentParent.SelectedItem = this;
119                return;
120            }
121        }
122
123        void TextInputWrapper_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
124        {
125            this.ContentParent.SelectedItem = this;
126            this.IsSelected = true;
127        }
128
129        //void ImageWrapper_MouseRightButtonDown(object sender, MouseButtonEventArgs e)
130        //{
131        //    this.ContextMenu.PlacementTarget = this;
132        //    this.ContextMenu.IsOpen = true;
133        //}
134
135        private void IsEnabledChanged(object sender, DependencyPropertyChangedEventArgs e)
136        {
137            Panel panel = sender as Panel;
138            if (panel.IsEnabled == true)
139            {
140                FixUnfixMenuItem.Header = "Fix";
141                return;
142            }
143
144            if (panel.IsEnabled == false)
145            {
146                FixUnfixMenuItem.Header = "Unfix";
147                return;
148            }
149        }
150
151        private void Thumb_DragDelta(object sender, DragDeltaEventArgs e)
152        {
153            Thumb t = sender as Thumb;
154
155            if (t.Name == "BottomRightDelta")
156            {
157                if ((this.ActualHeight + e.VerticalChange) > 0)
158                    this.Height = this.ActualHeight + e.VerticalChange;
159
160                if ((this.ActualWidth + e.HorizontalChange) > 0)
161                    this.Width = this.ActualWidth + e.HorizontalChange;
162
163                Model.Height = this.ActualHeight;
164                Model.Width = this.ActualWidth;
165            }
166        }       
167    }
168
169    public class TextInputDeleteEventArgs : EventArgs
170    {
171        public TextInputWrapper txt;
172    }
173}
Note: See TracBrowser for help on using the repository browser.