- Timestamp:
- 08/30/18 11:32:56 (6 years ago)
- Location:
- trunk
- Files:
-
- 2 edited
- 1 copied
Legend:
- Unmodified
- Added
- Removed
-
trunk
- Property svn:mergeinfo changed
-
trunk/HeuristicLab.Clients.Hive.Administrator
- Property svn:mergeinfo changed
-
trunk/HeuristicLab.Clients.Hive.Administrator/3.3/Views/ProjectView.cs
r15760 r16117 35 35 private readonly object locker = new object(); 36 36 37 private Guid persistedOwnerUserId; 38 37 39 public new Project Content { 38 40 get { return (Project)base.Content; } 39 set { base.Content = value; }41 set { base.Content = value; persistedOwnerUserId = Content != null ? Content.OwnerUserId : Guid.Empty; } 40 42 } 41 43 … … 64 66 } 65 67 68 protected void RegisterControlEvents() { 69 nameTextBox.TextChanged += nameTextBox_TextChanged; 70 nameTextBox.Validating += nameTextBox_Validating; 71 descriptionTextBox.TextChanged += descriptionTextBox_TextChanged; 72 ownerComboBox.SelectedIndexChanged += ownerComboBox_SelectedIndexChanged; 73 startDateTimePicker.ValueChanged += startDateTimePicker_ValueChanged; 74 endDateTimePicker.ValueChanged += endDateTimePicker_ValueChanged; 75 indefiniteCheckBox.CheckedChanged += indefiniteCheckBox_CheckedChanged; 76 } 77 78 protected void DeregisterControlEvents() { 79 nameTextBox.TextChanged -= nameTextBox_TextChanged; 80 nameTextBox.Validating -= nameTextBox_Validating; 81 descriptionTextBox.TextChanged -= descriptionTextBox_TextChanged; 82 ownerComboBox.SelectedIndexChanged -= ownerComboBox_SelectedIndexChanged; 83 startDateTimePicker.ValueChanged -= startDateTimePicker_ValueChanged; 84 endDateTimePicker.ValueChanged -= endDateTimePicker_ValueChanged; 85 indefiniteCheckBox.CheckedChanged -= indefiniteCheckBox_CheckedChanged; 86 } 87 66 88 protected override void OnContentChanged() { 67 89 base.OnContentChanged(); 90 DeregisterControlEvents(); 68 91 if (Content == null) { 69 92 idTextBox.Clear(); … … 79 102 nameTextBox.Text = Content.Name; 80 103 descriptionTextBox.Text = Content.Description; 81 ownerComboBox.SelectedItem = AccessClient.Instance.UsersAndGroups.FirstOrDefault(x => x.Id == Content.OwnerUserId); 104 105 ownerComboBox.SelectedIndexChanged -= ownerComboBox_SelectedIndexChanged; 106 var users = AccessClient.Instance.UsersAndGroups.OfType<LightweightUser>(); 107 if (!Content.ParentProjectId.HasValue) users = users.Where(x => x.Roles.Select(y => y.Name).Contains(HiveRoles.Administrator)); 108 ownerComboBox.DataSource = users.ToList(); 109 ownerComboBox.SelectedItem = users.FirstOrDefault(x => x.Id == Content.OwnerUserId); 110 ownerComboBox.SelectedIndexChanged += ownerComboBox_SelectedIndexChanged; 111 82 112 createdTextBox.Text = Content.DateCreated.ToString("ddd, dd.MM.yyyy, HH:mm:ss"); 83 113 startDateTimePicker.Value = Content.StartDate; 84 if (indefiniteCheckBox.Checked = !Content.EndDate.HasValue) { 85 endDateTimePicker.Value = startDateTimePicker.Value; 86 } else { 87 endDateTimePicker.Value = Content.EndDate.Value; 88 } 89 } 114 115 indefiniteCheckBox.Checked = !Content.EndDate.HasValue; 116 if (!indefiniteCheckBox.Checked) endDateTimePicker.Value = Content.EndDate.Value; 117 else endDateTimePicker.Value = Content.StartDate; 118 endDateTimePicker.Enabled = !indefiniteCheckBox.Checked; 119 } 120 RegisterControlEvents(); 90 121 } 91 122 … … 101 132 endDateTimePicker.Enabled = enabled && Content.EndDate.HasValue; 102 133 indefiniteCheckBox.Enabled = enabled; 134 135 if (Content != null) { 136 var parentProject = HiveAdminClient.Instance.GetAvailableProjectAncestors(Content.Id).LastOrDefault(); 137 if (parentProject == null || parentProject.EndDate.HasValue) { 138 indefiniteCheckBox.Enabled = false; 139 } 140 141 if (!IsAdmin() && !HiveAdminClient.Instance.CheckOwnershipOfParentProject(Content, UserInformation.Instance.User.Id)) { 142 ownerComboBox.Enabled = false; 143 startDateTimePicker.Enabled = false; 144 endDateTimePicker.Enabled = false; 145 indefiniteCheckBox.Enabled = false; 146 } 147 } 103 148 } 104 149 #endregion … … 106 151 #region Event Handlers 107 152 private void Content_PropertyChanged(object sender, PropertyChangedEventArgs e) { 108 OnContentChanged(); 153 if (InvokeRequired) Invoke((Action<object, PropertyChangedEventArgs>)Content_PropertyChanged, sender, e); 154 else OnContentChanged(); 109 155 } 110 156 … … 132 178 finallyCallback: () => { 133 179 ownerComboBox.SelectedIndexChanged -= ownerComboBox_SelectedIndexChanged; 134 ownerComboBox.DataSource = AccessClient.Instance.UsersAndGroups.OfType<LightweightUser>().ToList(); 180 var users = AccessClient.Instance.UsersAndGroups.OfType<LightweightUser>(); 181 if (Content != null && !Content.ParentProjectId.HasValue) users = users.Where(x => x.Roles.Select(y => y.Name).Contains(HiveRoles.Administrator)); 182 ownerComboBox.DataSource = users.ToList(); 135 183 ownerComboBox.SelectedIndexChanged += ownerComboBox_SelectedIndexChanged; 136 184 }); … … 147 195 finallyCallback: () => { 148 196 ownerComboBox.SelectedIndexChanged -= ownerComboBox_SelectedIndexChanged; 149 ownerComboBox.DataSource = AccessClient.Instance.UsersAndGroups.OfType<LightweightUser>().ToList(); 150 ownerComboBox.SelectedItem = AccessClient.Instance.UsersAndGroups.FirstOrDefault(x => x.Id == Content.OwnerUserId); 197 var users = AccessClient.Instance.UsersAndGroups.OfType<LightweightUser>(); 198 if (Content != null && !Content.ParentProjectId.HasValue) users = users.Where(x => x.Roles.Select(y => y.Name).Contains(HiveRoles.Administrator)); 199 ownerComboBox.DataSource = users.ToList(); 200 ownerComboBox.SelectedItem = users.FirstOrDefault(x => x.Id == persistedOwnerUserId); 151 201 ownerComboBox.SelectedIndexChanged += ownerComboBox_SelectedIndexChanged; 152 202 refreshButton.Enabled = true; … … 166 216 167 217 private void nameTextBox_TextChanged(object sender, EventArgs e) { 168 if (Content != null && Content.Name != nameTextBox.Text) 218 if (Content != null && Content.Name != nameTextBox.Text) { 219 DeregisterContentEvents(); 169 220 Content.Name = nameTextBox.Text; 221 RegisterContentEvents(); 222 } 170 223 } 171 224 172 225 private void descriptionTextBox_TextChanged(object sender, EventArgs e) { 173 if (Content != null && Content.Description != descriptionTextBox.Text) 226 if (Content != null && Content.Description != descriptionTextBox.Text) { 227 DeregisterContentEvents(); 174 228 Content.Description = descriptionTextBox.Text; 229 RegisterContentEvents(); 230 } 175 231 } 176 232 … … 178 234 var selectedItem = (LightweightUser)ownerComboBox.SelectedItem; 179 235 var selectedOwnerUserId = selectedItem != null ? selectedItem.Id : Guid.Empty; 180 if (Content != null && Content.OwnerUserId != selectedOwnerUserId) 236 if (Content != null && Content.OwnerUserId != selectedOwnerUserId) { 237 DeregisterContentEvents(); 181 238 Content.OwnerUserId = selectedOwnerUserId; 239 RegisterContentEvents(); 240 } 182 241 } 183 242 184 243 private void startDateTimePicker_ValueChanged(object sender, EventArgs e) { 185 244 if (Content == null) return; 245 startDateTimePicker.ValueChanged -= startDateTimePicker_ValueChanged; 246 247 if (!IsAdmin()) { 248 var parentProject = HiveAdminClient.Instance.GetAvailableProjectAncestors(Content.Id).LastOrDefault(); 249 if (parentProject != null) { 250 if (startDateTimePicker.Value < parentProject.StartDate) 251 startDateTimePicker.Value = parentProject.StartDate; 252 } else { 253 startDateTimePicker.Value = Content.StartDate; 254 } 255 } 256 186 257 if (!Content.EndDate.HasValue || startDateTimePicker.Value > Content.EndDate) 187 258 endDateTimePicker.Value = startDateTimePicker.Value; 188 if (Content.StartDate != startDateTimePicker.Value) 259 if (Content.StartDate != startDateTimePicker.Value) { 260 DeregisterContentEvents(); 189 261 Content.StartDate = startDateTimePicker.Value; 262 RegisterContentEvents(); 263 } 264 265 startDateTimePicker.ValueChanged += startDateTimePicker_ValueChanged; 190 266 } 191 267 192 268 private void endDateTimePicker_ValueChanged(object sender, EventArgs e) { 193 269 if (Content == null) return; 270 endDateTimePicker.ValueChanged -= endDateTimePicker_ValueChanged; 271 272 if (!IsAdmin()) { 273 var parentProject = HiveAdminClient.Instance.GetAvailableProjectAncestors(Content.Id).LastOrDefault(); 274 if (parentProject != null) { 275 if (parentProject.EndDate.HasValue && endDateTimePicker.Value > parentProject.EndDate.Value) { 276 endDateTimePicker.Value = parentProject.EndDate.Value; 277 } 278 } else if (Content.EndDate.HasValue) { 279 endDateTimePicker.Value = Content.EndDate.Value; 280 } 281 } 282 194 283 if (endDateTimePicker.Value < startDateTimePicker.Value) 195 284 endDateTimePicker.Value = startDateTimePicker.Value; 196 if (Content.EndDate != endDateTimePicker.Value) 285 if (Content.EndDate != endDateTimePicker.Value) { 286 DeregisterContentEvents(); 197 287 Content.EndDate = endDateTimePicker.Value; 288 RegisterContentEvents(); 289 } 290 291 endDateTimePicker.ValueChanged += endDateTimePicker_ValueChanged; 198 292 } 199 293 200 294 private void indefiniteCheckBox_CheckedChanged(object sender, EventArgs e) { 201 295 if (Content == null) return; 202 var newEndDate = indefiniteCheckBox.Checked ? (DateTime?)null : Content.StartDate; 203 if (Content.EndDate != newEndDate) 296 297 var newEndDate = indefiniteCheckBox.Checked ? (DateTime?)null : endDateTimePicker.Value; 298 endDateTimePicker.Enabled = !indefiniteCheckBox.Checked; 299 if (Content.EndDate != newEndDate) { 300 DeregisterContentEvents(); 204 301 Content.EndDate = newEndDate; 302 RegisterContentEvents(); 303 } 205 304 } 206 305 #endregion … … 215 314 } 216 315 316 private bool IsAdmin() { 317 return HiveRoles.CheckAdminUserPermissions(); 318 } 319 217 320 private void ShowHiveInformationDialog() { 218 321 if (InvokeRequired) Invoke((Action)ShowHiveInformationDialog);
Note: See TracChangeset
for help on using the changeset viewer.