- Timestamp:
- 04/15/10 01:34:27 (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/sources/HeuristicLab.MainForm.WindowsForms/3.2/ViewHost.cs
r3281 r3350 28 28 namespace HeuristicLab.MainForm.WindowsForms { 29 29 public sealed partial class ViewHost : UserControl { 30 private Dictionary<Type, IView> cachedViews; 31 public ViewHost() { 32 InitializeComponent(); 33 viewType = null; 34 content = null; 35 cachedViews = new Dictionary<Type, IView>(); 36 Initialize(); 37 } 38 public ViewHost(bool readOnly) 39 : this() { 40 this.ReadOnly = readOnly; 41 } 42 30 43 private Type viewType; 31 44 public Type ViewType { … … 49 62 content = value; 50 63 viewContextMenuStrip.Item = content; 64 cachedViews.Clear(); 51 65 Initialize(); 52 66 } … … 59 73 this.SuspendRepaint(); 60 74 base.Enabled = value; 75 this.viewsLabel.Enabled = value; 61 76 this.ResumeRepaint(true); 62 77 } 63 78 } 79 private bool readOnly; 80 public bool ReadOnly { 81 get { return this.readOnly; } 82 set { 83 if (InvokeRequired) { 84 Action<bool> action = delegate(bool b) { this.ReadOnly = b; }; 85 Invoke(action, value); 86 } else { 87 if (value != readOnly) { 88 readOnly = value; 89 OnReadOnlyChanged(); 90 } 91 } 92 } 93 } 64 94 65 public ViewHost() { 66 InitializeComponent(); 67 viewType = null; 68 content = null; 69 Initialize(); 95 public event EventHandler ReadOnlyChanged; 96 private void OnReadOnlyChanged() { 97 if (InvokeRequired) 98 Invoke((MethodInvoker)OnReadOnlyChanged); 99 else { 100 EventHandler handler = ReadOnlyChanged; 101 if (handler != null) 102 handler(this, EventArgs.Empty); 103 foreach (IView view in cachedViews.Values) 104 view.ReadOnly = this.readOnly; 105 } 70 106 } 71 107 72 108 private void Initialize() { 73 109 viewsLabel.Visible = false; 74 viewsLabel.Enabled = false;75 viewContextMenuStrip.Enabled = false;76 messageLabel.Visible = false;77 78 110 viewPanel.Visible = false; 79 111 if (viewPanel.Controls.Count > 0) viewPanel.Controls[0].Dispose(); … … 81 113 82 114 if (Content != null) { 83 if (viewContextMenuStrip.Items.Count == 0) {115 if (viewContextMenuStrip.Items.Count == 0) 84 116 messageLabel.Visible = true; 85 } else {117 else 86 118 viewsLabel.Visible = true; 87 viewsLabel.Enabled = viewContextMenuStrip.Items.Count > 1;88 viewContextMenuStrip.Enabled = viewContextMenuStrip.Items.Count > 1; ;89 }90 119 91 120 if (!ViewCanShowContent(viewType, Content)) { … … 110 139 111 140 UpdateActiveMenuItem(); 112 Control view = (Control)MainFormManager.CreateView(viewType, Content); 113 viewPanel.Tag = view; 141 cachedViews.Clear(); 142 Control view = (Control)MainFormManager.CreateView(viewType, Content,ReadOnly); 143 cachedViews.Add(viewType, ((IView)view)); 114 144 view.Dock = DockStyle.Fill; 115 145 viewPanel.Controls.Add(view); … … 138 168 139 169 private void viewsLabel_DoubleClick(object sender, EventArgs e) { 140 MainFormManager.CreateView(viewType, Content ).Show();170 MainFormManager.CreateView(viewType, Content,ReadOnly).Show(); 141 171 } 142 172
Note: See TracChangeset
for help on using the changeset viewer.