Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
01/21/15 10:12:08 (10 years ago)
Author:
jkarder
Message:

#2077: merged r11700:11806 back to trunk

Location:
trunk/sources
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/sources

  • trunk/sources/HeuristicLab.Scripting.Views/3.3/ScriptView.cs

    r11657 r11807  
    2222using System;
    2323using System.CodeDom.Compiler;
     24using System.Collections.Generic;
    2425using System.Drawing;
    2526using System.Globalization;
    2627using System.Linq;
     28using System.Reflection;
    2729using System.Windows.Forms;
     30using HeuristicLab.Common;
    2831using HeuristicLab.Common.Resources;
    2932using HeuristicLab.Core.Views;
     
    3538  [Content(typeof(Script), true)]
    3639  public partial class ScriptView : NamedItemView {
     40    private const string AssembliesLoadingMessage = "Loading Assemblies";
     41    private const string AssembliesUnloadingMessage = "Unloading Assemblies";
     42    private const int SilentAssemblyLoadingOperationLimit = 10;
     43
    3744    #region Properties
    3845    public new Script Content {
     
    7380        codeEditor.UserCode = string.Empty;
    7481      } else {
    75         if (codeEditor.UserCode != Content.Code)
    76           codeEditor.UserCode = Content.Code;
    77         foreach (var asm in Content.GetAssemblies())
    78           codeEditor.AddAssembly(asm);
     82        codeEditor.UserCode = Content.Code;
     83        codeEditor.AddAssembliesAsync(Content.GetAssemblies());
    7984        if (Content.CompileErrors == null) {
    8085          compilationLabel.ForeColor = SystemColors.ControlDarkDark;
     
    131136        Locked = false;
    132137        codeEditor.Focus();
    133         OnContentChanged();
    134138      }
    135139    }
     
    157161      }
    158162
    159       codeEditor.ShowCompileErrors(Content.CompileErrors, ".cs");
     163      codeEditor.ShowCompileErrors(Content.CompileErrors);
    160164
    161165      AdjustErrorListViewColumnSizes();
     
    167171        ch.Width = -2;
    168172    }
     173
     174    #region ProgressView
     175    private bool progressViewCreated;
     176
     177    private void AddProgressView(string progressMessage) {
     178      var mainForm = MainFormManager.GetMainForm<MainForm.WindowsForms.MainForm>();
     179      mainForm.AddOperationProgressToView(this, progressMessage);
     180      progressViewCreated = true;
     181    }
     182
     183    private void RemoveProgressView() {
     184      if (!progressViewCreated) return;
     185      var mainForm = MainFormManager.GetMainForm<MainForm.WindowsForms.MainForm>();
     186      mainForm.RemoveOperationProgressFromView(this);
     187      progressViewCreated = false;
     188    }
     189    #endregion
    169190    #endregion
    170191
    171192    #region Event Handlers
    172193    private void Content_CodeChanged(object sender, EventArgs e) {
    173       if (InvokeRequired)
    174         Invoke(new EventHandler(Content_CodeChanged), sender, e);
     194      if (InvokeRequired) Invoke((Action<object, EventArgs>)Content_CodeChanged, sender, e);
    175195      else {
    176196        codeEditor.UserCode = Content.Code;
     
    196216    }
    197217    #endregion
     218
     219    private void codeEditor_AssembliesLoading(object sender, EventArgs<IEnumerable<Assembly>> e) {
     220      if (InvokeRequired) Invoke((Action<object, EventArgs<IEnumerable<Assembly>>>)codeEditor_AssembliesLoading, sender, e);
     221      else {
     222        int nrOfAssemblies = e.Value.Count();
     223        if (nrOfAssemblies > SilentAssemblyLoadingOperationLimit)
     224          AddProgressView(AssembliesLoadingMessage);
     225      }
     226    }
     227
     228    private void codeEditor_AssembliesLoaded(object sender, EventArgs<IEnumerable<Assembly>> e) {
     229      if (InvokeRequired) Invoke((Action<object, EventArgs<IEnumerable<Assembly>>>)codeEditor_AssembliesLoaded, sender, e);
     230      else {
     231        RemoveProgressView();
     232      }
     233    }
     234
     235    private void codeEditor_AssembliesUnloading(object sender, EventArgs<IEnumerable<Assembly>> e) {
     236      if (InvokeRequired) Invoke((Action<object, EventArgs<IEnumerable<Assembly>>>)codeEditor_AssembliesUnloading, sender, e);
     237      else {
     238        int nrOfAssemblies = e.Value.Count();
     239        if (nrOfAssemblies > SilentAssemblyLoadingOperationLimit)
     240          AddProgressView(AssembliesUnloadingMessage);
     241      }
     242    }
     243
     244    private void codeEditor_AssembliesUnloaded(object sender, EventArgs<IEnumerable<Assembly>> e) {
     245      if (InvokeRequired) Invoke((Action<object, EventArgs<IEnumerable<Assembly>>>)codeEditor_AssembliesUnloaded, sender, e);
     246      else {
     247        RemoveProgressView();
     248      }
     249    }
    198250  }
    199251}
Note: See TracChangeset for help on using the changeset viewer.