Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
10/07/17 10:32:07 (7 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
File:
1 edited

Legend:

Unmodified
Added
Removed
  • 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    }
Note: See TracChangeset for help on using the changeset viewer.