Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
08/21/09 17:24:31 (15 years ago)
Author:
mkommend
Message:

added check to show every view only one time, second call of ShowView leads to focus of the view (ticket #716)

File:
1 edited

Legend:

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

    r2305 r2306  
    4545      if (InvokeRequired) Invoke((Action<IView>)ShowView, view);
    4646      else {
    47         base.ShowView(view);
    48         DockContent dockForm = new DockForm(view);
    49         dockForm.Activated += new EventHandler(DockFormActivated);
    50         dockForm.FormClosing += new FormClosingEventHandler(view.FormClosing);
    51         dockForm.FormClosed += new FormClosedEventHandler(DockFormClosed);
    52         foreach (IToolStripItem item in ToolStripItems)
    53           view.StateChanged += new EventHandler(item.ViewChanged);
    54         dockForm.Show(dockPanel);
     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.FormClosing += new FormClosingEventHandler(view.FormClosing);
     56          dockForm.FormClosed += new FormClosedEventHandler(DockFormClosed);
     57          foreach (IToolStripItem item in ToolStripItems)
     58            view.StateChanged += new EventHandler(item.ViewChanged);
     59          dockForm.Show(dockPanel);
     60        }
    5561      }
    5662    }
    5763
    5864    public override void CloseView(IView view) {
    59       DockForm dockform = null;
    60       IEnumerable<DockForm> dockforms;
    61 
    62       if (dockPanel.Documents.Count() != 0) {
    63         dockforms = dockPanel.Documents.Cast<DockForm>().Where(df => df.View == view);
    64         if (dockforms.Count() == 1)
    65           dockform = dockforms.Single();
    66       }
    67       if (dockPanel.FloatWindows.Count() != 0) {
    68         foreach (FloatWindow fw in dockPanel.FloatWindows) {
    69           foreach (DockContentCollection dc in fw.NestedPanes.Select(np => np.Contents)) {
    70             dockforms = dc.Cast<DockForm>().Where(df => df.View == view);
    71             if (dockforms.Count() == 1) {
    72               dockform = dockforms.Single();
    73               break;
    74             }
    75           }
    76         }
    77       }
    78       if (dockPanel.DockWindows.Count != 0) {
    79         foreach (DockWindow dw in dockPanel.DockWindows) {
    80           foreach (DockContentCollection dc in dw.NestedPanes.Select(np => np.Contents)) {
    81             dockforms = dc.Cast<DockForm>().Where(df => df.View == view);
    82             if (dockforms.Count() == 1) {
    83               dockform = dockforms.Single();
    84               break;
    85             }
    86           }
    87         }
    88       }
     65      DockForm dockform = FindForm(view);
    8966      if (dockform != null)
    9067        dockform.Close();
     
    10885      base.ActiveView = ((DockForm)sender).View;
    10986    }
     87
     88    protected DockForm FindForm(IView view) {
     89      IEnumerable<DockForm> dockforms;
     90
     91      if (dockPanel.Documents.Count() != 0) {
     92        dockforms = dockPanel.Documents.Cast<DockForm>().Where(df => df.View == view);
     93        if (dockforms.Count() == 1)
     94          return dockforms.Single();
     95      }
     96      if (dockPanel.FloatWindows.Count() != 0) {
     97        foreach (FloatWindow fw in dockPanel.FloatWindows) {
     98          foreach (DockContentCollection dc in fw.NestedPanes.Select(np => np.Contents)) {
     99            dockforms = dc.Cast<DockForm>().Where(df => df.View == view);
     100            if (dockforms.Count() == 1)
     101              return dockforms.Single();
     102          }
     103        }
     104      }
     105      if (dockPanel.DockWindows.Count != 0) {
     106        foreach (DockWindow dw in dockPanel.DockWindows) {
     107          foreach (DockContentCollection dc in dw.NestedPanes.Select(np => np.Contents)) {
     108            dockforms = dc.Cast<DockForm>().Where(df => df.View == view);
     109            if (dockforms.Count() == 1)
     110              return dockforms.Single();
     111          }
     112        }
     113      }
     114      return null;
     115    }
    110116  }
    111117}
Note: See TracChangeset for help on using the changeset viewer.