Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
10/20/09 15:34:02 (15 years ago)
Author:
mkommend
Message:

refactored mainform (ticket #771)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/Mainform refactoring/HeuristicLab.MainForm.WindowsForms/3.2/DockingMainForm.cs

    r2434 r2443  
    4242    }
    4343
    44     public override void ShowView(IView view) {
    45       if (InvokeRequired) Invoke((Action<IView>)ShowView, view);
     44    public override bool ShowView(IView view) {
     45      if (InvokeRequired) return (bool)Invoke((Func<IView, bool>)ShowView, view);
    4646      else {
    47         if (views.Contains(view)) {
    48           DockForm dockform = FindForm(view);
    49           if (dockform != null)
    50             dockform.Activate();
    51         } else {
    52           base.ShowView(view);
    53           DockContent dockForm = new DockForm(view);
    54           dockForm.Activated += new EventHandler(DockFormActivated);
    55           dockForm.GotFocus += new EventHandler(DockFormActivated);
    56           dockForm.FormClosing += new FormClosingEventHandler(view.OnClosing);
    57           dockForm.FormClosed += new FormClosedEventHandler(view.OnClosed);
    58           dockForm.FormClosed += new FormClosedEventHandler(DockFormClosed);
    59           foreach (IUserInterfaceItem item in UserInterfaceItems)
    60             view.Changed += new EventHandler(item.ViewChanged);
    61           dockForm.Show(dockPanel);
    62         }
     47        bool ret = base.ShowView(view);
     48        if (ret)
     49          ((DockForm)GetForm(view)).Show(dockPanel);
     50        else
     51          ((DockForm)GetForm(view)).Activate();
     52        return ret;
     53      }
     54    }
     55    public override void HideView(IView view) {
     56      if (InvokeRequired) Invoke((Action<IView>)HideView, view);
     57      else {
     58        Form form = base.GetForm(view);
     59        if (form != null)
     60          ((DockForm)form).Hide();
    6361      }
    6462    }
    6563
    66     public override void CloseView(IView view) {
    67       if (InvokeRequired) Invoke((Action<IView>)CloseView, view);
    68       else {
    69         DockForm dockform = FindForm(view);
    70         if (dockform != null)
    71           dockform.Close();
    72       }
     64    protected override Form CreateForm(IView view) {
     65      return new DockForm(view);
    7366    }
    7467
    75     private void DockFormClosed(object sender, FormClosedEventArgs e) {
    76       DockForm dockForm = (DockForm)sender;
    77       ViewClosed(dockForm.View);
    78       dockForm.Activated -= new EventHandler(DockFormActivated);
    79       dockForm.GotFocus -= new EventHandler(DockFormActivated);
    80       dockForm.FormClosing -= new FormClosingEventHandler(dockForm.View.OnClosing);
    81       dockForm.FormClosed -= new FormClosedEventHandler(dockForm.View.OnClosed);
    82       dockForm.FormClosed -= new FormClosedEventHandler(DockFormClosed);
    83       foreach (IUserInterfaceItem item in UserInterfaceItems)
    84         dockForm.View.Changed -= new EventHandler(item.ViewChanged);
    85     }
    86 
    87     private void DockFormActivated(object sender, EventArgs e) {
    88       base.ActiveView = ((DockForm)sender).View;
    89     }
    90 
    91     protected DockForm FindForm(IView view) {
    92       IEnumerable<DockForm> dockforms;
    93 
    94       dockforms = from df in dockPanel.Documents
    95                   where ((DockForm)df).View == view
    96                   select (DockForm)df;
    97       if (dockforms.Count() == 1)
    98         return dockforms.Single();
    99 
    100       dockforms = from fw in dockPanel.FloatWindows
    101                   from np in fw.NestedPanes
    102                   from dc in np.Contents
    103                   where ((DockForm)dc).View == view
    104                   select (DockForm)dc;
    105       if (dockforms.Count() == 1)
    106         return dockforms.Single();
    107 
    108       dockforms = from dw in dockPanel.DockWindows
    109                   from np in dw.NestedPanes
    110                   from dc in np.Contents
    111                   where ((DockForm)dc).View == view
    112                   select (DockForm)dc;
    113       if (dockforms.Count() == 1)
    114         return dockforms.Single();
    115 
    116       return null;
    117     }
    11868  }
    11969}
Note: See TracChangeset for help on using the changeset viewer.