Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
10/07/17 10:32:07 (6 years ago)
Author:
jkarder
Message:

#2839:

  • worked on resources and projects views
  • changed resource selector to be able to select projects and assigned resources
  • updated service clients
Location:
branches/HiveProjectManagement/HeuristicLab.Clients.Hive.Administrator/3.3/Views
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • branches/HiveProjectManagement/HeuristicLab.Clients.Hive.Administrator/3.3/Views/ProjectView.Designer.cs

    r15401 r15412  
    8585      this.ownerComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
    8686      this.ownerComboBox.FormattingEnabled = true;
    87       this.ownerComboBox.Location = new System.Drawing.Point(72, 138);
     87      this.ownerComboBox.Location = new System.Drawing.Point(102, 138);
    8888      this.ownerComboBox.Name = "ownerComboBox";
    8989      this.ownerComboBox.Size = new System.Drawing.Size(434, 21);
     
    170170      // refreshButton
    171171      //
    172       this.refreshButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
    173172      this.refreshButton.Image = HeuristicLab.Common.Resources.VSImageLibrary.Refresh;
    174       this.refreshButton.Location = new System.Drawing.Point(512, 136);
     173      this.refreshButton.Location = new System.Drawing.Point(72, 136);
    175174      this.refreshButton.Name = "refreshButton";
    176175      this.refreshButton.Size = new System.Drawing.Size(24, 24);
  • branches/HiveProjectManagement/HeuristicLab.Clients.Hive.Administrator/3.3/Views/ProjectView.cs

    r15401 r15412  
    2525using System.Windows.Forms;
    2626using HeuristicLab.Clients.Access;
     27using HeuristicLab.Clients.Hive.Views;
    2728using HeuristicLab.Core.Views;
    2829using HeuristicLab.MainForm;
    29 using Tasks = System.Threading.Tasks;
    3030
    3131namespace HeuristicLab.Clients.Hive.Administrator.Views {
     
    4848    }
    4949
     50    #region Overrides
    5051    protected override void OnClosing(FormClosingEventArgs e) {
    5152      AccessClient.Instance.Refreshed -= AccessClient_Instance_Refreshed;
     
    6263      Content.PropertyChanged -= Content_PropertyChanged;
    6364      base.DeregisterContentEvents();
    64     }
    65 
    66     private void Content_PropertyChanged(object sender, PropertyChangedEventArgs e) {
    67       OnContentChanged();
    6865    }
    6966
     
    7370        nameTextBox.Clear();
    7471        descriptionTextBox.Clear();
    75         ownerComboBox.DataSource = null;
    7672        ownerComboBox.SelectedItem = null;
    7773        createdTextBox.Clear();
     
    8278        nameTextBox.Text = Content.Name;
    8379        descriptionTextBox.Text = Content.Description;
    84         ownerComboBox.DataSource = AccessClient.Instance.UsersAndGroups.OfType<LightweightUser>().ToList();
    8580        ownerComboBox.SelectedItem = AccessClient.Instance.UsersAndGroups.FirstOrDefault(x => x.Id == Content.OwnerUserId);
    8681        createdTextBox.Text = Content.DateCreated.ToString("ddd, dd.MM.yyyy, HH:mm:ss");
     
    9994      nameTextBox.Enabled = enabled;
    10095      descriptionTextBox.Enabled = enabled;
     96      refreshButton.Enabled = enabled;
    10197      ownerComboBox.Enabled = enabled;
    10298      createdTextBox.Enabled = enabled;
     
    104100      endDateTimePicker.Enabled = enabled && Content.EndDate.HasValue;
    105101      indefiniteCheckBox.Enabled = enabled;
     102    }
     103    #endregion
     104
     105    #region Event Handlers
     106    private void Content_PropertyChanged(object sender, PropertyChangedEventArgs e) {
     107      OnContentChanged();
    106108    }
    107109
     
    125127
    126128    private async void ProjectView_Load(object sender, EventArgs e) {
    127       lock (locker) {
    128         if (updatingUsers) return;
    129         updatingUsers = true;
    130       }
    131       try {
    132         await Tasks.Task.Run(() => UpdateUsers());
    133       } finally {
    134         updatingUsers = false;
    135       }
     129      await SecurityExceptionUtil.TryAsyncAndReportSecurityExceptions(
     130        action: () => UpdateUsers(),
     131        finallyCallback: () => {
     132          ownerComboBox.SelectedIndexChanged -= ownerComboBox_SelectedIndexChanged;
     133          ownerComboBox.DataSource = AccessClient.Instance.UsersAndGroups.OfType<LightweightUser>().ToList();
     134          ownerComboBox.SelectedIndexChanged += ownerComboBox_SelectedIndexChanged;
     135        });
    136136    }
    137137
     
    141141        updatingUsers = true;
    142142      }
    143       try {
    144         await Tasks.Task.Run(() => UpdateUsers());
    145       } finally {
    146         updatingUsers = false;
    147       }
    148     }
    149 
    150     private void UpdateUsers() {
    151       ownerComboBox.DataSource = null;
    152       AccessClient.Instance.Refresh();
    153       if (Content != null) {
    154         ownerComboBox.DataSource = AccessClient.Instance.UsersAndGroups.OfType<LightweightUser>().ToList();
    155         ownerComboBox.SelectedItem = AccessClient.Instance.UsersAndGroups.FirstOrDefault(x => x.Id == Content.OwnerUserId);
    156       }
     143
     144      await SecurityExceptionUtil.TryAsyncAndReportSecurityExceptions(
     145        action: () => UpdateUsers(),
     146        finallyCallback: () => {
     147          ownerComboBox.SelectedIndexChanged -= ownerComboBox_SelectedIndexChanged;
     148          ownerComboBox.DataSource = AccessClient.Instance.UsersAndGroups.OfType<LightweightUser>().ToList();
     149          ownerComboBox.SelectedItem = AccessClient.Instance.UsersAndGroups.FirstOrDefault(x => x.Id == Content.OwnerUserId);
     150          ownerComboBox.SelectedIndexChanged += ownerComboBox_SelectedIndexChanged;
     151          updatingUsers = false;
     152        });
    157153    }
    158154
     
    192188      Content.EndDate = indefiniteCheckBox.Checked ? (DateTime?)null : Content.StartDate;
    193189    }
     190    #endregion
     191
     192    #region Helpers
     193    private void UpdateUsers() {
     194      try {
     195        AccessClient.Instance.Refresh();
     196      } catch (AnonymousUserException) {
     197        ShowHiveInformationDialog();
     198      }
     199    }
     200
     201    private void ShowHiveInformationDialog() {
     202      if (InvokeRequired) Invoke((Action)ShowHiveInformationDialog);
     203      else {
     204        using (HiveInformationDialog dialog = new HiveInformationDialog()) {
     205          dialog.ShowDialog(this);
     206        }
     207      }
     208    }
     209    #endregion
    194210  }
    195211}
  • branches/HiveProjectManagement/HeuristicLab.Clients.Hive.Administrator/3.3/Views/ProjectsView.cs

    r15401 r15412  
    104104      removeButton.Enabled = enabled;
    105105      saveProjectButton.Enabled = enabled;
    106       savePermissionsButton.Enabled = enabled && permissionsView.FetchSelectedUsers != null;
    107       permissionsView.Enabled = enabled && permissionsView.FetchSelectedUsers != null;
     106      savePermissionsButton.Enabled = enabled && permissionsView.Content != null && permissionsView.FetchSelectedUsers != null;
     107      permissionsView.Enabled = enabled && permissionsView.Content != null && permissionsView.FetchSelectedUsers != null;
    108108    }
    109109    #endregion
     
    111111    #region Event Handlers
    112112    private void Content_ItemsAdded(object sender, CollectionItemsChangedEventArgs<IndexedItem<Project>> e) {
    113       OnContentChanged();
     113      if (InvokeRequired) Invoke((Action<object, CollectionItemsChangedEventArgs<IndexedItem<Project>>>)Content_ItemsAdded, sender, e);
     114      else {
     115        OnContentChanged();
     116      }
    114117    }
    115118
    116119    private void Content_ItemsRemoved(object sender, CollectionItemsChangedEventArgs<IndexedItem<Project>> e) {
    117       OnContentChanged();
     120      if (InvokeRequired) Invoke((Action<object, CollectionItemsChangedEventArgs<IndexedItem<Project>>>)Content_ItemsRemoved, sender, e);
     121      else {
     122        OnContentChanged();
     123      }
    118124    }
    119125
    120126    private void ProjectViewContent_PropertyChanged(object sender, PropertyChangedEventArgs e) {
    121       OnContentChanged();
     127      if (InvokeRequired) Invoke((Action<object, PropertyChangedEventArgs>)ProjectViewContent_PropertyChanged, sender, e);
     128      else {
     129        OnContentChanged();
     130      }
    122131    }
    123132
     
    159168
    160169    private async void ProjectsView_Load(object sender, EventArgs e) {
    161       lock (locker) {
    162         if (updatingProjects) return;
    163         updatingProjects = true;
    164       }
    165 
    166170      await SecurityExceptionUtil.TryAsyncAndReportSecurityExceptions(
    167171        action: () => UpdateProjects(),
    168         finallyCallback: () => updatingProjects = false);
     172        finallyCallback: () => Content = HiveAdminClient.Instance.Projects);
    169173    }
    170174
     
    177181      await SecurityExceptionUtil.TryAsyncAndReportSecurityExceptions(
    178182        action: () => UpdateProjects(),
    179         finallyCallback: () => updatingProjects = false);
     183        finallyCallback: () => {
     184          Content = HiveAdminClient.Instance.Projects;
     185          updatingProjects = false;
     186        });
    180187    }
    181188
     
    194201      }
    195202
    196       await SecurityExceptionUtil.TryAsyncAndReportSecurityExceptions(
    197         action: () => RemoveProject(),
    198         finallyCallback: () => removingProjects = false);
     203      var selectedNode = projectsTreeView.SelectedNode;
     204      if (selectedNode == null || selectedNode.Tag == null) return;
     205
     206      var project = (Project)selectedNode.Tag;
     207      var result = MessageBox.Show(
     208        "Do you really want to delete " + project.Name + "?",
     209        "HeuristicLab Hive Administrator",
     210        MessageBoxButtons.YesNo,
     211        MessageBoxIcon.Question);
     212
     213      if (result == DialogResult.Yes) {
     214        if (Content.Any(x => x.ParentProjectId == project.Id)) {
     215          MessageBox.Show(
     216            "Only empty projects can be deleted.",
     217            "HeuristicLab Hive Administrator",
     218            MessageBoxButtons.OK,
     219            MessageBoxIcon.Error);
     220        } else {
     221          await SecurityExceptionUtil.TryAsyncAndReportSecurityExceptions(
     222            action: () => RemoveProject(project),
     223            finallyCallback: () => {
     224              Content.Remove(project);
     225              removingProjects = false;
     226            });
     227        }
     228      }
    199229    }
    200230
     
    222252      projectView.Content = selectedProject;
    223253
    224       selectedProject.PropertyChanged += ProjectViewContent_PropertyChanged;
    225 
    226       await SecurityExceptionUtil.TryAsyncAndReportSecurityExceptions(
    227         action: () => UpdatePermissions());
     254      if (selectedProject != null)
     255        selectedProject.PropertyChanged += ProjectViewContent_PropertyChanged;
     256
     257      if (IsAuthorized(selectedProject)) {
     258        if (!tabControl.TabPages.Contains(permissionsTabPage))
     259          tabControl.TabPages.Add(permissionsTabPage);
     260
     261        permissionsView.FetchSelectedUsers = () =>
     262          HiveServiceLocator.Instance.CallHiveService(s => s.GetProjectPermissions(selectedProject.Id))
     263                                     .Select(x => x.GrantedUserId)
     264                                     .ToList();
     265
     266        if (tabControl.SelectedIndex == 1 && permissionsView.Content != null && permissionsView.FetchSelectedUsers != null)
     267          await SecurityExceptionUtil.TryAsyncAndReportSecurityExceptions(
     268            action: () => UpdatePermissions());
     269      } else {
     270        if (tabControl.TabPages.Contains(permissionsTabPage))
     271          tabControl.TabPages.Remove(permissionsTabPage);
     272        permissionsView.FetchSelectedUsers = null;
     273      }
    228274    }
    229275
     
    273319    }
    274320
    275     private void tabControl_SelectedIndexChanged(object sender, EventArgs e) {
    276       if (tabControl.SelectedIndex == 1) {
    277         UpdatePermissions();
    278       }
     321    private async void tabControl_SelectedIndexChanged(object sender, EventArgs e) {
     322      if (tabControl.SelectedIndex == 1 && permissionsView.Content != null && permissionsView.FetchSelectedUsers != null)
     323        await SecurityExceptionUtil.TryAsyncAndReportSecurityExceptions(
     324          action: () => UpdatePermissions());
    279325    }
    280326
     
    341387    private void UpdateProjects() {
    342388      try {
    343 
     389        HiveAdminClient.Instance.Refresh();
    344390      } catch (AnonymousUserException) {
    345391        ShowHiveInformationDialog();
    346392      }
    347       HiveAdminClient.Instance.Refresh();
    348       Content = HiveAdminClient.Instance.Projects;
    349     }
    350 
    351     private void RemoveProject() {
    352       var selectedNode = projectsTreeView.SelectedNode;
    353       if (selectedNode == null || selectedNode.Tag == null) return;
    354 
    355       var project = (Project)selectedNode.Tag;
    356       var result = MessageBox.Show(
    357         "Do you really want to delete " + project.Name + "?",
    358         "HeuristicLab Hive Administrator",
    359         MessageBoxButtons.YesNo,
    360         MessageBoxIcon.Question);
    361 
    362       if (result == DialogResult.Yes) {
    363         if (Content.Any(x => x.ParentProjectId == project.Id)) {
    364           MessageBox.Show(
    365             "Only empty projects can be deleted.",
    366             "HeuristicLab Hive Administrator",
    367             MessageBoxButtons.OK,
    368             MessageBoxIcon.Error);
    369         } else {
    370           Content.Remove(project);
    371           HiveAdminClient.Delete(project);
    372         }
     393    }
     394
     395    private void RemoveProject(Project project) {
     396      try {
     397        HiveAdminClient.Delete(project);
     398      } catch (AnonymousUserException) {
     399        ShowHiveInformationDialog();
    373400      }
    374401    }
    375402
    376403    private void UpdatePermissions() {
    377       var selectedNode = projectsTreeView.SelectedNode;
    378       var project = (Project)selectedNode?.Tag;
    379 
    380       if (IsAuthorized(project)) {
    381         permissionsView.FetchSelectedUsers = () =>
    382           HiveServiceLocator.Instance.CallHiveService(s => s.GetProjectPermissions(project.Id))
    383                                             .Select(x => x.GrantedUserId)
    384                                             .ToList();
    385 
    386         savePermissionsButton.Enabled = true;
    387 
    388         if (!tabControl.TabPages.Contains(permissionsTabPage))
    389           tabControl.TabPages.Add(permissionsTabPage);
    390 
    391         if (tabControl.SelectedIndex == 1 && permissionsView.Content != null && permissionsView.FetchSelectedUsers != null)
    392           permissionsView.ManualRefresh();
    393       } else {
    394         permissionsView.FetchSelectedUsers = null;
    395         savePermissionsButton.Enabled = false;
    396 
    397         if (tabControl.TabPages.Contains(permissionsTabPage))
    398           tabControl.TabPages.Remove(permissionsTabPage);
     404      try {
     405        permissionsView.ManualRefresh();
     406      } catch (AnonymousUserException) {
     407        ShowHiveInformationDialog();
    399408      }
    400409    }
  • branches/HiveProjectManagement/HeuristicLab.Clients.Hive.Administrator/3.3/Views/ResourcesView.Designer.cs

    r15401 r15412  
    5353    private void InitializeComponent() {
    5454      this.components = new System.ComponentModel.Container();
    55       System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ResourcesView));
    5655      this.imageListSlaveGroups = new System.Windows.Forms.ImageList(this.components);
    5756      this.splitSlaves = new System.Windows.Forms.SplitContainer();
     
    6362      this.tabSlaveGroup = new System.Windows.Forms.TabControl();
    6463      this.tabDetails = new System.Windows.Forms.TabPage();
     64      this.tabSchedule = new System.Windows.Forms.TabPage();
     65      this.toolTip = new System.Windows.Forms.ToolTip(this.components);
    6566      this.slaveView = new HeuristicLab.Clients.Hive.Administrator.Views.SlaveView();
    66       this.tabSchedule = new System.Windows.Forms.TabPage();
    6767      this.scheduleView = new HeuristicLab.Clients.Hive.Administrator.Views.ScheduleView();
    68       this.toolTip = new System.Windows.Forms.ToolTip(this.components);
    6968      ((System.ComponentModel.ISupportInitialize)(this.splitSlaves)).BeginInit();
    7069      this.splitSlaves.Panel1.SuspendLayout();
     
    194193      this.tabDetails.UseVisualStyleBackColor = true;
    195194      //
    196       // slaveView
    197       //
    198       this.slaveView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
    199             | System.Windows.Forms.AnchorStyles.Left)
    200             | System.Windows.Forms.AnchorStyles.Right)));
    201       this.slaveView.Caption = "SlaveView";
    202       this.slaveView.Content = null;
    203       this.slaveView.Location = new System.Drawing.Point(6, 6);
    204       this.slaveView.Name = "slaveView";
    205       this.slaveView.ReadOnly = false;
    206       this.slaveView.Size = new System.Drawing.Size(565, 503);
    207       this.slaveView.TabIndex = 0;
    208       //
    209195      // tabSchedule
    210196      //
     
    217203      this.tabSchedule.Text = "Schedule";
    218204      this.tabSchedule.UseVisualStyleBackColor = true;
     205      //
     206      // slaveView
     207      //
     208      this.slaveView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
     209            | System.Windows.Forms.AnchorStyles.Left)
     210            | System.Windows.Forms.AnchorStyles.Right)));
     211      this.slaveView.Caption = "SlaveView";
     212      this.slaveView.Content = null;
     213      this.slaveView.Location = new System.Drawing.Point(6, 6);
     214      this.slaveView.Name = "slaveView";
     215      this.slaveView.ReadOnly = false;
     216      this.slaveView.Size = new System.Drawing.Size(565, 503);
     217      this.slaveView.TabIndex = 0;
    219218      //
    220219      // scheduleView
  • branches/HiveProjectManagement/HeuristicLab.Clients.Hive.Administrator/3.3/Views/ResourcesView.cs

    r15401 r15412  
    2727using HeuristicLab.Clients.Access;
    2828using HeuristicLab.Clients.Hive.Views;
     29using HeuristicLab.Collections;
    2930using HeuristicLab.Common.Resources;
    3031using HeuristicLab.Core;
     
    144145
    145146    #region Event Handlers
    146     private void Content_ItemsAdded(object sender, Collections.CollectionItemsChangedEventArgs<Collections.IndexedItem<Resource>> e) {
    147       OnContentChanged();
    148     }
    149 
    150     private void Content_ItemsRemoved(object sender, Collections.CollectionItemsChangedEventArgs<Collections.IndexedItem<Resource>> e) {
    151       OnContentChanged();
     147    private void Content_ItemsAdded(object sender, CollectionItemsChangedEventArgs<IndexedItem<Resource>> e) {
     148      if (InvokeRequired) Invoke((Action<object, CollectionItemsChangedEventArgs<IndexedItem<Resource>>>)Content_ItemsAdded, sender, e);
     149      else {
     150        OnContentChanged();
     151      }
     152    }
     153
     154    private void Content_ItemsRemoved(object sender, CollectionItemsChangedEventArgs<IndexedItem<Resource>> e) {
     155      if (InvokeRequired) Invoke((Action<object, CollectionItemsChangedEventArgs<IndexedItem<Resource>>>)Content_ItemsRemoved, sender, e);
     156      else {
     157        OnContentChanged();
     158      }
    152159    }
    153160
    154161    private void SlaveViewContent_PropertyChanged(object sender, PropertyChangedEventArgs e) {
    155       OnContentChanged();
    156       if (e.PropertyName == "HbInterval") {
    157         UpdateChildHbIntervall(slaveView.Content);
     162      if (InvokeRequired) Invoke((Action<object, PropertyChangedEventArgs>)SlaveViewContent_PropertyChanged, sender, e);
     163      else {
     164        OnContentChanged();
     165        if (e.PropertyName == "HbInterval") {
     166          UpdateChildHbIntervall(slaveView.Content);
     167        }
    158168      }
    159169    }
     
    196206
    197207    private async void ResourcesView_Load(object sender, EventArgs e) {
    198       lock (locker) {
    199         if (updatingResources) return;
    200         updatingResources = true;
    201       }
    202 
    203208      await SecurityExceptionUtil.TryAsyncAndReportSecurityExceptions(
    204         action: () => UpdateResources(),
    205         finallyCallback: () => updatingResources = false);
     209        action: () => UpdateResources());
    206210    }
    207211
     
    259263      slaveView.Content = selectedResource;
    260264
    261       if (selectedResource is SlaveGroup)
    262         slaveView.Content.PropertyChanged += SlaveViewContent_PropertyChanged;
    263 
    264       await SecurityExceptionUtil.TryAsyncAndReportSecurityExceptions(
    265         action: () => UpdateSchedule());
     265      if (selectedResource != null && selectedResource is SlaveGroup)
     266        selectedResource.PropertyChanged += SlaveViewContent_PropertyChanged;
     267
     268      if (IsAuthorized(selectedResource)) {
     269        if (!tabSlaveGroup.TabPages.Contains(tabSchedule))
     270          tabSlaveGroup.TabPages.Add(tabSchedule);
     271
     272        HiveAdminClient.Instance.DowntimeForResourceId = selectedResource.Id;
     273
     274        if (tabSlaveGroup.SelectedIndex == 1) {
     275          await SecurityExceptionUtil.TryAsyncAndReportSecurityExceptions(
     276            action: () => UpdateSchedule(),
     277            finallyCallback: () => scheduleView.Content = HiveAdminClient.Instance.Downtimes);
     278        }
     279      } else {
     280        if (tabSlaveGroup.TabPages.Contains(tabSchedule))
     281          tabSlaveGroup.TabPages.Remove(tabSchedule);
     282        HiveAdminClient.Instance.DowntimeForResourceId = Guid.Empty;
     283      }
    266284    }
    267285
     
    412430
    413431    private void UpdateResources() {
    414       try {
    415         ResetView();
    416         HiveAdminClient.Instance.Refresh();
    417         Content = HiveAdminClient.Instance.Resources;
    418       } catch (AnonymousUserException) {
    419         ShowHiveInformationDialog();
    420       }
     432      HiveAdminClient.Instance.Refresh();
     433      Content = HiveAdminClient.Instance.Resources;
    421434    }
    422435
     
    452465
    453466    private void UpdateSchedule() {
    454       var selectedNode = treeSlaveGroup.SelectedNode;
    455       var resource = (Resource)selectedNode?.Tag;
    456 
    457       if (IsAuthorized(resource)) {
    458         if (!tabSlaveGroup.TabPages.Contains(tabSchedule))
    459           tabSlaveGroup.TabPages.Add(tabSchedule);
    460 
    461         if (tabSlaveGroup.SelectedIndex == 1) {
    462           HiveAdminClient.Instance.DowntimeForResourceId = resource.Id;
    463           HiveAdminClient.Instance.RefreshCalendar();
    464           scheduleView.Invoke((Action)(() => {
    465             scheduleView.Content = HiveAdminClient.Instance.Downtimes;
    466             SetEnabledStateOfControls();
    467           }));
    468         }
    469       } else {
    470         if (tabSlaveGroup.TabPages.Contains(tabSchedule))
    471           tabSlaveGroup.TabPages.Remove(tabSchedule);
     467      try {
     468        HiveAdminClient.Instance.RefreshCalendar();
     469      } catch (AnonymousUserException) {
     470        ShowHiveInformationDialog();
    472471      }
    473472    }
  • branches/HiveProjectManagement/HeuristicLab.Clients.Hive.Administrator/3.3/Views/SlaveView.cs

    r14185 r15412  
    125125    protected override void SetEnabledStateOfControls() {
    126126      base.SetEnabledStateOfControls();
     127      bool enabled = Content != null;
     128      txtName.Enabled = enabled;
     129      txtHbIntervall.Enabled = enabled;
     130      cbxPublic.Enabled = enabled;
    127131    }
    128132
     
    139143            int interval = int.Parse(txtHbIntervall.Text);
    140144            Content.HbInterval = interval;
    141           }
    142           catch (Exception) {
     145          } catch (Exception) {
    143146            MessageBox.Show("Please enter a numeric value for the Heartbeat Interval.", "HeuristicLab Hive Administrator", MessageBoxButtons.OK, MessageBoxIcon.Error);
    144147            txtHbIntervall.Text = "10";
Note: See TracChangeset for help on using the changeset viewer.