191 lines
		
	
	
		
			5.2 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			191 lines
		
	
	
		
			5.2 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
using System;
 | 
						|
using System.Collections.Generic;
 | 
						|
using System.ComponentModel;
 | 
						|
using System.Drawing;
 | 
						|
using System.Data;
 | 
						|
using System.Text;
 | 
						|
using System.Windows.Forms;
 | 
						|
using ProjectTracker.Library;
 | 
						|
 | 
						|
namespace PTWin
 | 
						|
{
 | 
						|
  public partial class ResourceEdit : WinPart
 | 
						|
  {
 | 
						|
 | 
						|
    private Resource _resource;
 | 
						|
 | 
						|
    public Resource Resource
 | 
						|
    {
 | 
						|
      get { return _resource; }
 | 
						|
    }
 | 
						|
 | 
						|
    public ResourceEdit(Resource resource)
 | 
						|
    {
 | 
						|
      InitializeComponent();
 | 
						|
 | 
						|
      _resource = resource;
 | 
						|
 | 
						|
      this.CurrentPrincipalChanged += new EventHandler(ResourceEdit_CurrentPrincipalChanged);
 | 
						|
      _resource.PropertyChanged += new PropertyChangedEventHandler(mResource_PropertyChanged);
 | 
						|
 | 
						|
      this.RoleListBindingSource.DataSource = RoleList.GetList();
 | 
						|
      this.ResourceBindingSource.DataSource = _resource;
 | 
						|
 | 
						|
      ApplyAuthorizationRules();
 | 
						|
    }
 | 
						|
 | 
						|
    #region WinPart Code
 | 
						|
 | 
						|
    protected internal override object GetIdValue()
 | 
						|
    {
 | 
						|
      return _resource;
 | 
						|
    }
 | 
						|
 | 
						|
    public override string ToString()
 | 
						|
    {
 | 
						|
      return _resource.FullName;
 | 
						|
    }
 | 
						|
 | 
						|
    private void ResourceEdit_CurrentPrincipalChanged(object sender, EventArgs e)
 | 
						|
    {
 | 
						|
      ApplyAuthorizationRules();
 | 
						|
    }
 | 
						|
 | 
						|
    #endregion
 | 
						|
 | 
						|
    private void ApplyAuthorizationRules()
 | 
						|
    {
 | 
						|
      // have the controls enable/disable/etc
 | 
						|
      this.ReadWriteAuthorization1.ResetControlAuthorization();
 | 
						|
 | 
						|
      bool canEdit = ProjectTracker.Library.Project.CanEditObject();
 | 
						|
 | 
						|
      // enable/disable appropriate buttons
 | 
						|
      this.OKButton.Enabled = canEdit;
 | 
						|
      this.ApplyButton.Enabled = canEdit;
 | 
						|
      this.Cancel_Button.Enabled = canEdit;
 | 
						|
 | 
						|
      // enable/disable role column in grid
 | 
						|
      this.AssignmentsDataGridView.Columns[3].ReadOnly = !canEdit;
 | 
						|
    }
 | 
						|
 | 
						|
    private void SaveResource(bool rebind)
 | 
						|
    {
 | 
						|
      using (StatusBusy busy = new StatusBusy("Saving..."))
 | 
						|
      {
 | 
						|
        // stop the flow of events
 | 
						|
        this.ResourceBindingSource.RaiseListChangedEvents = false;
 | 
						|
        this.AssignmentsBindingSource.RaiseListChangedEvents = false;
 | 
						|
        // do the save
 | 
						|
        this.ResourceBindingSource.EndEdit();
 | 
						|
        this.AssignmentsBindingSource.EndEdit();
 | 
						|
        try
 | 
						|
        {
 | 
						|
          Resource temp = Resource.Clone();
 | 
						|
          _resource = temp.Save();
 | 
						|
          if (rebind)
 | 
						|
          {
 | 
						|
            // rebind the UI
 | 
						|
            this.ResourceBindingSource.DataSource = null;
 | 
						|
            this.AssignmentsBindingSource.DataSource = this.ResourceBindingSource;
 | 
						|
            this.ResourceBindingSource.DataSource = _resource;
 | 
						|
            ApplyAuthorizationRules();
 | 
						|
          }
 | 
						|
        }
 | 
						|
        catch (Csla.DataPortalException ex)
 | 
						|
        {
 | 
						|
          MessageBox.Show(ex.BusinessException.ToString(),
 | 
						|
            "Error saving", MessageBoxButtons.OK,
 | 
						|
            MessageBoxIcon.Exclamation);
 | 
						|
        }
 | 
						|
        catch (Exception ex)
 | 
						|
        {
 | 
						|
          MessageBox.Show(ex.ToString(),
 | 
						|
            "Error Saving", MessageBoxButtons.OK,
 | 
						|
            MessageBoxIcon.Exclamation);
 | 
						|
        }
 | 
						|
        finally
 | 
						|
        {
 | 
						|
          this.ResourceBindingSource.RaiseListChangedEvents = true;
 | 
						|
          this.AssignmentsBindingSource.RaiseListChangedEvents = true;
 | 
						|
          this.ResourceBindingSource.ResetBindings(false);
 | 
						|
          this.AssignmentsBindingSource.ResetBindings(false);
 | 
						|
        }
 | 
						|
      }
 | 
						|
    }
 | 
						|
 | 
						|
    private void OKButton_Click(object sender, EventArgs e)
 | 
						|
    {
 | 
						|
      SaveResource(false);
 | 
						|
      this.Close();
 | 
						|
    }
 | 
						|
 | 
						|
    private void ApplyButton_Click(object sender, EventArgs e)
 | 
						|
    {
 | 
						|
      SaveResource(true);
 | 
						|
    }
 | 
						|
 | 
						|
    private void Cancel_Button_Click(object sender, EventArgs e)
 | 
						|
    {
 | 
						|
      this.ResourceBindingSource.CancelEdit();
 | 
						|
      this.AssignmentsBindingSource.CancelEdit();
 | 
						|
    }
 | 
						|
 | 
						|
    private void CloseButton_Click(object sender, EventArgs e)
 | 
						|
    {
 | 
						|
      this.ResourceBindingSource.CancelEdit();
 | 
						|
      this.AssignmentsBindingSource.CancelEdit();
 | 
						|
      this.Close();
 | 
						|
    }
 | 
						|
 | 
						|
    private void AssignButton_Click(object sender, EventArgs e)
 | 
						|
    {
 | 
						|
      ProjectSelect dlg = new ProjectSelect();
 | 
						|
      if (dlg.ShowDialog() == DialogResult.OK)
 | 
						|
        try
 | 
						|
        {
 | 
						|
          _resource.Assignments.AssignTo(dlg.ProjectId);
 | 
						|
        }
 | 
						|
        catch (InvalidOperationException ex)
 | 
						|
        {
 | 
						|
          MessageBox.Show(ex.ToString(),
 | 
						|
            "Error Assigning", MessageBoxButtons.OK,
 | 
						|
            MessageBoxIcon.Information);
 | 
						|
        }
 | 
						|
        catch (Exception ex)
 | 
						|
        {
 | 
						|
          MessageBox.Show(ex.ToString(),
 | 
						|
            "Error Assigning", MessageBoxButtons.OK,
 | 
						|
            MessageBoxIcon.Exclamation);
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
    private void UnassignButton_Click(object sender, EventArgs e)
 | 
						|
    {
 | 
						|
      if (this.AssignmentsDataGridView.SelectedRows.Count > 0)
 | 
						|
      {
 | 
						|
        Guid projectId = (Guid)this.AssignmentsDataGridView.SelectedRows[0].Cells[0].Value;
 | 
						|
        _resource.Assignments.Remove(projectId);
 | 
						|
      }
 | 
						|
    }
 | 
						|
 | 
						|
    private void mResource_PropertyChanged(object sender, PropertyChangedEventArgs e)
 | 
						|
    {
 | 
						|
      if (e.PropertyName == "IsDirty")
 | 
						|
      {
 | 
						|
        this.ResourceBindingSource.ResetBindings(true);
 | 
						|
        this.AssignmentsBindingSource.ResetBindings(true);
 | 
						|
      }
 | 
						|
    }
 | 
						|
 | 
						|
    private void AssignmentsDataGridView_CellContentClick(object sender, DataGridViewCellEventArgs e)
 | 
						|
    {
 | 
						|
      if (e.ColumnIndex == 1 && e.RowIndex > -1)
 | 
						|
      {
 | 
						|
        Guid projectId = (Guid)this.AssignmentsDataGridView.Rows[e.RowIndex].Cells[0].Value;
 | 
						|
        MainForm.Instance.ShowEditProject(projectId);
 | 
						|
      }
 | 
						|
    }
 | 
						|
  }
 | 
						|
}
 |