Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
03/30/17 16:58:44 (7 years ago)
Author:
mkommend
Message:

#2710: Merged r14432, r14494, r14706 into stable.

Location:
stable
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • stable

  • stable/HeuristicLab.Problems.DataAnalysis.Symbolic.Views

  • stable/HeuristicLab.Problems.DataAnalysis.Symbolic.Views/3.4/TreeEditDialogs/SymbolicExpressionTreeVariableNodeEditDialog.cs

    r14186 r14802  
    2222using System;
    2323using System.ComponentModel;
     24using System.Linq;
    2425using System.Text;
    2526using System.Windows.Forms;
     
    3334      get { return variableTreeNode; }
    3435      set {
    35         if (InvokeRequired)
    36           Invoke(new Action<SymbolicExpressionTreeNode>(x => variableTreeNode = (VariableTreeNode)x), value);
    37         else
     36        if (InvokeRequired) {
     37          Invoke(new Action<SymbolicExpressionTreeNode>(x =>
     38          {
     39            variableTreeNode = (VariableTreeNode) x;
     40            variableNameTextBox.Text = variableTreeNode.VariableName;
     41          }), value);
     42        } else {
    3843          variableTreeNode = value;
     44          variableNameTextBox.Text = variableTreeNode.VariableName;
     45        }
    3946      }
     47    }
     48
     49    public string SelectedVariableName {
     50      get { return variableNamesCombo.Visible ? variableNamesCombo.Text : variableNameTextBox.Text; }
    4051    }
    4152
     
    4354      InitializeComponent();
    4455      oldValueTextBox.TabStop = false; // cannot receive focus using tab key
    45 
    4656      NewNode = (VariableTreeNode)node; // will throw an invalid cast exception if node is not of the correct type
    4757      InitializeFields();
     
    5767        variableNameLabel.Visible = true;
    5868        variableNamesCombo.Visible = true;
    59         foreach (var name in variableTreeNode.Symbol.VariableNames) variableNamesCombo.Items.Add(name);
    60         variableNamesCombo.SelectedIndex = variableNamesCombo.Items.IndexOf(variableTreeNode.VariableName);
     69        if (variableTreeNode.Symbol.VariableNames.Any()) {
     70          foreach (var name in variableTreeNode.Symbol.VariableNames)
     71            variableNamesCombo.Items.Add(name);
     72          variableNamesCombo.SelectedIndex = variableNamesCombo.Items.IndexOf(variableTreeNode.VariableName);
     73          variableNamesCombo.Visible = true;
     74          variableNameTextBox.Visible = false;
     75        } else {
     76          variableNamesCombo.Visible = false;
     77          variableNameTextBox.Visible = true;
     78        }
    6179      }
    6280    }
     
    93111    #region combo box validation and events
    94112    private void variableNamesCombo_Validating(object sender, CancelEventArgs e) {
     113      if (variableNamesCombo.Items.Count == 0) return;
    95114      if (variableNamesCombo.Items.Contains(variableNamesCombo.SelectedItem)) return;
    96115      e.Cancel = true;
     
    119138    private void OnDialogValidated(object sender, EventArgs e) {
    120139      double weight = double.Parse(newValueTextBox.Text);
    121       var variableName = (string)variableNamesCombo.SelectedItem;
    122140      // we impose an extra validation condition: that the weight/value be different than the original ones
     141      var variableName = SelectedVariableName;
    123142      if (variableTreeNode.Weight.Equals(weight) && variableTreeNode.VariableName.Equals(variableName)) return;
    124143      variableTreeNode.Weight = weight;
Note: See TracChangeset for help on using the changeset viewer.