Ignore:
Timestamp:
04/15/10 01:34:27 (12 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/View.cs

    r3301 r3350  
    3131      this.isShown = false;
    3232      this.closeReason = CloseReason.None;
    33     }
    34 
    35     private string myCaption;
     33      this.readOnly = false;
     34    }
     35
     36    public View(bool readOnly)
     37      : this() {
     38      this.readOnly = readOnly;
     39    }
     40
     41    private string caption;
    3642    public string Caption {
    37       get { return myCaption; }
     43      get { return caption; }
    3844      set {
    3945        if (InvokeRequired) {
     
    4147          Invoke(action, value);
    4248        } else {
    43           if (value != myCaption) {
    44             myCaption = value;
     49          if (value != caption) {
     50            caption = value;
    4551            OnCaptionChanged();
     52          }
     53        }
     54      }
     55    }
     56
     57    private bool readOnly;
     58    public virtual bool ReadOnly {
     59      get { return this.readOnly; }
     60       set {
     61        if (InvokeRequired) {
     62          Action<bool> action = delegate(bool b) { this.ReadOnly = b; };
     63          Invoke(action, value);
     64        } else {
     65          if (value != readOnly) {
     66            readOnly = value;
     67            OnReadOnlyChanged();
    4668          }
    4769        }
     
    95117    public event EventHandler CaptionChanged;
    96118    protected virtual void OnCaptionChanged() {
    97       if (CaptionChanged != null)
    98         CaptionChanged(this, EventArgs.Empty);
    99     }
    100 
     119      if (InvokeRequired)
     120        Invoke((MethodInvoker)OnCaptionChanged);
     121      else {
     122        EventHandler handler = CaptionChanged;
     123        if (handler != null)
     124          handler(this, EventArgs.Empty);
     125      }
     126    }
     127    public event EventHandler ReadOnlyChanged;
     128    protected virtual void OnReadOnlyChanged() {
     129      if (InvokeRequired)
     130        Invoke((MethodInvoker)OnReadOnlyChanged);
     131      else {
     132        EventHandler handler = ReadOnlyChanged;
     133        if (handler != null)
     134          handler(this, EventArgs.Empty);
     135        foreach (Control control in this.Controls) {
     136          IView view = control as IView;
     137          if (view != null)
     138            view.ReadOnly = this.readOnly;
     139          ViewHost viewHost = control as ViewHost;
     140          if (viewHost != null)
     141            viewHost.ReadOnly = this.readOnly;
     142        }
     143      }
     144    }
    101145    public event EventHandler Changed;
    102146    protected virtual void OnChanged() {
    103147      if (InvokeRequired)
    104148        Invoke((MethodInvoker)OnChanged);
    105       else if (Changed != null)
    106         Changed(this, EventArgs.Empty);
     149      else {
     150        EventHandler handler = Changed;
     151        if (handler != null)
     152          handler(this, EventArgs.Empty);
     153      }
    107154    }
    108155
Note: See TracChangeset for help on using the changeset viewer.