188 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			188 lines
		
	
	
		
			4.9 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 ProjectEdit : WinPart
 | |
|   {
 | |
| 
 | |
|     private Project _project;
 | |
| 
 | |
|     public Project Project
 | |
|     {
 | |
|       get { return _project; }
 | |
|     }
 | |
| 
 | |
|     #region WinPart Code
 | |
| 
 | |
|     public override string ToString()
 | |
|     {
 | |
|       return _project.Name;
 | |
|     }
 | |
| 
 | |
|     protected internal override object GetIdValue()
 | |
|     {
 | |
|       return _project;
 | |
|     }
 | |
| 
 | |
|     private void ProjectEdit_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;
 | |
|       this.AssignButton.Enabled = canEdit;
 | |
|       this.UnassignButton.Enabled = canEdit;
 | |
| 
 | |
|       // enable/disable role column in grid
 | |
|       this.ResourcesDataGridView.Columns[2].ReadOnly = 
 | |
|         !canEdit;
 | |
|     }
 | |
| 
 | |
|     private void SaveProject(bool rebind)
 | |
|     {
 | |
|       using (StatusBusy busy = new StatusBusy("Saving..."))
 | |
|       {
 | |
|         this.projectBindingSource.RaiseListChangedEvents = false;
 | |
|         this.resourcesBindingSource.RaiseListChangedEvents = false;
 | |
|         // do the save
 | |
|         this.projectBindingSource.EndEdit();
 | |
|         this.resourcesBindingSource.EndEdit();
 | |
|         try
 | |
|         {
 | |
|           Project temp = _project.Clone();
 | |
|           _project = temp.Save();
 | |
|           if (rebind)
 | |
|           {
 | |
|             // rebind the UI
 | |
|             this.projectBindingSource.DataSource = null;
 | |
|             this.resourcesBindingSource.DataSource = this.projectBindingSource;
 | |
|             this.projectBindingSource.DataSource = _project;
 | |
|             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.projectBindingSource.RaiseListChangedEvents = true;
 | |
|           this.resourcesBindingSource.RaiseListChangedEvents = true;
 | |
|           this.projectBindingSource.ResetBindings(false);
 | |
|           this.resourcesBindingSource.ResetBindings(false);
 | |
|         }
 | |
|       }
 | |
|     }
 | |
| 
 | |
|     public ProjectEdit(Project project)
 | |
|     {
 | |
|       InitializeComponent();
 | |
| 
 | |
|       _project = project;
 | |
| 
 | |
|       this.roleListBindingSource.DataSource = RoleList.GetList();
 | |
|       this.projectBindingSource.DataSource = _project;
 | |
| 
 | |
|       ApplyAuthorizationRules();
 | |
|     }
 | |
| 
 | |
|     private void OKButton_Click(object sender, EventArgs e)
 | |
|     {
 | |
|       SaveProject(false);
 | |
|       this.Close();
 | |
|     }
 | |
| 
 | |
|     private void ApplyButton_Click(object sender, EventArgs e)
 | |
|     {
 | |
|       SaveProject(true);
 | |
|     }
 | |
| 
 | |
|     private void Cancel_Button_Click(object sender, EventArgs e)
 | |
|     {
 | |
|       this.projectBindingSource.CancelEdit();
 | |
|       this.resourcesBindingSource.CancelEdit();
 | |
|     }
 | |
| 
 | |
|     private void CloseButton_Click(object sender, EventArgs e)
 | |
|     {
 | |
|       this.projectBindingSource.CancelEdit();
 | |
|       this.resourcesBindingSource.CancelEdit();
 | |
|       this.Close();
 | |
|     }
 | |
| 
 | |
|     private void AssignButton_Click(object sender, EventArgs e)
 | |
|     {
 | |
|       ResourceSelect dlg = new ResourceSelect();
 | |
|       if (dlg.ShowDialog() == DialogResult.OK)
 | |
|         try
 | |
|         {
 | |
|           _project.Resources.Assign(dlg.ResourceId);
 | |
|         }
 | |
|         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.ResourcesDataGridView.SelectedRows.Count > 0)
 | |
|       {
 | |
|         int resourceId = int.Parse(
 | |
|           this.ResourcesDataGridView.SelectedRows[0].
 | |
|           Cells[0].Value.ToString());
 | |
|         _project.Resources.Remove(resourceId);
 | |
|       }
 | |
|     }
 | |
| 
 | |
|     private void ResourcesDataGridView_CellContentClick(
 | |
|       object sender, DataGridViewCellEventArgs e)
 | |
|     {
 | |
|       if (e.ColumnIndex == 1 && e.RowIndex > -1)
 | |
|       {
 | |
|         int resourceId = int.Parse(
 | |
|           this.ResourcesDataGridView.Rows[
 | |
|             e.RowIndex].Cells[0].Value.ToString());
 | |
|         MainForm.Instance.ShowEditResource(resourceId);
 | |
|       }
 | |
|     }
 | |
|   }
 | |
| }
 |