Changeset 2800


Ignore:
Timestamp:
02/15/10 14:58:07 (11 years ago)
Author:
swagner
Message:

Operator architecture refactoring (#95)

  • minor changes in ViewHost
Location:
trunk/sources/HeuristicLab.Core.Views/3.3
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/sources/HeuristicLab.Core.Views/3.3/ViewHost.Designer.cs

    r2790 r2800  
    109109    #endregion
    110110
    111     protected System.Windows.Forms.Panel viewPanel;
    112     protected System.Windows.Forms.Label viewsLabel;
    113     protected System.Windows.Forms.Label messageLabel;
    114     protected System.Windows.Forms.ContextMenuStrip contextMenuStrip;
    115     protected System.Windows.Forms.ToolTip toolTip;
     111    private System.Windows.Forms.Panel viewPanel;
     112    private System.Windows.Forms.Label viewsLabel;
     113    private System.Windows.Forms.Label messageLabel;
     114    private System.Windows.Forms.ContextMenuStrip contextMenuStrip;
     115    private System.Windows.Forms.ToolTip toolTip;
    116116
    117117  }
  • trunk/sources/HeuristicLab.Core.Views/3.3/ViewHost.cs

    r2797 r2800  
    3232
    3333namespace HeuristicLab.Core.Views {
    34   public partial class ViewHost : UserControl {
     34  public sealed partial class ViewHost : UserControl {
    3535    private Dictionary<Type, ToolStripMenuItem> typeMenuItemTable;
     36
    3637    public IEnumerable<Type> AvailableViewTypes {
    3738      get { return typeMenuItemTable.Keys; }
     39    }
     40
     41    private Type viewType;
     42    public Type ViewType {
     43      get { return this.viewType; }
     44      set {
     45        if (!ViewCanShowContent(value, content))
     46          throw new ArgumentException(string.Format("View \"{0}\" cannot display content \"{1}\".",
     47                                                    value.GetPrettyName(),
     48                                                    content.GetType().GetPrettyName()));
     49        viewType = value;
     50        UpdateView();
     51      }
    3852    }
    3953
     
    4963    }
    5064
    51     private Type viewType;
    52     public Type ViewType {
    53       get { return this.viewType; }
    54       set {
    55         if (!ViewTypeCanShowContent(value, content))
    56           throw new ArgumentException(string.Format("View \"{0}\" cannot display content \"{1}\".",
    57                                                     value.GetPrettyName(),
    58                                                     content.GetType().GetPrettyName()));
    59         viewType = value;
    60         ShowView();
    61       }
    62     }
    63 
    6465    public ViewHost() {
    6566      typeMenuItemTable = new Dictionary<Type, ToolStripMenuItem>();
     
    7071    }
    7172
    72     private void ShowView() {
    73       if (viewPanel.Controls.Count > 0) viewPanel.Controls[0].Dispose();
    74       viewPanel.Controls.Clear();
    75 
    76       if (viewType == null || content == null)
    77         return;
    78 
    79       if (!ViewTypeCanShowContent(viewType, content) || !typeMenuItemTable.ContainsKey(viewType))
    80         throw new ArgumentException(string.Format("View \"{0}\" cannot display content \"{1}\".",
    81                                                   viewType.GetPrettyName(),
    82                                                   Content.GetType().GetPrettyName()));
    83 
    84       foreach (ToolStripMenuItem item in typeMenuItemTable.Values) {
    85         item.Checked = false;
    86         item.Enabled = true;
    87       }
    88       typeMenuItemTable[viewType].Checked = true;
    89       typeMenuItemTable[viewType].Enabled = false;
    90 
    91       Control view = (Control)MainFormManager.CreateView(viewType, Content);
    92       viewPanel.Controls.Add(view);
    93       viewPanel.Tag = view;
    94       view.Dock = DockStyle.Fill;
    95       viewPanel.Enabled = true;
    96       viewPanel.Visible = true;
    97     }
    98 
    99     protected virtual void Initialize() {
     73    private void Initialize() {
    10074      viewsLabel.Enabled = false;
    10175      viewsLabel.Visible = false;
     
    130104        }
    131105
    132         if (!ViewTypeCanShowContent(viewType, Content)) {
     106        if (!ViewCanShowContent(viewType, Content)) {
    133107          viewType = MainFormManager.GetDefaultViewType(Content.GetType());
    134108          if ((viewType == null) && (contextMenuStrip.Items.Count > 0))  // create first available view if default view is not available
    135109            viewType = (Type)contextMenuStrip.Items[0].Tag;
    136110        }
    137         ShowView();
     111        UpdateView();
    138112      }
    139113    }
    140114
    141     private bool ViewTypeCanShowContent(Type viewType, object content) {
     115    private void UpdateView() {
     116      if (viewPanel.Controls.Count > 0) viewPanel.Controls[0].Dispose();
     117      viewPanel.Controls.Clear();
     118
     119      if (viewType == null || content == null)
     120        return;
     121
     122      if (!ViewCanShowContent(viewType, content) || !typeMenuItemTable.ContainsKey(viewType))
     123        throw new ArgumentException(string.Format("View \"{0}\" cannot display content \"{1}\".",
     124                                                  viewType.GetPrettyName(),
     125                                                  Content.GetType().GetPrettyName()));
     126
     127      foreach (ToolStripMenuItem item in typeMenuItemTable.Values) {
     128        item.Checked = false;
     129        item.Enabled = true;
     130      }
     131      typeMenuItemTable[viewType].Checked = true;
     132      typeMenuItemTable[viewType].Enabled = false;
     133
     134      Control view = (Control)MainFormManager.CreateView(viewType, Content);
     135      viewPanel.Controls.Add(view);
     136      viewPanel.Tag = view;
     137      view.Dock = DockStyle.Fill;
     138      viewPanel.Enabled = true;
     139      viewPanel.Visible = true;
     140    }
     141
     142    private bool ViewCanShowContent(Type viewType, object content) {
    142143      if (content == null) // every view can display null
    143144        return true;
     
    150151      MainFormManager.CreateView(viewPanel.Tag.GetType(), Content).Show();
    151152    }
    152     protected void contextMenuStrip_ItemClicked(object sender, ToolStripItemClickedEventArgs e) {
     153    private void contextMenuStrip_ItemClicked(object sender, ToolStripItemClickedEventArgs e) {
    153154      Type viewType = (Type)e.ClickedItem.Tag;
    154155      ViewType = viewType;
    155       ShowView();
    156156    }
    157157  }
Note: See TracChangeset for help on using the changeset viewer.