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);
 | 
						|
      }
 | 
						|
    }
 | 
						|
  }
 | 
						|
}
 |