00001 using System;
00002 using System.Collections.Generic;
00003 using System.ComponentModel;
00004 using System.Data;
00005 using System.Drawing;
00006 using System.Text;
00007 using System.Windows.Forms;
00008 using Shared;
00009 using System.IO;
00010
00011 namespace Client
00012 {
00016 public partial class ProjectView : Form
00017 {
00019 private IAccessHandler accessHandler;
00021 private ProjectInfo projectinfo;
00023 private bool created = false;
00025 private bool dirty = false;
00027 private RoleInfo currentRole;
00028
00030 public ProjectInfo Projectinfo
00031 {
00032 get { return projectinfo; }
00033 set { projectinfo = value; }
00034 }
00036 public bool Saved
00037 {
00038 get { return created; }
00039 }
00040
00045 public ProjectView(IAccessHandler accessHandler)
00046 {
00047 this.accessHandler = accessHandler;
00048 this.created = false;
00049 InitializeComponent();
00050 tagContainer1.Enabled = false;
00051 btnSave.Text = "Create project";
00052 lnkSubmit.Enabled = false;
00053 txtPITitle.Focus();
00054 }
00055
00062 public ProjectView(IAccessHandler accessHandler, ProjectInfo projectinfo)
00063 {
00064 this.accessHandler = accessHandler;
00065 this.projectinfo = projectinfo;
00066 this.created = true;
00067 InitializeComponent();
00068
00069 txtPITitle.Text = projectinfo.Title;
00070 txtPISubject.Text = projectinfo.subject;
00071 txtPIDepartment.Text = projectinfo.department;
00072 datePIStartDate.Value = projectinfo.startDate;
00073 txtPISynopsis.Text = projectinfo.synopsis;
00074 dirty = false;
00075 UpdateTagContainer();
00076 theDisAndEnabler(projectinfo.submitted);
00077 txtPITitle.Focus();
00078
00079 RoleInfo[] roles = accessHandler.GetRoles(this.projectinfo.id);
00080 foreach (RoleInfo role in roles)
00081 if (accessHandler.WhoAmI == role.UserName)
00082 this.currentRole = role;
00083
00084
00085
00086 if (String.IsNullOrEmpty(this.currentRole.UserName) || this.currentRole.Type != RoleType.Creator)
00087 {
00088 lnkSubmit.Enabled = false;
00089 btnAddMember.Visible = btnRemoveMember.Visible = false;
00090 panLayout.Height = 0;
00091 if (String.IsNullOrEmpty(this.currentRole.UserName) || this.currentRole.Type != RoleType.Member)
00092 {
00093 txtPITitle.ReadOnly = true;
00094 txtPISubject.ReadOnly = true;
00095 txtPIDepartment.ReadOnly = true;
00096 datePIStartDate.Enabled = false;
00097 txtPISynopsis.ReadOnly = true;
00098 btnSave.Hide();
00099 txtPISynopsis.Height += 29;
00100 btnAddReference.Enabled = false;
00101 btnReview.Enabled = false;
00102 }
00103 }
00104
00105 if (this.currentRole.Type == RoleType.Supervisor)
00106 {
00107 btnAddReference.Image = null;
00108 btnAddReference.Text = " Add Suggestion";
00109 btnAddReference.Enabled = true;
00110 btnAddReference.Image = global::Client.Properties.Resources.suggestion;
00111 }
00112 if(this.currentRole.Type == RoleType.Supervisor || string.IsNullOrEmpty(currentRole.UserName))
00113 {
00114 btnRemoveSelectedBib.Hide();
00115 btnReview.Hide();
00116 }
00117
00118 }
00119
00120 #region Tab controle
00121
00127 private void tabControl1_Selected(object sender, TabControlEventArgs e)
00128 {
00129 if (tabControl1.SelectedTab == tabPage3)
00130 {
00131 UpdateRoleTable();
00132 }
00133 else if (tabControl1.SelectedTab == tabPage4)
00134 {
00135 UpdateReferenceTable();
00136 }
00137 }
00138
00144 private void tabControl1_Deselecting(object sender, TabControlCancelEventArgs e)
00145 {
00146 if (e.TabPage == tabPage1 && !created)
00147 {
00148 e.Cancel = !Save();
00149 }
00150 }
00151 #endregion
00152
00153 #region Open and Save
00154
00160 private void setDirty(object sender, EventArgs e)
00161 {
00162 dirty = true;
00163 btnSave.Enabled = true;
00164 }
00165
00170 private bool Save()
00171 {
00172 string title = txtPITitle.Text;
00173 string subject = txtPISubject.Text;
00174 string department = txtPIDepartment.Text;
00175 string synopsis = txtPISynopsis.Text;
00176 DateTime start = datePIStartDate.Value;
00177 Messages em;
00178
00179 if (title.Trim().Length < 1)
00180 {
00181 MessageBox.Show("Please fill in the \"Title\" field", "Missing information", MessageBoxButtons.OK, MessageBoxIcon.Error);
00182 return false;
00183 }
00184 if (subject.Trim().Length < 1)
00185 {
00186 MessageBox.Show("Please fill in the \"Subject\" field", "Missing information", MessageBoxButtons.OK, MessageBoxIcon.Error);
00187 return false;
00188 }
00189 if (department.Trim().Length < 1)
00190 {
00191 MessageBox.Show("Please fill in the \"Department\" field", "Missing information", MessageBoxButtons.OK, MessageBoxIcon.Error);
00192 return false;
00193 }
00194 ProjectInfo newInfo;
00195 if (!created)
00196 {
00197 newInfo = new ProjectInfo(0, start, DateTime.MinValue, subject, title, department, synopsis, false);
00198 int id;
00199 em = accessHandler.CreateProject(newInfo, out id);
00200 newInfo.id = id;
00201 }
00202 else
00203 {
00204 newInfo = new ProjectInfo(projectinfo.id, start, new DateTime(), subject, title, department, synopsis, false);
00205 em = accessHandler.UpdateProject(newInfo);
00206 }
00207 if (em == Messages.OK)
00208 {
00209 projectinfo = newInfo;
00210 created = true;
00211 dirty = false;
00212 btnSave.Enabled = false;
00213 btnSave.Text = "Save details";
00214 tagContainer1.Enabled = true;
00215
00216 } else
00217 {
00218 MessageBox.Show("Something went wrong.\r\n" + em, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
00219 return false;
00220 }
00221 return true;
00222
00223 }
00224
00225 private void btnClose_Click(object sender, EventArgs e)
00226 {
00227 this.Close();
00228 }
00229
00230 private void btnSave_Click(object sender, EventArgs e)
00231 {
00232 Save();
00233 }
00234
00235 private void ProjectView_FormClosing(object sender, FormClosingEventArgs e)
00236 {
00237 if (dirty)
00238 {
00239 DialogResult result = MessageBox.Show("You have unsaved changes. Do you wish to save before closing the project window?", "Unsaved changes", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question);
00240 if (result == DialogResult.Cancel)
00241 e.Cancel = true;
00242 else if (result == DialogResult.Yes)
00243 if (!Save())
00244 e.Cancel = true;
00245 }
00246 }
00247
00248 #endregion
00249
00250 #region Tags
00251
00257 private void tagContainer1_TagAdded(object sender, TagControls.TagContainerEventArgs e)
00258 {
00259 accessHandler.AddTag(tagContainer1.AddedTag.Name, Projectinfo.id);
00260 }
00261
00267 private void tagContainer1_TagRemoved(object sender, TagControls.TagContainerEventArgs e)
00268 {
00269 this.accessHandler.RemoveTag(tagContainer1.RemovedTag.Name, Projectinfo.id);
00270 }
00271
00275 private void UpdateTagContainer()
00276 {
00277 int i;
00278 List<TagInfo> tags = new List<TagInfo>();
00279 TagInfo[] TagsFromHandler;
00280
00281 TagsFromHandler = accessHandler.GetTags(null,projectinfo.id,null);
00282
00283 for (i = 0; i < TagsFromHandler.Length; i++)
00284 {
00285 tags.Add(TagsFromHandler[i]);
00286 }
00287 tagContainer1.Username = this.accessHandler.WhoAmI;
00288 tagContainer1.Tags = tags;
00289 }
00290
00291 #endregion
00292
00293 #region Reference
00294
00298 private void UpdateReferenceTable()
00299 {
00300 DataTable literature = new DataTable();
00301 literature.Columns.Add(" ", typeof(bool));
00302 literature.Columns.Add("Title", typeof(string));
00303 literature.Columns.Add("Type", typeof(string));
00304 literature.Columns.Add("Author", typeof(string));
00305 literature.Columns.Add("Rating", typeof(string));
00306 literature.Columns.Add("object", typeof(object));
00307
00308 ReferenceInfo[] references = accessHandler.ListReferences(projectinfo.id);
00309 foreach (ReferenceInfo reference in references)
00310 {
00311 LiteratureInfo thisLiterature = accessHandler.GetLiteratureInfo(reference.literature);
00312 literature.Rows.Add(reference.used, thisLiterature.title, "Reference", thisLiterature.author, "N/A", reference);
00313 }
00314
00315 ReviewInfo[] reviews = accessHandler.ListReviews(projectinfo.id);
00316 foreach (ReviewInfo review in reviews)
00317 {
00318 LiteratureInfo thisReview = accessHandler.GetLiteratureInfo(review.literature);
00319 literature.Rows.Add(review.used, thisReview.title, "Review", thisReview.author, review.rating, review);
00320 }
00321
00322 SuggestionInfo[] suggestions = accessHandler.ListSuggestions(projectinfo.id);
00323 foreach (SuggestionInfo suggestion in suggestions)
00324 {
00325 LiteratureInfo thisSuggestion = accessHandler.GetLiteratureInfo(suggestion.literature);
00326 literature.Rows.Add(suggestion.used, thisSuggestion.title, "Suggestion", thisSuggestion.author, "N/A", suggestion);
00327 }
00328
00329
00330 dgvLiterature.DataSource = literature;
00331
00332 dgvLiterature.Columns[0].Width = 20;
00333 dgvLiterature.Columns[2].Width = 75;
00334 dgvLiterature.Columns[3].Width = 150;
00335 dgvLiterature.Columns[4].Width = 75;
00336 dgvLiterature.Columns[0].AutoSizeMode = DataGridViewAutoSizeColumnMode.None;
00337 dgvLiterature.Columns[1].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
00338 dgvLiterature.Columns[2].AutoSizeMode = DataGridViewAutoSizeColumnMode.None;
00339 dgvLiterature.Columns[3].AutoSizeMode = DataGridViewAutoSizeColumnMode.None;
00340 dgvLiterature.Columns[4].AutoSizeMode = DataGridViewAutoSizeColumnMode.None;
00341 dgvLiterature.Columns[0].Resizable = DataGridViewTriState.False;
00342 dgvLiterature.Columns[0].ReadOnly = false;
00343 dgvLiterature.Columns[1].ReadOnly = true;
00344 dgvLiterature.Columns[2].ReadOnly = true;
00345 dgvLiterature.Columns[3].ReadOnly = true;
00346 dgvLiterature.Columns[4].ReadOnly = true;
00347 dgvLiterature.Columns[5].Visible = false;
00348
00349
00350 if (references.Length < 1 && reviews.Length < 1)
00351 panInfoLiterature.Visible = true;
00352 else
00353 panInfoLiterature.Visible = false;
00354
00355
00356 if(references.Length == 0 && reviews.Length == 0)
00357 btnRemoveSelectedBib.Enabled = false;
00358 else
00359 btnRemoveSelectedBib.Enabled = true;
00360 }
00361
00362 private void btnAddReference_Click(object sender, EventArgs e)
00363 {
00364 if (this.currentRole.Type == RoleType.Supervisor)
00365 {
00366 CreateSuggestion cs = new CreateSuggestion(accessHandler.ListLiterature());
00367 cs.ShowDialog();
00368
00369 if (cs.Literature != -1)
00370 {
00371 SuggestionInfo newSuggestion = new SuggestionInfo(projectinfo.id, cs.Literature, DateTime.Now, false, "New suggestion", accessHandler.WhoAmI, cs.Reason);
00372
00373 accessHandler.CreateSuggestion(newSuggestion);
00374
00375 UpdateReferenceTable();
00376 }
00377 }
00378 else
00379 {
00380 ISearchable[] allItems = accessHandler.ListItems(ResultType.Literature);
00381 ReferenceInfo[] refs = accessHandler.ListReferences(projectinfo.id);
00382
00383 Reference addRef = new Reference(allItems, refs, projectinfo.id);
00384
00385 addRef.ShowDialog();
00386
00387 if (addRef.ID > -1)
00388 {
00389 ReferenceInfo addedRef = new ReferenceInfo(projectinfo.id, addRef.ID, DateTime.Now, false, "Noget");
00390 accessHandler.CreateReference(addedRef);
00391
00392 UpdateReferenceTable();
00393 }
00394 else if (addRef.ID == -2)
00395 {
00396 LiteratureEntryView lev = new LiteratureEntryView(accessHandler);
00397 lev.ShowDialog();
00398 }
00399 }
00400 }
00401
00402 private void btnExportBibliography_Click(object sender, EventArgs e)
00403 {
00404 cmExportBibliography.Items.Clear();
00405
00406 foreach(string theName in Enum.GetNames(typeof(BibliographyType)))
00407 {
00408 ToolStripMenuItem theItem = new ToolStripMenuItem(theName);
00409 theItem.Click += new EventHandler(exportBibliography_Click);
00410 cmExportBibliography.Items.Add(theItem);
00411 }
00412
00413 cmExportBibliography.Show(btnExportBibliography, btnExportBibliography.Margin.Left, btnExportBibliography.Height);
00414 }
00415
00416 private void exportBibliography_Click(object sender, EventArgs e)
00417 {
00418 List<LiteratureInfo> literature = new List<LiteratureInfo>();
00419 ReferenceInfo[] references = accessHandler.ListReferences(this.projectinfo.id);
00420 foreach (ReferenceInfo reference in references)
00421 {
00422 if (reference.used)
00423 {
00424 LiteratureInfo thisLiterature = accessHandler.GetLiteratureInfo(reference.literature);
00425 literature.Add(thisLiterature);
00426 }
00427 }
00428
00429
00430 string filename;
00431 ToolStripMenuItem theMenu = (ToolStripMenuItem)sender;
00432 BibliographyExporter exporter = new BibliographyExporter(literature);
00433 exporter.ProjectTitle = this.projectinfo.title;
00434 string renderedBibliography = exporter.getBibliography((BibliographyType)Enum.Parse(typeof(BibliographyType), theMenu.Tag.ToString()), out filename);
00435
00436 if (renderedBibliography == String.Empty && exporter.Extension == String.Empty && filename == String.Empty)
00437 {
00438 MessageBox.Show("Unable to save to the selected format. This will generally only ever happen if you somehow managed to save to a non-existant format!", "Could not save!", MessageBoxButtons.OK, MessageBoxIcon.Error);
00439 return;
00440 }
00441
00442
00443 SaveFileDialog sfd = new SaveFileDialog();
00444 Stream saveFile;
00445 sfd.FileName = filename;
00446
00447 sfd.Filter = theMenu.Tag.ToString() + " (*." + exporter.Extension + ")|*." + exporter.Extension;
00448
00449 if (sfd.ShowDialog() == DialogResult.OK)
00450 {
00451
00452 if ((saveFile = sfd.OpenFile()) != null)
00453 {
00454 StreamWriter sw = new StreamWriter(saveFile);
00455 sw.Write(renderedBibliography);
00456 sw.Flush();
00457 sw.Close();
00458 saveFile.Close();
00459 }
00460 }
00461 }
00462
00463 private void dgvLiterature_CellContentClick(object sender, DataGridViewCellEventArgs e)
00464 {
00465 if (dgvLiterature.SelectedRows.Count == 1 && e.ColumnIndex == 0)
00466 {
00467 if (dgvLiterature.SelectedRows[0].Cells["object"].Value is ReferenceInfo)
00468 {
00469 ReferenceInfo theReference = (ReferenceInfo)dgvLiterature.SelectedRows[0].Cells["object"].Value;
00470
00471 dgvLiterature.SelectedRows[0].Cells[0].Value = (object)!(bool)dgvLiterature.SelectedRows[0].Cells[0].Value;
00472 theReference.used = (bool)dgvLiterature.SelectedRows[0].Cells[0].Value;
00473 accessHandler.UpdateReference(theReference);
00474 }
00475 else if (dgvLiterature.SelectedRows[0].Cells["object"].Value is ReviewInfo)
00476 {
00477 ReviewInfo theReview = (ReviewInfo)dgvLiterature.SelectedRows[0].Cells["object"].Value;
00478
00479 dgvLiterature.SelectedRows[0].Cells[0].Value = (object)!(bool)dgvLiterature.SelectedRows[0].Cells[0].Value;
00480 theReview.used = (bool)dgvLiterature.SelectedRows[0].Cells[0].Value;
00481 accessHandler.UpdateReview(theReview);
00482 }
00483 }
00484 }
00485
00486 private void dgvLiterature_SelectionChanged(object sender, EventArgs e)
00487 {
00488
00489
00490 if(dgvMembers.SelectedRows.Count == 1 && (this.currentRole.Type == RoleType.Member || this.currentRole.Type == RoleType.Creator))
00491 btnRemoveMember.Enabled = true;
00492 else
00493 btnRemoveMember.Enabled = false;
00494 }
00495
00496 private void btnRemoveSelectedBib_Click(object sender, EventArgs e)
00497 {
00498 if (this.currentRole.Type == RoleType.Member || this.currentRole.Type == RoleType.Creator)
00499 {
00500 DialogResult res = MessageBox.Show("You are about to remove the reference to \"" + dgvLiterature.SelectedRows[0].Cells["title"].Value.ToString() + "\"\n from the project. Are you sure?\n(The literature entry itself will not be deleted)", "Remove reference?", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
00501
00502 if (res == DialogResult.Yes)
00503 {
00504 object obj = dgvLiterature.SelectedRows[0].Cells["object"].Value;
00505 if (obj is ReferenceInfo)
00506 {
00507 accessHandler.DeleteReference(((ReferenceInfo)obj).project, ((ReferenceInfo)obj).literature);
00508 }
00509 else if (obj is ReviewInfo)
00510 {
00511 accessHandler.DeleteReference(((ReviewInfo)obj).project, ((ReviewInfo)obj).literature);
00512 }
00513 else if (obj is SuggestionInfo)
00514 {
00515 accessHandler.DeleteReference(((SuggestionInfo)obj).project, ((SuggestionInfo)obj).literature);
00516 }
00517 UpdateReferenceTable();
00518 }
00519 }
00520 }
00521
00522 #endregion
00523
00524 #region Roles
00525
00529 private void UpdateRoleTable()
00530 {
00531 DataTable people = new DataTable();
00532 people.Columns.Add(" ", typeof(Image));
00533 people.Columns.Add("Username", typeof(string));
00534 people.Columns.Add("Role", typeof(RoleType));
00535 people.Columns.Add("object", typeof(RoleInfo));
00536
00537 object image = global::Client.Properties.Resources.ResourceManager.GetObject("user");
00538 RoleInfo[] roles = accessHandler.GetRoles(projectinfo.id);
00539 foreach (RoleInfo role in roles)
00540 {
00541 people.Rows.Add(image, role.UserName, role.Type, role);
00542 }
00543 dgvMembers.DataSource = people;
00544
00545 dgvMembers.Columns[0].Width = 20;
00546 dgvMembers.Columns[2].Width = 150;
00547 dgvMembers.Columns[0].AutoSizeMode = DataGridViewAutoSizeColumnMode.None;
00548 dgvMembers.Columns[1].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
00549 dgvMembers.Columns[2].AutoSizeMode = DataGridViewAutoSizeColumnMode.None;
00550 dgvMembers.Columns[0].Resizable = DataGridViewTriState.False;
00551 dgvMembers.Columns[0].ReadOnly = true;
00552 dgvMembers.Columns[1].ReadOnly = true;
00553 dgvMembers.Columns[2].ReadOnly = true;
00554 dgvMembers.Columns[3].Visible = false;
00555 }
00556
00557 private void btnAddMember_Click(object sender, EventArgs e)
00558 {
00559 ISearchable[] allUsers = accessHandler.ListItems(ResultType.Person);
00560 RoleInfo[] Members = accessHandler.GetRoles(projectinfo.id);
00561 RoleType theRole = RoleType.Member;
00562
00563 GetAUser gau = new GetAUser(allUsers, Members);
00564 gau.ShowDialog();
00565
00566 foreach(string s in gau.selectedUsers)
00567 {
00568 if (gau.addSupervisor)
00569 theRole = RoleType.Supervisor;
00570
00571 accessHandler.AssignUser(s, this.projectinfo.id, theRole);
00572 UpdateRoleTable();
00573 }
00574 }
00575 private void btnRemoveMember_Click(object sender, EventArgs e)
00576 {
00577 DialogResult res = MessageBox.Show("You are about to remove \"" + dgvMembers.SelectedRows[0].Cells["Username"].Value.ToString() + "\" from the project. Are you sure?", "Remove member?", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
00578
00579 if (res == DialogResult.Yes)
00580 {
00581 accessHandler.UnassignUser(dgvMembers.SelectedRows[0].Cells["Username"].Value.ToString(), this.projectinfo.id);
00582 UpdateRoleTable();
00583 }
00584 }
00585 private void dgvMembers_SelectionChanged(object sender, EventArgs e)
00586 {
00587 if ( dgvMembers.SelectedRows.Count == 1 && ((RoleType)dgvMembers.SelectedRows[0].Cells["Role"].Value == RoleType.Member || (RoleType)dgvMembers.SelectedRows[0].Cells["Role"].Value == RoleType.Supervisor) )
00588 btnRemoveMember.Enabled = true;
00589 else
00590 btnRemoveMember.Enabled = false;
00591
00592 }
00593
00594 #endregion
00595
00596 #region Submit project
00597
00598 private void lnkSubmit_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
00599 {
00600 if (MessageBox.Show("Are you sure that you want to sudmit your project?\nIf you sudmit you the project you will not be able to edit in the project anymore.",
00601 "Submit project?", MessageBoxButtons.YesNo,
00602 MessageBoxIcon.Question, MessageBoxDefaultButton.Button3) == DialogResult.Yes)
00603 {
00604 projectinfo.submitted = true;
00605 accessHandler.UpdateProject(projectinfo);
00606
00607 theDisAndEnabler(projectinfo.submitted);
00608 }
00609 }
00610
00615 private void theDisAndEnabler(bool submitted)
00616 {
00617 btnAddMember.Enabled = !submitted;
00618 btnRemoveMember.Enabled = !submitted;
00619 txtPITitle.Enabled = !submitted;
00620 txtPISubject.Enabled = !submitted;
00621 txtPIDepartment.Enabled = !submitted;
00622 datePIStartDate.Enabled = !submitted;
00623 txtPISynopsis.Enabled = !submitted;
00624 lnkSubmit.Enabled = !submitted;
00625 btnSave.Enabled = !submitted;
00626 }
00627
00628 #endregion
00629
00635 private void dgvLiterature_CellMouseDoubleClick(object sender, DataGridViewCellMouseEventArgs e)
00636 {
00637 if (dgvLiterature.SelectedRows.Count == 1)
00638 {
00639 int project, literature;
00640 object obj = (object)dgvLiterature.SelectedRows[0].Cells["object"].Value;
00641 if (obj is ReferenceInfo)
00642 {
00643 literature = ((ReferenceInfo)obj).literature;
00644 project = ((ReferenceInfo)obj).project;
00645 }
00646 else if (obj is ReviewInfo)
00647 {
00648 literature = ((ReviewInfo)obj).literature;
00649 project = ((ReviewInfo)obj).project;
00650 }
00651 else if (obj is SuggestionInfo)
00652 {
00653 literature = ((SuggestionInfo)obj).literature;
00654 project = ((SuggestionInfo)obj).project;
00655 }
00656 else
00657 return;
00658
00659 LiteratureEntryView lev = new LiteratureEntryView(accessHandler, literature, project, false);
00660 lev.ShowDialog();
00661 }
00662 }
00663
00664 private void btnReview_Click(object sender, EventArgs e)
00665 {
00666 ISearchable[] allItems = accessHandler.ListItems(ResultType.Literature);
00667 ReviewInfo[] Reviews = accessHandler.ListReviews(projectinfo.id);
00668
00669 Reference addRef = new Reference(allItems, Reviews, projectinfo.id);
00670
00671 addRef.ShowDialog();
00672
00673 if (addRef.ID != -1)
00674 {
00675 ReferenceInfo addedRef = new ReferenceInfo(projectinfo.id, addRef.ID, DateTime.Now, false, "Noget");
00676 accessHandler.CreateReference(addedRef);
00677
00678 LiteratureEntryView lev = new LiteratureEntryView(accessHandler, addedRef.literature, addedRef.project, true);
00679 lev.ShowDialog();
00680
00681 UpdateReferenceTable();
00682 }
00683 }
00684
00685 private void ProjectView_Shown(object sender, EventArgs e)
00686 {
00687 txtPITitle.Focus();
00688 contextPeople_Opening(null, null);
00689 }
00690
00691 private void contextPeople_Opening(object sender, CancelEventArgs e)
00692 {
00693 contextPeople.Items.Clear();
00694 ToolStripMenuItem add = new ToolStripMenuItem("Add Member...");
00695 add.Enabled = true;
00696 add.Click += new EventHandler(btnAddMember_Click);
00697 contextPeople.Items.Add(add);
00698 contextPeople.Items.Add(new ToolStripSeparator());
00699 if (dgvMembers.SelectedRows.Count == 1)
00700 {
00701 RoleInfo obj = (RoleInfo)dgvMembers.SelectedRows[0].Cells["object"].Value;
00702
00703 ToolStripMenuItem tsmi2 = new ToolStripMenuItem("Remove");
00704 tsmi2.Click += new EventHandler(delegate(object o, EventArgs ea)
00705 {
00706 accessHandler.UnassignUser(obj.UserName, obj.Project);
00707 UpdateRoleTable();
00708 });
00709
00710 if (obj.Type == RoleType.Member)
00711 {
00712 ToolStripMenuItem tsmi = new ToolStripMenuItem("Change to Supervisor");
00713 tsmi.Enabled = true;
00714 tsmi.Click += new EventHandler(delegate(object o, EventArgs ea)
00715 {
00716 accessHandler.AssignUser(obj.UserName, obj.Project, RoleType.Supervisor);
00717 UpdateRoleTable();
00718 });
00719 contextPeople.Items.Add(tsmi);
00720 contextPeople.Items.Add(tsmi2);
00721 }
00722 else if (obj.Type == RoleType.Supervisor)
00723 {
00724 ToolStripMenuItem tsmi = new ToolStripMenuItem("Change to Member");
00725 tsmi.Enabled = true;
00726 tsmi.Click += new EventHandler(delegate(object o, EventArgs ea)
00727 {
00728 accessHandler.AssignUser(obj.UserName, obj.Project, RoleType.Member);
00729 UpdateRoleTable();
00730 });
00731 contextPeople.Items.Add(tsmi);
00732 contextPeople.Items.Add(tsmi2);
00733 }
00734 else
00735 {
00736 ToolStripMenuItem tsmi = new ToolStripMenuItem("Creator cannot be changed...");
00737 tsmi.Enabled = false;
00738 contextPeople.Items.Add(tsmi);
00739 }
00740 }
00741 else if (dgvMembers.SelectedRows.Count > 1)
00742 {
00743 ToolStripMenuItem tsmi2 = new ToolStripMenuItem("Remove");
00744 tsmi2.Click += new EventHandler(delegate(object o, EventArgs ea)
00745 {
00746 foreach (DataGridViewRow dgvr in dgvMembers.SelectedRows)
00747 {
00748 RoleInfo obj = (RoleInfo)dgvr.Cells["object"].Value;
00749 if (obj.Type == RoleType.Creator)
00750 continue;
00751 accessHandler.UnassignUser(obj.UserName, obj.Project);
00752 }
00753 UpdateRoleTable();
00754 });
00755
00756 ToolStripMenuItem tsmi = new ToolStripMenuItem("Set to Members");
00757 tsmi.Enabled = true;
00758 tsmi.Click += new EventHandler(delegate(object o, EventArgs ea)
00759 {
00760 foreach (DataGridViewRow dgvr in dgvMembers.SelectedRows)
00761 {
00762 RoleInfo obj = (RoleInfo)dgvr.Cells["object"].Value;
00763 if (obj.Type == RoleType.Creator)
00764 continue;
00765 accessHandler.AssignUser(obj.UserName, obj.Project, RoleType.Member);
00766 }
00767 UpdateRoleTable();
00768 });
00769
00770
00771 ToolStripMenuItem tsmi3 = new ToolStripMenuItem("Set to Supervisors");
00772 tsmi3.Enabled = true;
00773 tsmi3.Click += new EventHandler(delegate(object o, EventArgs ea)
00774 {
00775 foreach (DataGridViewRow dgvr in dgvMembers.SelectedRows)
00776 {
00777 RoleInfo obj = (RoleInfo)dgvr.Cells["object"].Value;
00778 if (obj.Type == RoleType.Creator)
00779 continue;
00780 accessHandler.AssignUser(obj.UserName, obj.Project, RoleType.Supervisor);
00781 }
00782 UpdateRoleTable();
00783 });
00784 contextPeople.Items.Add(tsmi);
00785 contextPeople.Items.Add(tsmi3);
00786 contextPeople.Items.Add(new ToolStripSeparator());
00787 contextPeople.Items.Add(tsmi2);
00788
00789 }
00790
00791 }
00792 }
00793 }