- Timestamp:
- 01/20/10 05:04:31 (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/sources/HeuristicLab.Core.Views/3.3/VariableView.cs
r2546 r2655 31 31 namespace HeuristicLab.Core.Views { 32 32 /// <summary> 33 /// The visual representation of a n <see cref="IVariable"/>.33 /// The visual representation of a <see cref="Variable"/>. 34 34 /// </summary> 35 35 [Content(typeof(Variable), true)] 36 public partial class VariableView : ItemViewBase{37 private ChooseItemDialog chooseItemDialog;36 public partial class VariableView : NamedItemBaseView { 37 private TypeSelectorDialog typeSelectorDialog; 38 38 39 39 /// <summary> … … 42 42 /// <remarks>Uses property <see cref="ViewBase.Item"/> of base class <see cref="ViewBase"/>. 43 43 /// No own data storage present.</remarks> 44 public IVariable Variable {45 get { return ( IVariable)Item; }44 public Variable Variable { 45 get { return (Variable)Item; } 46 46 set { base.Item = value; } 47 47 } … … 59 59 /// <remarks>Calls <see cref="VariableView()"/>.</remarks> 60 60 /// <param name="variable">The variable to represent visually.</param> 61 public VariableView( IVariable variable)61 public VariableView(Variable variable) 62 62 : this() { 63 63 Variable = variable; … … 68 68 /// </summary> 69 69 /// <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() { 72 71 Variable.ValueChanged -= new EventHandler(Variable_ValueChanged); 73 base. RemoveItemEvents();72 base.DeregisterObjectEvents(); 74 73 } 74 75 75 /// <summary> 76 76 /// Adds eventhandlers to the underlying <see cref="IVariable"/>. 77 77 /// </summary> 78 78 /// <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(); 82 81 Variable.ValueChanged += new EventHandler(Variable_ValueChanged); 83 82 } 84 83 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(); 95 86 if (Variable == null) { 96 87 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; 98 94 } else { 99 95 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; 112 102 } 113 103 } 114 104 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) { 119 106 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 } 126 115 } 127 116 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 } 133 126 } 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; 139 137 } 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 } 142 145 } 143 146 }
Note: See TracChangeset
for help on using the changeset viewer.