Ticket #887: UI_Lag.patch
File UI_Lag.patch, 14.7 KB (added by abeham, 14 years ago) |
---|
-
HeuristicLab.Core.Views/3.3/ItemCollectionView.cs
64 64 protected override void OnContentChanged() { 65 65 base.OnContentChanged(); 66 66 Caption = "Item Collection"; 67 while (itemsListView.Items.Count > 0) RemoveListViewItem(itemsListView.Items[0]); 68 itemsListView.Enabled = false; 69 detailsGroupBox.Enabled = false; 67 RemoveAllListViewItems(); 68 70 69 viewHost.Content = null; 71 addButton.Enabled = false; 72 sortAscendingButton.Enabled = false; 73 sortDescendingButton.Enabled = false; 70 71 /* 72 * Where should the following code go? Here: Then it should be removed in RemoveAllListViewItems 73 * or in RemoveAllListViewItems in which case it should not be repeated here. 74 * Currently the code is in RemoveAllListViewItems 75 */ 76 /*sortAscendingButton.Enabled = false; 77 sortDescendingButton.Enabled = false;*/ 78 74 79 removeButton.Enabled = false; 75 80 76 81 if (Content != null) { … … 82 87 sortAscendingButton.Enabled = itemsListView.Items.Count > 0; 83 88 sortDescendingButton.Enabled = itemsListView.Items.Count > 0; 84 89 SortItemsListView(SortOrder.Ascending); 90 } else { 91 itemsListView.Enabled = false; 92 addButton.Enabled = false; 85 93 } 86 94 } 87 95 … … 116 124 sortAscendingButton.Enabled = itemsListView.Items.Count > 0; 117 125 sortDescendingButton.Enabled = itemsListView.Items.Count > 0; 118 126 } 127 protected virtual void RemoveAllListViewItems() { 128 while (itemsListView.Items.Count > 0) { 129 ListViewItem listViewItem = itemsListView.Items[0]; 130 ((T)listViewItem.Tag).Changed -= new ChangedEventHandler(Item_Changed); 131 listViewItem.Remove(); 132 } 133 sortAscendingButton.Enabled = false; 134 sortDescendingButton.Enabled = false; 135 } 119 136 protected virtual void UpdateListViewItem(ListViewItem listViewItem) { 120 137 if (!listViewItem.Text.Equals(listViewItem.Tag.ToString())) { 121 138 listViewItem.Text = listViewItem.Tag.ToString(); … … 130 147 } 131 148 132 149 #region ListView Events 133 pr otected virtual void itemsListView_SelectedIndexChanged(object sender,EventArgs e) {150 private void itemsListView_MouseUp(object sender, MouseEventArgs e) { 134 151 removeButton.Enabled = itemsListView.SelectedItems.Count > 0 && !Content.IsReadOnly; 135 152 if (itemsListView.SelectedItems.Count == 1) { 136 153 T item = (T)itemsListView.SelectedItems[0].Tag; 137 154 viewHost.Content = item; 138 detailsGroupBox.Enabled = true;139 155 } else { 140 156 viewHost.Content = null; 141 detailsGroupBox.Enabled = false;142 157 } 143 158 } 159 160 private void itemsListView_KeyUp(object sender, KeyEventArgs e) { 161 if (e.KeyCode == Keys.Up || e.KeyCode == Keys.Down 162 || e.KeyCode == Keys.PageUp || e.KeyCode == Keys.PageDown 163 || e.KeyCode == Keys.Home || e.KeyCode == Keys.End) { 164 removeButton.Enabled = itemsListView.SelectedItems.Count > 0 && !Content.IsReadOnly; 165 if (itemsListView.SelectedItems.Count == 1) { 166 T item = (T)itemsListView.SelectedItems[0].Tag; 167 viewHost.Content = item; 168 } else { 169 viewHost.Content = null; 170 } 171 } 172 } 144 173 protected virtual void itemsListView_SizeChanged(object sender, EventArgs e) { 145 174 if (itemsListView.Columns.Count > 0) 146 175 itemsListView.Columns[0].Width = Math.Max(0, itemsListView.Width - 25); … … 269 298 itemsListView.Sort(); 270 299 itemsListView.Sorting = SortOrder.None; 271 300 } 272 #endregion 301 #endregion 302 273 303 } 274 304 } -
HeuristicLab.Core.Views/3.3/ItemCollectionView.Designer.cs
111 111 this.itemsListView.TabIndex = 4; 112 112 this.itemsListView.UseCompatibleStateImageBehavior = false; 113 113 this.itemsListView.View = System.Windows.Forms.View.Details; 114 this.itemsListView.SelectedIndexChanged += new System.EventHandler(this.itemsListView_SelectedIndexChanged);115 114 this.itemsListView.SizeChanged += new System.EventHandler(this.itemsListView_SizeChanged); 116 115 this.itemsListView.DoubleClick += new System.EventHandler(this.itemsListView_DoubleClick); 116 this.itemsListView.MouseUp += new System.Windows.Forms.MouseEventHandler(this.itemsListView_MouseUp); 117 117 this.itemsListView.DragDrop += new System.Windows.Forms.DragEventHandler(this.itemsListView_DragDrop); 118 118 this.itemsListView.DragEnter += new System.Windows.Forms.DragEventHandler(this.itemsListView_DragEnterOver); 119 this.itemsListView.KeyUp += new System.Windows.Forms.KeyEventHandler(this.itemsListView_KeyUp); 119 120 this.itemsListView.KeyDown += new System.Windows.Forms.KeyEventHandler(this.itemsListView_KeyDown); 120 121 this.itemsListView.ItemDrag += new System.Windows.Forms.ItemDragEventHandler(this.itemsListView_ItemDrag); 121 122 this.itemsListView.DragOver += new System.Windows.Forms.DragEventHandler(this.itemsListView_DragEnterOver); -
HeuristicLab.Core.Views/3.3/NamedItemView.cs
63 63 if (Content == null) { 64 64 Caption = "NamedItem"; 65 65 nameTextBox.Text = "-"; 66 nameTextBox.ReadOnly = false;67 66 nameTextBox.Enabled = false; 68 67 descriptionTextBox.Text = ""; 69 nameTextBox.ReadOnly = false;70 68 descriptionTextBox.Enabled = false; 71 69 } else { 72 70 Caption = Content.Name + " (" + Content.GetType().Name + ")"; -
HeuristicLab.Core.Views/3.3/ParameterizedNamedItemView.cs
52 52 base.OnContentChanged(); 53 53 if (Content == null) { 54 54 parameterCollectionView.Content = null; 55 parameterCollectionView.Enabled = false;56 55 } else { 57 56 parameterCollectionView.Content = Content.Parameters; 58 parameterCollectionView.Enabled = true;59 57 } 60 58 } 61 59 } -
HeuristicLab.Core.Views/3.3/ViewHost.cs
32 32 public Type ViewType { 33 33 get { return this.viewType; } 34 34 set { 35 if (value != null && !ViewCanShowContent(value, content)) 36 throw new ArgumentException(string.Format("View \"{0}\" cannot display content \"{1}\".", 37 value.GetPrettyName(), 38 content.GetType().GetPrettyName())); 39 viewType = value; 40 UpdateView(); 35 if (viewType != value) { 36 viewType = value; 37 UpdateView(); 38 } 41 39 } 42 40 } 43 41 … … 61 59 } 62 60 63 61 private void Initialize() { 64 viewsLabel.Enabled = false; 65 viewsLabel.Visible = false; 66 viewContextMenuStrip.Enabled = false; 67 messageLabel.Visible = false; 68 69 if (viewPanel.Controls.Count > 0) viewPanel.Controls[0].Dispose(); 70 viewPanel.Controls.Clear(); 71 viewPanel.Enabled = false; 72 viewPanel.Visible = false; 73 74 if (Content != null) { 75 if (viewContextMenuStrip.Items.Count == 0) { 76 messageLabel.Visible = true; 77 } else { 78 viewsLabel.Enabled = true; 79 viewsLabel.Visible = true; 80 viewContextMenuStrip.Enabled = true; 81 messageLabel.Visible = false; 82 } 83 84 if (!ViewCanShowContent(viewType, Content)) { 85 viewType = MainFormManager.GetDefaultViewType(Content.GetType()); 86 if ((viewType == null) && (viewContextMenuStrip.Items.Count > 0)) // create first available view if default view is not available 87 viewType = (Type)viewContextMenuStrip.Items[0].Tag; 88 } 89 UpdateView(); 62 if (!ViewCanShowContent(viewType, Content)) { 63 viewType = MainFormManager.GetDefaultViewType(Content.GetType()); 64 if ((viewType == null) && (viewContextMenuStrip.Items.Count > 0)) // create first available view if default view is not available 65 viewType = (Type)viewContextMenuStrip.Items[0].Tag; 90 66 } 67 UpdateView(); 91 68 } 92 69 93 70 private void UpdateView() { 94 if (viewPanel.Controls.Count > 0) viewPanel.Controls[0].Dispose(); 95 viewPanel.Controls.Clear(); 71 if (viewPanel.Controls.Count > 0) { 72 Control tmp = viewPanel.Controls[0]; 73 viewPanel.Controls.Remove(tmp); 74 tmp.Dispose(); 75 } 96 76 97 if (viewType == null || content == null) 77 if (viewType == null || content == null) { 78 if (viewsLabel.Visible) viewsLabel.Visible = false; 79 if (viewContextMenuStrip.Enabled) viewContextMenuStrip.Enabled = false; 98 80 return; 81 } 99 82 100 if (!ViewCanShowContent(viewType, content)) 83 // FIXME: It's not a good idea to throw an exception here. 84 // Such a case should be prevented to occur in those classes that use ViewHost. 85 // Also ArgumentException seems to be the wrong type of exception to throw (the method doesn't have any arguments). 86 // From MSDN documentation on ArgumentException: "If the method call does not have any argument or if the failure does not involve the arguments themselves, then InvalidOperationException should be used." 87 /*if (!ViewCanShowContent(viewType, content)) 101 88 throw new ArgumentException(string.Format("View \"{0}\" cannot display content \"{1}\".", 102 89 viewType.GetPrettyName(), 103 Content.GetType().GetPrettyName())); 90 Content.GetType().GetPrettyName()));*/ 104 91 105 UpdateActiveMenuItem();106 92 Control view = (Control)MainFormManager.CreateView(viewType, Content); 93 this.SuspendLayout(); 94 viewsLabel.Visible = true; 95 if (viewContextMenuStrip.Items.Count == 0) { 96 viewsLabel.Enabled = false; 97 viewContextMenuStrip.Enabled = false; 98 messageLabel.Visible = true; 99 } else { 100 viewsLabel.Enabled = true; 101 viewContextMenuStrip.Enabled = true; 102 messageLabel.Visible = false; 103 UpdateActiveMenuItem(); 104 } 107 105 viewPanel.Controls.Add(view); 108 106 viewPanel.Tag = view; 109 107 view.Dock = DockStyle.Fill; 110 viewPanel.Enabled = true; 111 viewPanel.Visible = true; 108 this.ResumeLayout(false); 112 109 } 113 110 114 111 private void UpdateActiveMenuItem() { -
HeuristicLab.Core.Views/3.3/ViewHost.Designer.cs
44 44 /// the contents of this method with the code editor. 45 45 /// </summary> 46 46 private void InitializeComponent() { 47 this.components = new System.ComponentModel.Container(); 47 this.components = new System.ComponentModel.Container(); 48 48 this.viewPanel = new System.Windows.Forms.Panel(); 49 49 this.messageLabel = new System.Windows.Forms.Label(); 50 50 this.viewsLabel = new System.Windows.Forms.Label(); … … 71 71 this.messageLabel.TabIndex = 2; 72 72 this.messageLabel.Text = "No view available."; 73 73 this.messageLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; 74 this.messageLabel.Visible = false; 74 75 // 75 76 // viewsLabel 76 77 // … … 81 82 this.viewsLabel.Name = "viewsLabel"; 82 83 this.viewsLabel.Size = new System.Drawing.Size(16, 16); 83 84 this.viewsLabel.TabIndex = 0; 84 this.toolTip.SetToolTip(this.viewsLabel, "Double-click to open a new window of the current view.\r\nRight-click to change current view."); 85 this.toolTip.SetToolTip(this.viewsLabel, "Double-click to open a new window of the current view.\r\nRight-click to change cur" + 86 "rent view."); 87 this.viewsLabel.Visible = false; 85 88 this.viewsLabel.DoubleClick += new System.EventHandler(this.viewsLabel_DoubleClick); 86 89 // 87 90 // viewContextMenuStrip 88 91 // 92 this.viewContextMenuStrip.Enabled = false; 89 93 this.viewContextMenuStrip.Item = null; 90 94 this.viewContextMenuStrip.Name = "viewContextMenuStrip"; 91 95 this.viewContextMenuStrip.Size = new System.Drawing.Size(61, 4); -
HeuristicLab.Parameters.Views/3.3/ConstrainedValueParameterView.cs
90 90 base.OnContentChanged(); 91 91 if (Content == null) { 92 92 Caption = "ConstrainedValueParameter"; 93 valueGroupBox.Enabled = false;94 93 FillValueComboBox(); 95 94 viewHost.Content = null; 96 95 } else { 97 96 Caption = Content.Name + " (" + Content.GetType().Name + ")"; 98 valueGroupBox.Enabled = true;99 97 FillValueComboBox(); 100 98 viewHost.Content = Content.Value; 101 99 } -
HeuristicLab.Parameters.Views/3.3/ValueParameterView.cs
85 85 Caption = "ValueParameter"; 86 86 setValueButton.Enabled = false; 87 87 clearValueButton.Enabled = false; 88 valueGroupBox.Enabled = false;89 88 viewHost.Content = null; 90 89 } else { 91 90 Caption = Content.Name + " (" + Content.GetType().Name + ")"; 92 91 setValueButton.Enabled = Content.Value == null; 93 92 clearValueButton.Enabled = Content.Value != null; 94 valueGroupBox.Enabled = true;95 93 viewHost.Content = Content.Value; 96 94 } 97 95 }