Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
07/18/14 13:44:53 (10 years ago)
Author:
ascheibe
Message:

merged rest of trunk into hive statistics branch

Location:
branches/HiveStatistics/sources
Files:
12 edited

Legend:

Unmodified
Added
Removed
  • branches/HiveStatistics/sources

  • branches/HiveStatistics/sources/HeuristicLab.MainForm.WindowsForms/3.3/Controls/ControlExtensions.cs

    r11203 r11205  
    11#region License Information
    22/* HeuristicLab
    3  * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
     3 * Copyright (C) 2002-2014 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
    44 *
    55 * This file is part of HeuristicLab.
     
    2121
    2222using System;
     23using System.Collections.Generic;
    2324using System.Runtime.InteropServices;
    2425using System.Windows.Forms;
     
    4546      }
    4647    }
     48
     49    public static IEnumerable<Control> GetNestedControls(this Control control, Func<Control, bool> condition = null) {
     50      if (control == null) yield break;
     51      if (condition == null) condition = (c) => true;
     52
     53      Queue<Control> unprocessed = new Queue<Control>();
     54      unprocessed.Enqueue(control);
     55
     56      while (unprocessed.Count > 0) {
     57        Control c = unprocessed.Dequeue();
     58        if (condition(c)) yield return c;
     59        foreach (Control child in c.Controls)
     60          unprocessed.Enqueue(child);
     61      }
     62    }
    4763  }
    4864}
  • branches/HiveStatistics/sources/HeuristicLab.MainForm.WindowsForms/3.3/Controls/DragOverTabControl.Designer.cs

    r11203 r11205  
    11#region License Information
    22/* HeuristicLab
    3  * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
     3 * Copyright (C) 2002-2014 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
    44 *
    55 * This file is part of HeuristicLab.
  • branches/HiveStatistics/sources/HeuristicLab.MainForm.WindowsForms/3.3/Controls/DragOverTabControl.cs

    r11203 r11205  
    11#region License Information
    22/* HeuristicLab
    3  * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
     3 * Copyright (C) 2002-2014 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
    44 *
    55 * This file is part of HeuristicLab.
  • branches/HiveStatistics/sources/HeuristicLab.MainForm.WindowsForms/3.3/Controls/ProgressView.cs

    r11203 r11205  
    11#region License Information
    22/* HeuristicLab
    3  * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
     3 * Copyright (C) 2002-2014 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
    44 *
    55 * This file is part of HeuristicLab.
     
    2121
    2222using System;
    23 using System.ComponentModel;
    2423using System.Windows.Forms;
    2524
    2625namespace HeuristicLab.MainForm.WindowsForms {
    27   [View("ProgressView")]
    28   [Content(typeof(IProgress), true)]
    29   public partial class ProgressView : AsynchronousContentView {
    30     private const int DefaultCancelTimeoutMs = 3000;
    31     private ContentView parentView;
     26  internal sealed partial class ProgressView : UserControl {
     27    private const int defaultControlHeight = 88;
     28    private const int collapsedControlHeight = 55;
    3229
    33     [Category("Custom"), Description("The time that the process is allowed to exit.")]
    34     [DefaultValue(DefaultCancelTimeoutMs)]
    35     public int CancelTimeoutMs { get; set; }
    36     private bool ShouldSerializeCancelTimeoutMs() { return CancelTimeoutMs != DefaultCancelTimeoutMs; }
    37 
    38     public new IProgress Content {
    39       get { return (IProgress)base.Content; }
    40       set { base.Content = value; }
     30    private readonly Control control;
     31    public Control Control {
     32      get { return control; }
    4133    }
    4234
    43     public ProgressView() {
    44       InitializeComponent();
    45     }
    46     public ProgressView(IProgress progress)
    47       : this() {
    48       Content = progress;
    49     }
    50     public ProgressView(ContentView parentView)
    51       : this() {
    52       if (parentView == null) throw new ArgumentNullException("parentView", "The parent view is null.");
    53       this.parentView = parentView;
    54     }
    55     public ProgressView(ContentView parentView, IProgress progress)
    56       : this(parentView) {
    57       Content = progress;
     35    private readonly IProgress content;
     36    public IProgress Content {
     37      get { return content; }
    5838    }
    5939
    60     protected override void RegisterContentEvents() {
    61       Content.StatusChanged += new EventHandler(progress_StatusChanged);
    62       Content.ProgressValueChanged += new EventHandler(progress_ProgressValueChanged);
    63       Content.ProgressStateChanged += new EventHandler(Content_ProgressStateChanged);
    64       Content.CanBeCanceledChanged += new EventHandler(Content_CanBeCanceledChanged);
    65       base.RegisterContentEvents();
     40    public ProgressView(Control control, IProgress content)
     41      : base() {
     42      if (control == null) throw new ArgumentNullException("control", "The control is null.");
     43      if (content == null) throw new ArgumentNullException("content", "The passed progress is null.");
     44      InitializeComponent();
     45
     46      this.control = control;
     47      this.content = content;
     48      if (content.ProgressState == ProgressState.Started)
     49        ShowProgress();
     50      RegisterContentEvents();
    6651    }
    6752
    68     protected override void DeregisterContentEvents() {
    69       base.DeregisterContentEvents();
    70       Content.StatusChanged -= new EventHandler(progress_StatusChanged);
    71       Content.ProgressValueChanged -= new EventHandler(progress_ProgressValueChanged);
    72       Content.ProgressStateChanged -= new EventHandler(Content_ProgressStateChanged);
    73       Content.CanBeCanceledChanged -= new EventHandler(Content_CanBeCanceledChanged);
     53    /// <summary>
     54    /// Clean up any resources being used.
     55    /// </summary>
     56    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
     57    protected override void Dispose(bool disposing) {
     58      DeregisterContentEvents();
     59      HideProgress();
     60
     61      if (disposing && (components != null)) {
     62        components.Dispose();
     63      }
     64      base.Dispose(disposing);
    7465    }
    7566
    76     protected override void OnContentChanged() {
    77       base.OnContentChanged();
    78       if (Content == null) {
    79         HideProgress();
    80       } else {
    81         if (Content.ProgressState == ProgressState.Started)
    82           ShowProgress();
    83       }
     67    private void RegisterContentEvents() {
     68      content.StatusChanged += new EventHandler(progress_StatusChanged);
     69      content.ProgressValueChanged += new EventHandler(progress_ProgressValueChanged);
     70      content.ProgressStateChanged += new EventHandler(Content_ProgressStateChanged);
     71      content.CanBeCanceledChanged += new EventHandler(Content_CanBeCanceledChanged);
    8472    }
    85 
    86     protected override void SetEnabledStateOfControls() {
    87       base.SetEnabledStateOfControls();
    88       cancelButton.Visible = Content != null && Content.CanBeCanceled;
    89       cancelButton.Enabled = Content != null && Content.CanBeCanceled && !ReadOnly;
     73    private void DeregisterContentEvents() {
     74      content.StatusChanged -= new EventHandler(progress_StatusChanged);
     75      content.ProgressValueChanged -= new EventHandler(progress_ProgressValueChanged);
     76      content.ProgressStateChanged -= new EventHandler(Content_ProgressStateChanged);
     77      content.CanBeCanceledChanged -= new EventHandler(Content_CanBeCanceledChanged);
    9078    }
    9179
    9280    private void ShowProgress() {
    93       if (InvokeRequired) Invoke((Action)ShowProgress);
    94       else {
    95         if (parentView != null) {
    96           this.Left = (parentView.ClientRectangle.Width / 2) - (this.Width / 2);
    97           this.Top = (parentView.ClientRectangle.Height / 2) - (this.Height / 2);
    98           this.Anchor = AnchorStyles.None;
     81      if (Control.InvokeRequired) {
     82        Control.Invoke((Action)ShowProgress);
     83        return;
     84      }
     85      int height = Content.CanBeCanceled ? Height : collapsedControlHeight;
    9986
    100           LockBackground();
     87      Left = (Control.ClientRectangle.Width / 2) - (Width / 2);
     88      Top = (Control.ClientRectangle.Height / 2) - (height / 2);
     89      Anchor = AnchorStyles.None;
    10190
    102           if (!parentView.Controls.Contains(this))
    103             parentView.Controls.Add(this);
     91      control.Enabled = false;
     92      Parent = Control.Parent;
     93      BringToFront();
    10494
    105           BringToFront();
    106         }
    107         UpdateProgressValue();
    108         UpdateProgressStatus();
    109         Visible = true;
    110       }
     95      UpdateProgressValue();
     96      UpdateProgressStatus();
     97      UpdateCancelButton();
     98      Visible = true;
    11199    }
    112100
     
    114102      if (InvokeRequired) Invoke((Action)HideProgress);
    115103      else {
    116         if (parentView != null) {
    117           if (parentView.Controls.Contains(this))
    118             parentView.Controls.Remove(this);
    119 
    120           UnlockBackground();
    121         }
     104        control.Enabled = true;
     105        Parent = null;
    122106        Visible = false;
    123107      }
     
    133117
    134118    private void Content_ProgressStateChanged(object sender, EventArgs e) {
    135       if (Content.ProgressState == ProgressState.Finished
    136         || Content.ProgressState == ProgressState.Canceled)
    137         HideProgress();
    138       if (Content.ProgressState == ProgressState.Started)
    139         ShowProgress();
     119      switch (content.ProgressState) {
     120        case ProgressState.Finished: HideProgress(); break;
     121        case ProgressState.Canceled: HideProgress(); break;
     122        case ProgressState.Started: ShowProgress(); break;
     123        default: throw new NotSupportedException("The progress state " + content.ProgressState + " is not supported by the ProgressView.");
     124      }
    140125    }
    141126
    142127    private void Content_CanBeCanceledChanged(object sender, EventArgs e) {
    143       SetEnabledStateOfControls();
     128      UpdateCancelButton();
    144129    }
    145130
    146     private void LockBackground() {
    147       if (InvokeRequired) {
    148         Invoke((Action)LockBackground);
    149       } else {
    150         parentView.Locked = true;
    151         parentView.ReadOnly = true;
    152         Locked = false;
    153         ReadOnly = false;
    154       }
    155     }
     131    private void UpdateCancelButton() {
     132      cancelButton.Visible = content != null && content.CanBeCanceled;
     133      cancelButton.Enabled = content != null && content.CanBeCanceled;
    156134
    157     private void UnlockBackground() {
    158       if (InvokeRequired) Invoke((Action)UnlockBackground);
    159       else {
    160         parentView.Locked = false;
    161         parentView.ReadOnly = false;
    162         Locked = true;
    163         ReadOnly = true;
     135      if (content != null && content.CanBeCanceled) {
     136        Height = defaultControlHeight;
     137      } else if (content != null && !content.CanBeCanceled) {
     138        Height = collapsedControlHeight;
    164139      }
    165140    }
     
    168143      if (InvokeRequired) Invoke((Action)UpdateProgressValue);
    169144      else {
    170         if (Content != null) {
    171           double progressValue = Content.ProgressValue;
     145        if (content != null) {
     146          double progressValue = content.ProgressValue;
    172147          if (progressValue <= 0.0 || progressValue > 1.0) {
    173             if (progressBar.Style != ProgressBarStyle.Marquee)
    174               progressBar.Style = ProgressBarStyle.Marquee;
     148            progressBar.Style = ProgressBarStyle.Marquee;
    175149          } else {
    176             if (progressBar.Style != ProgressBarStyle.Blocks)
    177               progressBar.Style = ProgressBarStyle.Blocks;
     150            progressBar.Style = ProgressBarStyle.Blocks;
    178151            progressBar.Value = (int)Math.Round(progressBar.Minimum + progressValue * (progressBar.Maximum - progressBar.Minimum));
    179152          }
     
    184157    private void UpdateProgressStatus() {
    185158      if (InvokeRequired) Invoke((Action)UpdateProgressStatus);
    186       else if (Content != null)
    187         statusLabel.Text = Content.Status;
     159      else if (content != null)
     160        statusLabel.Text = content.Status;
    188161    }
    189162
    190163    private void cancelButton_Click(object sender, EventArgs e) {
    191       if (Content != null) {
    192         try {
    193           Content.Cancel(CancelTimeoutMs);
    194           ReadOnly = true;
    195           cancelButtonTimer.Interval = CancelTimeoutMs;
    196           cancelButtonTimer.Start();
    197         } catch (NotSupportedException nse) {
    198           PluginInfrastructure.ErrorHandling.ShowErrorDialog(nse);
    199         }
    200       }
    201     }
    202 
    203     private void cancelButtonTimer_Tick(object sender, EventArgs e) {
    204       cancelButtonTimer.Stop();
    205       if (Visible) ReadOnly = false;
     164      content.Cancel();
    206165    }
    207166  }
  • branches/HiveStatistics/sources/HeuristicLab.MainForm.WindowsForms/3.3/Controls/ProgressView.designer.cs

    r11203 r11205  
    11#region License Information
    22/* HeuristicLab
    3  * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
     3 * Copyright (C) 2002-2014 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
    44 *
    55 * This file is part of HeuristicLab.
     
    2727    private System.ComponentModel.IContainer components = null;
    2828
    29     /// <summary>
    30     /// Clean up any resources being used.
    31     /// </summary>
    32     /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
    33     protected override void Dispose(bool disposing) {
    34       if (disposing && (components != null)) {
    35         components.Dispose();
    36       }
    37       base.Dispose(disposing);
    38     }
    39 
     29   
    4030    #region Component Designer generated code
    4131
     
    4535    /// </summary>
    4636    private void InitializeComponent() {
    47       this.components = new System.ComponentModel.Container();
    4837      this.progressBar = new System.Windows.Forms.ProgressBar();
    4938      this.statusLabel = new System.Windows.Forms.Label();
    5039      this.cancelButton = new System.Windows.Forms.Button();
    5140      this.panel = new System.Windows.Forms.Panel();
    52       this.cancelButtonTimer = new System.Windows.Forms.Timer(this.components);
    5341      this.panel.SuspendLayout();
    5442      this.SuspendLayout();
     
    5644      // progressBar
    5745      //
    58       this.progressBar.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
    59                   | System.Windows.Forms.AnchorStyles.Right)));
     46      this.progressBar.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
     47            | System.Windows.Forms.AnchorStyles.Right)));
    6048      this.progressBar.Location = new System.Drawing.Point(3, 3);
    6149      this.progressBar.Name = "progressBar";
     
    6654      // statusLabel
    6755      //
    68       this.statusLabel.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
    69                   | System.Windows.Forms.AnchorStyles.Right)));
     56      this.statusLabel.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
     57            | System.Windows.Forms.AnchorStyles.Right)));
    7058      this.statusLabel.Location = new System.Drawing.Point(3, 33);
    7159      this.statusLabel.Name = "statusLabel";
     
    8674      // panel
    8775      //
    88       this.panel.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
    89                   | System.Windows.Forms.AnchorStyles.Right)));
     76      this.panel.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
     77            | System.Windows.Forms.AnchorStyles.Left)
     78            | System.Windows.Forms.AnchorStyles.Right)));
    9079      this.panel.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
    9180      this.panel.Controls.Add(this.progressBar);
     
    9685      this.panel.Size = new System.Drawing.Size(360, 88);
    9786      this.panel.TabIndex = 3;
    98       //
    99       // cancelButtonTimer
    100       //
    101       this.cancelButtonTimer.Tick += new System.EventHandler(this.cancelButtonTimer_Tick);
    10287      //
    10388      // ProgressView
     
    118103    private System.Windows.Forms.Button cancelButton;
    119104    private System.Windows.Forms.Panel panel;
    120     private System.Windows.Forms.Timer cancelButtonTimer;
    121105  }
    122106}
  • branches/HiveStatistics/sources/HeuristicLab.MainForm.WindowsForms/3.3/Controls/Sidebar.Designer.cs

    r11203 r11205  
    11#region License Information
    22/* HeuristicLab
    3  * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
     3 * Copyright (C) 2002-2014 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
    44 *
    55 * This file is part of HeuristicLab.
  • branches/HiveStatistics/sources/HeuristicLab.MainForm.WindowsForms/3.3/Controls/Sidebar.cs

    r11203 r11205  
    11#region License Information
    22/* HeuristicLab
    3  * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
     3 * Copyright (C) 2002-2014 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
    44 *
    55 * This file is part of HeuristicLab.
  • branches/HiveStatistics/sources/HeuristicLab.MainForm.WindowsForms/3.3/Controls/ViewContextMenuStrip.Designer.cs

    r11203 r11205  
    11#region License Information
    22/* HeuristicLab
    3  * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
     3 * Copyright (C) 2002-2014 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
    44 *
    55 * This file is part of HeuristicLab.
  • branches/HiveStatistics/sources/HeuristicLab.MainForm.WindowsForms/3.3/Controls/ViewContextMenuStrip.cs

    r11203 r11205  
    11#region License Information
    22/* HeuristicLab
    3  * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
     3 * Copyright (C) 2002-2014 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
    44 *
    55 * This file is part of HeuristicLab.
  • branches/HiveStatistics/sources/HeuristicLab.MainForm.WindowsForms/3.3/Controls/ViewHost.Designer.cs

    r11203 r11205  
    11#region License Information
    22/* HeuristicLab
    3  * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
     3 * Copyright (C) 2002-2014 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
    44 *
    55 * This file is part of HeuristicLab.
     
    5151      this.toolTip = new System.Windows.Forms.ToolTip(this.components);
    5252      this.configurationLabel = new System.Windows.Forms.Label();
     53      this.helpLabel = new System.Windows.Forms.Label();
    5354      this.SuspendLayout();
    5455      //
     
    7374      this.viewsLabel.Size = new System.Drawing.Size(16, 16);
    7475      this.viewsLabel.TabIndex = 0;
    75       this.toolTip.SetToolTip(this.viewsLabel,
    76         "Double-click to open a new window of the current view." + System.Environment.NewLine +
    77         "Right-click to change current view." + System.Environment.NewLine +
    78         "Drag icon to copy or link content to another view.");
     76      this.toolTip.SetToolTip(this.viewsLabel, "Double-click to open a new window of the current view.\r\nRight-click to change cur" +
     77        "rent view.\r\nDrag icon to copy or link content to another view.");
    7978      this.viewsLabel.DoubleClick += new System.EventHandler(this.viewsLabel_DoubleClick);
    8079      this.viewsLabel.MouseDown += new System.Windows.Forms.MouseEventHandler(this.viewsLabel_MouseDown);
     
    102101      this.configurationLabel.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.configurationLabel_DoubleClick);
    103102      //
     103      // helpLabel
     104      //
     105      this.helpLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
     106      this.helpLabel.Image = HeuristicLab.Common.Resources.VSImageLibrary.Help;
     107      this.helpLabel.Location = new System.Drawing.Point(211, 44);
     108      this.helpLabel.Margin = new System.Windows.Forms.Padding(6, 3, 3, 3);
     109      this.helpLabel.Name = "helpLabel";
     110      this.helpLabel.Size = new System.Drawing.Size(16, 16);
     111      this.helpLabel.TabIndex = 3;
     112      this.toolTip.SetToolTip(this.helpLabel, "Double-click to open help.");
     113      this.helpLabel.Visible = false;
     114      this.helpLabel.DoubleClick += new System.EventHandler(this.helpLabel_DoubleClick);
     115      //
    104116      // ViewHost
    105117      //
    106118      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
    107119      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Inherit;
     120      this.Controls.Add(this.helpLabel);
    108121      this.Controls.Add(this.viewsLabel);
    109122      this.Controls.Add(this.configurationLabel);
     
    121134    private HeuristicLab.MainForm.WindowsForms.ViewContextMenuStrip viewContextMenuStrip;
    122135    private System.Windows.Forms.Label configurationLabel;
     136    private System.Windows.Forms.Label helpLabel;
    123137
    124138  }
  • branches/HiveStatistics/sources/HeuristicLab.MainForm.WindowsForms/3.3/Controls/ViewHost.cs

    r11203 r11205  
    11#region License Information
    22/* HeuristicLab
    3  * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
     3 * Copyright (C) 2002-2014 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
    44 *
    55 * This file is part of HeuristicLab.
     
    103103          configurationLabel.Visible = activeView is IConfigureableView;
    104104          configurationLabel.Enabled = activeView != null && !activeView.Locked;
     105
     106          helpLabel.Visible = activeView != null && ViewAttribute.HasHelpResourcePath(activeView.GetType());
     107          helpLabel.Top = CalculateHelpLabelPosY();
    105108        }
    106109      }
     
    210213      viewsLabel.Location = new Point(Width - viewsLabel.Margin.Right - viewsLabel.Width, viewsLabel.Margin.Top);
    211214      configurationLabel.Location = new Point(Width - configurationLabel.Margin.Right - configurationLabel.Width, viewsLabel.Bottom + viewsLabel.Margin.Bottom + configurationLabel.Margin.Top);
    212 
     215      helpLabel.Location = new Point(Width - helpLabel.Margin.Right - helpLabel.Width, CalculateHelpLabelPosY());
     216    }
     217
     218    private int CalculateHelpLabelPosY() {
     219      if (activeView != null && ViewAttribute.HasHelpResourcePath(activeView.GetType()) && !configurationLabel.Visible) {
     220        return configurationLabel.Top;
     221      }
     222      return configurationLabel.Bottom + configurationLabel.Margin.Bottom + helpLabel.Margin.Top;
    213223    }
    214224
     
    302312      ((IConfigureableView)ActiveView).ShowConfiguration();
    303313    }
     314
     315    private void helpLabel_DoubleClick(object sender, EventArgs e) {
     316      using (InfoBox dialog = new InfoBox("Help for " + ViewAttribute.GetViewName(ActiveView.GetType()), ViewAttribute.GetHelpResourcePath(ActiveView.GetType()), ActiveView)) {
     317        dialog.ShowDialog(this);
     318      }
     319    }
    304320    #endregion
    305321  }
Note: See TracChangeset for help on using the changeset viewer.