Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
04/15/10 01:34:27 (14 years ago)
Author:
mkommend
Message:

implemented first version of View.ReadOnly and adapted some views to the new mechanism (ticket #973)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/sources/HeuristicLab.MainForm.WindowsForms/3.2/ViewHost.cs

    r3281 r3350  
    2828namespace HeuristicLab.MainForm.WindowsForms {
    2929  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
    3043    private Type viewType;
    3144    public Type ViewType {
     
    4962          content = value;
    5063          viewContextMenuStrip.Item = content;
     64          cachedViews.Clear();
    5165          Initialize();
    5266        }
     
    5973        this.SuspendRepaint();
    6074        base.Enabled = value;
     75        this.viewsLabel.Enabled = value;
    6176        this.ResumeRepaint(true);
    6277      }
    6378    }
     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    }
    6494
    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      }
    70106    }
    71107
    72108    private void Initialize() {
    73109      viewsLabel.Visible = false;
    74       viewsLabel.Enabled = false;
    75       viewContextMenuStrip.Enabled = false;
    76       messageLabel.Visible = false;
    77 
    78110      viewPanel.Visible = false;
    79111      if (viewPanel.Controls.Count > 0) viewPanel.Controls[0].Dispose();
     
    81113
    82114      if (Content != null) {
    83         if (viewContextMenuStrip.Items.Count == 0) {
     115        if (viewContextMenuStrip.Items.Count == 0)
    84116          messageLabel.Visible = true;
    85         } else {
     117         else
    86118          viewsLabel.Visible = true;
    87           viewsLabel.Enabled = viewContextMenuStrip.Items.Count > 1;
    88           viewContextMenuStrip.Enabled = viewContextMenuStrip.Items.Count > 1; ;
    89         }
    90119
    91120        if (!ViewCanShowContent(viewType, Content)) {
     
    110139
    111140      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));
    114144      view.Dock = DockStyle.Fill;
    115145      viewPanel.Controls.Add(view);
     
    138168
    139169    private void viewsLabel_DoubleClick(object sender, EventArgs e) {
    140       MainFormManager.CreateView(viewType, Content).Show();
     170      MainFormManager.CreateView(viewType, Content,ReadOnly).Show();
    141171    }
    142172
Note: See TracChangeset for help on using the changeset viewer.