private void UpdateOperatorAndValue() { if (PropertySelectorStack.Count == 0) { operatorCombo.Visible = false; valueComboBox.Visible = false; valueTextBox.Visible = false; return; } var pc = PropertySelectorStack.Peek(); operatorCombo.Visible = pc.isProp || pc.isCustom; valueComboBox.Visible = pc.isProp && pc.selectedProp.IsEnum; var vtVisible = (pc.isProp && !pc.isObject && !pc.selectedProp.IsEnum && pc.selectedProp != typeof(bool)) || pc.isCustom; operatorCombo.Items.Clear(); Node.PropertyPath.Peek().Member = pc.isProp ? pc.objectType.GetProperty(pc.selectedValue) : null; if (!Node.IsBlank) { operatorCombo.Items.AddRange(Node.ValidOperators.AsNames()); operatorCombo.SelectedItem = Node.Op.GetName(); if (operatorCombo.SelectedItem == null) { operatorCombo.SelectedItem = operatorCombo.Items[0]; } Node.Op = OperatorHelper.Parse(operatorCombo.SelectedItem.ToString()); vtVisible = vtVisible && !Node.Op.IsUnary(); operatorCombo.Width = CalcWidth(operatorCombo.SelectedItem.ToString()); operatorCombo.DropDownWidth = SuggestedOperatorComboBoxWidth(); if (Node.CriteriaType.IsEnum) { valueComboBox.Items.Clear(); if (Node.Value == null || !(Node.Value is Enum)) { Node.Value = Enum.GetValues(Node.CriteriaType).GetValue(0); } valueComboBox.Width = CalcWidth(Enum.GetName(Node.CriteriaType, Node.Value)); valueComboBox.Items.AddRange(Enum.GetNames(Node.CriteriaType)); valueComboBox.SelectedItem = Enum.GetName(Node.CriteriaType, Node.Value); } } valueCaseSensitivity.Visible = pc.isProp && pc.selectedProp == typeof(string) && Node.Op.CaseSensitivity(); valueTextBox.Visible = vtVisible; pc.combo.Width = CalcWidth(pc.selectedValue); }
private void OperatorChanged(object sender, EventArgs e) { var pc = PropertySelectorStack.Peek(); Node.Op = OperatorHelper.Parse(operatorCombo.SelectedItem.ToString()); operatorCombo.Width = CalcWidth(operatorCombo.SelectedItem.ToString()); valueTextBox.Visible = !Node.Op.IsUnary(); valueCaseSensitivity.Visible = pc.selectedProp == typeof(string) && Node.Op.CaseSensitivity(); if (valueTextBox.Visible) { valueTextBox.Focus(); } }