Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
01/20/10 05:04:31 (14 years ago)
Author:
swagner
Message:

Committing first results of the refactoring of HeuristicLab.Core and related plugins (#95)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/sources/HeuristicLab.Core.Views/3.3/VariableView.cs

    r2546 r2655  
    3131namespace HeuristicLab.Core.Views {
    3232  /// <summary>
    33   /// The visual representation of an <see cref="IVariable"/>.
     33  /// The visual representation of a <see cref="Variable"/>.
    3434  /// </summary>
    3535  [Content(typeof(Variable), true)]
    36   public partial class VariableView : ItemViewBase {
    37     private ChooseItemDialog chooseItemDialog;
     36  public partial class VariableView : NamedItemBaseView {
     37    private TypeSelectorDialog typeSelectorDialog;
    3838
    3939    /// <summary>
     
    4242    /// <remarks>Uses property <see cref="ViewBase.Item"/> of base class <see cref="ViewBase"/>.
    4343    /// No own data storage present.</remarks>
    44     public IVariable Variable {
    45       get { return (IVariable)Item; }
     44    public Variable Variable {
     45      get { return (Variable)Item; }
    4646      set { base.Item = value; }
    4747    }
     
    5959    /// <remarks>Calls <see cref="VariableView()"/>.</remarks>
    6060    /// <param name="variable">The variable to represent visually.</param>
    61     public VariableView(IVariable variable)
     61    public VariableView(Variable variable)
    6262      : this() {
    6363      Variable = variable;
     
    6868    /// </summary>
    6969    /// <remarks>Calls <see cref="ViewBase.RemoveItemEvents"/> of base class <see cref="ViewBase"/>.</remarks>
    70     protected override void RemoveItemEvents() {
    71       Variable.NameChanged -= new EventHandler(Variable_NameChanged);
     70    protected override void DeregisterObjectEvents() {
    7271      Variable.ValueChanged -= new EventHandler(Variable_ValueChanged);
    73       base.RemoveItemEvents();
     72      base.DeregisterObjectEvents();
    7473    }
     74
    7575    /// <summary>
    7676    /// Adds eventhandlers to the underlying <see cref="IVariable"/>.
    7777    /// </summary>
    7878    /// <remarks>Calls <see cref="ViewBase.AddItemEvents"/> of base class <see cref="ViewBase"/>.</remarks>
    79     protected override void AddItemEvents() {
    80       base.AddItemEvents();
    81       Variable.NameChanged += new EventHandler(Variable_NameChanged);
     79    protected override void RegisterObjectEvents() {
     80      base.RegisterObjectEvents();
    8281      Variable.ValueChanged += new EventHandler(Variable_ValueChanged);
    8382    }
    8483
    85     /// <summary>
    86     /// Updates all controls with the latest data of the model.
    87     /// </summary>
    88     /// <remarks>Calls <see cref="ViewBase.UpdateControls"/> of base class <see cref="ViewBase"/>.</remarks>
    89     protected override void UpdateControls() {
    90       base.UpdateControls();
    91       valueTextBox.Text = "-";
    92       valueTextBox.Enabled = false;
    93       editorGroupBox.Controls.Clear();
    94       editorGroupBox.Enabled = false;
     84    protected override void OnObjectChanged() {
     85      base.OnObjectChanged();
    9586      if (Variable == null) {
    9687        Caption = "Variable";
    97         nameTextBox.Enabled = false;
     88        dataTypeTextBox.Text = "-";
     89        dataTypeTextBox.Enabled = false;
     90        setValueButton.Enabled = false;
     91        clearValueButton.Enabled = false;
     92        valueGroupBox.Enabled = false;
     93        viewHost.Object = null;
    9894      } else {
    9995        Caption = Variable.Name + " (" + Variable.GetType().Name + ")";
    100         nameTextBox.Text = Variable.Name;
    101         nameTextBox.Enabled = true;
    102         if (Variable.Value != null) {
    103           valueTextBox.Text = Variable.Value.GetType().FullName;
    104           valueTextBox.Enabled = true;
    105           Control editor = (Control)MainFormManager.CreateDefaultView(Variable.Value);
    106           if (editor != null) {
    107             editorGroupBox.Controls.Add(editor);
    108             editor.Dock = DockStyle.Fill;
    109             editorGroupBox.Enabled = true;
    110           }
    111         }
     96        dataTypeTextBox.Text = Variable.Value == null ? "-" : Variable.Value.GetType().FullName;
     97        dataTypeTextBox.Enabled = Variable.Value != null;
     98        setValueButton.Enabled = Variable.Value == null;
     99        clearValueButton.Enabled = Variable.Value != null;
     100        valueGroupBox.Enabled = true;
     101        viewHost.Object = Variable.Value;
    112102      }
    113103    }
    114104
    115     private void Variable_NameChanged(object sender, EventArgs e) {
    116       UpdateText();
    117     }
    118     private void UpdateText() {
     105    private void Variable_ValueChanged(object sender, EventArgs e) {
    119106      if (InvokeRequired)
    120         Invoke(new MethodInvoker(UpdateText));
    121       else
    122         nameTextBox.Text = Variable.Name;
    123     }
    124     private void Variable_ValueChanged(object sender, EventArgs e) {
    125       Refresh();
     107        Invoke(new EventHandler(Variable_ValueChanged), sender, e);
     108      else {
     109        dataTypeTextBox.Text = Variable.Value == null ? "-" : Variable.Value.GetType().FullName;
     110        dataTypeTextBox.Enabled = Variable.Value != null;
     111        setValueButton.Enabled = Variable.Value == null;
     112        clearValueButton.Enabled = Variable.Value != null;
     113        viewHost.Object = Variable.Value;
     114      }
    126115    }
    127116
    128     private void nameTextBox_Validating(object sender, CancelEventArgs e) {
    129       Variable.Name = nameTextBox.Text;
    130 
    131       // check if variable name was set successfully
    132       e.Cancel = Variable.Name != nameTextBox.Text;
     117    private void setValueButton_Click(object sender, EventArgs e) {
     118      if (typeSelectorDialog == null) {
     119        typeSelectorDialog = new TypeSelectorDialog();
     120        typeSelectorDialog.Caption = "Select Value Type";
     121        typeSelectorDialog.TypeSelector.Configure(typeof(IItem), false, false);
     122      }
     123      if (typeSelectorDialog.ShowDialog(this) == DialogResult.OK) {
     124        Variable.Value = (IItem)typeSelectorDialog.TypeSelector.CreateInstanceOfSelectedType();
     125      }
    133126    }
    134 
    135     private void setVariableValueButton_Click(object sender, EventArgs e) {
    136       if (chooseItemDialog == null) {
    137         chooseItemDialog = new ChooseItemDialog();
    138         chooseItemDialog.Caption = "Set Value";
     127    private void clearValueButton_Click(object sender, EventArgs e) {
     128      Variable.Value = null;
     129    }
     130    private void valuePanel_DragEnterOver(object sender, DragEventArgs e) {
     131      e.Effect = DragDropEffects.None;
     132      Type type = e.Data.GetData("Type") as Type;
     133      if ((type != null) && (typeof(IItem).IsAssignableFrom(type))) {
     134        if ((e.KeyState & 8) == 8) e.Effect = DragDropEffects.Copy;  // CTRL key
     135        else if ((e.KeyState & 32) == 32) e.Effect = DragDropEffects.Move;  // ALT key
     136        else e.Effect = DragDropEffects.Link;
    139137      }
    140       if (chooseItemDialog.ShowDialog(this) == DialogResult.OK)
    141         Variable.Value = chooseItemDialog.Item;
     138    }
     139    private void valuePanel_DragDrop(object sender, DragEventArgs e) {
     140      if (e.Effect != DragDropEffects.None) {
     141        IItem item = e.Data.GetData("Value") as IItem;
     142        if ((e.Effect & DragDropEffects.Copy) == DragDropEffects.Copy) item = (IItem)item.Clone();
     143        Variable.Value = item;
     144      }
    142145    }
    143146  }
Note: See TracChangeset for help on using the changeset viewer.