Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
02/05/15 10:51:29 (9 years ago)
Author:
jkarder
Message:

#2211: merged r11450, r11466, r11483, r11514, r11515 and r11890 into stable
#2234: merged r11308, r11309, r11326, r11337, r11340, r11339, r11342, r11361, r11427, r11447, r11464, r11542, r11544, r11545, r11547, r11548 into stable
#2239: merged r11437, r11439 and r11472 into stable
#2262: merged r11436, r11440, r11471, r11474, r11477, r11479, r11480, r11605, r11657, r11721, r11734, r11735, r11787, r11788, r11789 and r11826 into stable

Location:
stable
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • stable

  • stable/HeuristicLab.Scripting.Views/3.3/ScriptView.cs

    r11170 r11907  
    3535  [Content(typeof(Script), true)]
    3636  public partial class ScriptView : NamedItemView {
     37    #region Properties
    3738    public new Script Content {
    3839      get { return (Script)base.Content; }
    3940      set { base.Content = value; }
    4041    }
     42
     43    public override bool ReadOnly {
     44      get { return codeEditor.ReadOnly || base.ReadOnly; }
     45      set { base.ReadOnly = codeEditor.ReadOnly = value; }
     46    }
     47
     48    public override bool Locked {
     49      get { return codeEditor.ReadOnly || base.Locked; }
     50      set { base.Locked = codeEditor.ReadOnly = value; }
     51    }
     52    #endregion
    4153
    4254    public ScriptView() {
     
    4759    protected override void RegisterContentEvents() {
    4860      base.RegisterContentEvents();
    49       Content.CodeChanged += ContentOnCodeChanged;
     61      Content.CodeChanged += Content_CodeChanged;
    5062    }
    5163
    5264    protected override void DeregisterContentEvents() {
    53       Content.CodeChanged -= ContentOnCodeChanged;
     65      Content.CodeChanged -= Content_CodeChanged;
    5466      base.DeregisterContentEvents();
    5567    }
    5668
    57     protected virtual void ContentOnCodeChanged(object sender, EventArgs e) {
    58       codeEditor.UserCode = Content.Code;
    59     }
    60 
     69    #region Overrides
    6170    protected override void OnContentChanged() {
    6271      base.OnContentChanged();
     
    6473        codeEditor.UserCode = string.Empty;
    6574      } else {
    66         codeEditor.UserCode = Content.Code;
     75        if (codeEditor.UserCode != Content.Code)
     76          codeEditor.UserCode = Content.Code;
    6777        foreach (var asm in Content.GetAssemblies())
    6878          codeEditor.AddAssembly(asm);
     
    8393      base.SetEnabledStateOfControls();
    8494      compileButton.Enabled = Content != null && !Locked && !ReadOnly;
    85       codeEditor.Enabled = Content != null && !Locked && !ReadOnly;
     95      codeEditor.Enabled = Content != null;
    8696    }
    8797
    88     protected virtual void CompileButtonOnClick(object sender, EventArgs e) {
    89       Compile();
    90     }
    91 
    92     protected virtual void CodeEditorOnTextEditorTextChanged(object sender, EventArgs e) {
    93       if (Content == null) return;
    94       Content.Code = codeEditor.UserCode;
    95     }
    9698    protected override bool ProcessCmdKey(ref Message msg, Keys keyData) {
    9799      switch (keyData) {
     
    103105      return base.ProcessCmdKey(ref msg, keyData);
    104106    }
     107    #endregion
    105108
    106109    public virtual bool Compile() {
     
    113116        outputTextBox.AppendText("Compilation succeeded.");
    114117        return true;
    115       } catch {
     118      } catch (InvalidOperationException) {
    116119        if (Content.CompileErrors.HasErrors) {
    117120          outputTextBox.AppendText("Compilation failed.");
     
    127130        ReadOnly = false;
    128131        Locked = false;
     132        codeEditor.Focus();
    129133        OnContentChanged();
    130134      }
    131135    }
    132136
     137    #region Helpers
    133138    protected virtual void ShowCompilationResults() {
    134139      if (Content.CompileErrors.Count == 0) return;
    135       var msgs = Content.CompileErrors.OfType<CompilerError>()
     140
     141      var messages = Content.CompileErrors.OfType<CompilerError>()
    136142                                      .OrderBy(x => x.IsWarning)
    137143                                      .ThenBy(x => x.Line)
    138144                                      .ThenBy(x => x.Column);
    139       foreach (var m in msgs) {
    140         var item = new ListViewItem();
     145
     146      foreach (var m in messages) {
     147        var item = new ListViewItem { Tag = m };
    141148        item.SubItems.AddRange(new[] {
    142149          m.IsWarning ? "Warning" : "Error",
     
    149156        errorListView.Items.Add(item);
    150157      }
     158
     159      codeEditor.ShowCompileErrors(Content.CompileErrors, ".cs");
     160
    151161      AdjustErrorListViewColumnSizes();
    152162    }
     
    157167        ch.Width = -2;
    158168    }
     169    #endregion
     170
     171    #region Event Handlers
     172    private void Content_CodeChanged(object sender, EventArgs e) {
     173      if (InvokeRequired)
     174        Invoke(new EventHandler(Content_CodeChanged), sender, e);
     175      else {
     176        codeEditor.UserCode = Content.Code;
     177      }
     178    }
     179
     180    private void compileButton_Click(object sender, EventArgs e) {
     181      Compile();
     182    }
     183
     184    private void codeEditor_TextEditorTextChanged(object sender, EventArgs e) {
     185      if (Content == null) return;
     186      Content.Code = codeEditor.UserCode;
     187    }
     188
     189    private void errorListView_MouseDoubleClick(object sender, MouseEventArgs e) {
     190      if (e.Button == MouseButtons.Left) {
     191        var item = errorListView.SelectedItems[0];
     192        var message = (CompilerError)item.Tag;
     193        codeEditor.ScrollToPosition(message.Line, message.Column);
     194        codeEditor.Focus();
     195      }
     196    }
     197    #endregion
    159198  }
    160199}
Note: See TracChangeset for help on using the changeset viewer.