added tabs for Annotation and Revision Stages

This commit is contained in:
2012-03-16 15:47:32 +00:00
parent b36187adcb
commit 52e227d35f
3 changed files with 2982 additions and 1940 deletions

View File

@@ -40,6 +40,7 @@ namespace VEPROMS
//private string _TransColor;
//private string _EditBckgndColor;
//private string _ViewBckgndColor;
private bool _ValidateTextBox = true;
public frmFolderProperties(FolderConfig folderConfig)
{
@@ -125,6 +126,10 @@ namespace VEPROMS
_FolderConfig.ParentLookup = false;
}
private AnnotationTypeInfoList myAnnotationTypeInfoList = null;
private LocalAnnotationTypeInfoList myLocalAnnotationTypeInfoList = null;
private StageInfoList myStageInfoList = null;
private LocalStageInfoList myLocalStageInfoList = null;
private void frmFolderProperties_Load(object sender, EventArgs e)
{
_Initializing = true;
@@ -177,6 +182,10 @@ namespace VEPROMS
this.tcFolder.Tabs.Remove(tiFmtSettings);
this.tcFolder.Tabs.Remove(tiOutputSettings);
this.tcFolder.Tabs.Remove(tiEditSettings);
//this.tcFolder.Tabs.Remove(tiAnnoTypes); // TEMPORARY - JSJ
//this.tcFolder.Tabs.Remove(tiApprvStages);// TEMPORARY - JSJ
//this.btnAnnoTypes.Visible = false; // TEMPORARY - JSJ
//this.btnApprvStages.Visible = false; // TEMPORARY - JSJ
this.btnFormatSettings.Visible = false;
this.btnOutputSettings.Visible = false;
this.btnEdSettings.Visible = false;
@@ -194,14 +203,24 @@ namespace VEPROMS
ppLblGrphFileExtDefault.Visible = false; // true;
lblGrphFileExt.Visible = true;
ppBtnDefaultGrphFileExt.Visible = false; // true;
myStageInfoList = StageInfoList.Get();
lbRevisionStages.DataSource = myLocalStageInfoList = new LocalStageInfoList(myStageInfoList);
lbRevisionStages.DisplayMember = "Name";
myAnnotationTypeInfoList = AnnotationTypeInfoList.Get();
lbAnnotationTypes.DataSource = myLocalAnnotationTypeInfoList = new LocalAnnotationTypeInfoList(myAnnotationTypeInfoList);
lbAnnotationTypes.DisplayMember = "Name";
}
else
{
// don't show Start Message or ref obj tab if not at top level
this.tcFolder.Tabs.Remove(tiStMsg);
this.tcFolder.Tabs.Remove(tiRefObj);
this.tcFolder.Tabs.Remove(tiAnnoTypes);
this.tcFolder.Tabs.Remove(tiRevisionStages);
this.btnStMsg.Visible = false;
this.btnRefObjs.Visible = false;
this.btnAnnoTypes.Visible = false;
this.btnRevisionStages.Visible = false;
/* This color settings property page is currently no visible...
*
@@ -279,9 +298,30 @@ namespace VEPROMS
_Initializing = false;
}
private void ppBtnCancel_Click(object sender, EventArgs e)
{
folderConfigBindingSource.CancelEdit();
DialogResult = DialogResult.Cancel;
this.Close();
}
private void ppBtnCancel_MouseEnter(object sender, EventArgs e)
{
_ValidateTextBox = false;
}
private void ppBtnCancel_MouseLeave(object sender, EventArgs e)
{
_ValidateTextBox = true;
}
private void ppBtnOK_Click(object sender, EventArgs e)
{
if (btnRevisoinStageUndo.Enabled)
btnRevisoinStageUndo.PerformClick();
if (btnAnnoTypeUndo.Enabled)
btnAnnoTypeUndo.PerformClick();
//if (btnAnnoTypeSave.Enabled) return;
folderConfigBindingSource.EndEdit();
// Save Default settings for User
//
@@ -290,15 +330,91 @@ namespace VEPROMS
Settings.Default.Save();
_FolderConfig.MyFolder.Config = _FolderConfig.ToString();
_FolderConfig.MyFolder.Save().Dispose();
SaveApprStages();
SaveAnnotationTypes();
DialogResult = DialogResult.OK;
this.Close();
}
private void ppBtnCancel_Click(object sender, EventArgs e)
private void SaveApprStages()
{
folderConfigBindingSource.CancelEdit();
DialogResult = DialogResult.Cancel;
this.Close();
foreach (StageInfo si in myStageInfoList)// spin through old list (database)
{
LocalStageInfo found = null;
foreach (LocalStageInfo lsi in myLocalStageInfoList)// find match in new list
if (si.StageID == lsi.ID)
found = lsi;
if (found != null)
{
if (found.Name != si.Name || found.IsApproved != si.IsApproved)// if different then save changes
{
using (Stage stg = si.Get())
{
stg.Name = found.Name;
stg.IsApproved = found.IsApproved;
stg.UserID = Volian.Base.Library.VlnSettings.UserID;
stg.DTS = DateTime.Now;
stg.Save().Dispose();
}
}
myLocalStageInfoList.Remove(found);
}
else// if missing then delete
{
using (Stage stg = si.Get())
{
stg.Delete();
stg.Save().Dispose();
}
}
}
// Add remaining as new
foreach (LocalStageInfo lsi in myLocalStageInfoList)
{
using (Stage stg = Stage.MakeStage(lsi.Name, "", lsi.IsApproved, DateTime.Now, Volian.Base.Library.VlnSettings.UserID))
stg.Save().Dispose();
}
StageInfoList.Refresh();
}
private void SaveAnnotationTypes()
{
foreach (AnnotationTypeInfo ai in myAnnotationTypeInfoList) //spin through old list (database)
{
LocalAnnotationTypeInfo found = null;
foreach(LocalAnnotationTypeInfo lai in myLocalAnnotationTypeInfoList) // find match in new list
if (ai.TypeID == lai.TypeID )
found = lai;
if (found != null)
{
if (found.Name != ai.Name)// if different then save changes
{
using (AnnotationType at = ai.Get())
{
at.Name = found.Name;
at.UserID = Volian.Base.Library.VlnSettings.UserID;
at.DTS = DateTime.Now;
at.Save().Dispose();
}
}
myLocalAnnotationTypeInfoList.Remove(found);
}
else// if missing then delete
{
using (AnnotationType at = ai.Get())
{
at.Delete();
at.Save().Dispose();
}
}
}
foreach (LocalAnnotationTypeInfo lai in myLocalAnnotationTypeInfoList)
{
using (AnnotationType at = AnnotationType.New(lai.Name, "", DateTime.Now, Volian.Base.Library.VlnSettings.UserID))
at.Save().Dispose();
}
AnnotationTypeInfoList.Refresh();
}
#region General tab
@@ -1069,6 +1185,8 @@ namespace VEPROMS
btnOutputSettings.Checked = false;
btnRefObjs.Checked = false;
btnStMsg.Checked = false;
btnAnnoTypes.Checked = false;
btnRevisionStages.Checked = false;
}
/// <summary>
@@ -1128,5 +1246,462 @@ namespace VEPROMS
ppRTxtName.Focus();
}
private void btnAnnoTypes_Click(object sender, EventArgs e)
{
ProcessButtonClick(tiAnnoTypes, btnAnnoTypes);
}
private void btnApprvStages_Click(object sender, EventArgs e)
{
ProcessButtonClick(tiRevisionStages, btnRevisionStages);
}
#region Annotation Types
private void lbAnnotationTypes_SelectedIndexChanged(object sender, System.EventArgs e)
{
if (btnAnnoTypeUndo.Enabled)
{
btnAnnoTypeUndo.Enabled = false;
//DialogResult dr = MessageBox.Show("The Annotation Description was changed. \n\nSave your Changes?", "Annotation Desctiption", MessageBoxButtons.YesNo);
//if (dr == DialogResult.Yes)
//{
myLocalAnnotationTypeInfoList[_LastAnnotationTypeInfoIndex].Name = tbxAnnotationDescription.Text;
RefreshAnnotationTypeList();
//}
}
LoadLocalAnnotationTypeInfo();
}
private int _LastAnnotationTypeInfoIndex = 0;
private void LoadLocalAnnotationTypeInfo()
{
btnAnnoTypeUndo.Enabled = false;
_LastAnnotationTypeInfoIndex = lbAnnotationTypes.SelectedIndex;
LocalAnnotationTypeInfo ai = lbAnnotationTypes.SelectedValue as LocalAnnotationTypeInfo;
if (ai == null)
{
tbxAnnotationDescription.Text = "";
tbxAnnotationDescription.Enabled = false;
btnAnnoTypeUndo.Enabled = false;
btnAnnoTypeNew.Enabled = true;
btnAnnoTypeRemove.Enabled = false;
txbxRemoveMsg.Visible = false;
lblAnnoTypeCntMessage.Visible = false;
return;
}
tbxAnnotationDescription.Enabled = true;
tbxAnnotationDescription.Text = ai.Name;
btnAnnoTypeUndo.Enabled = false;
if (ai.AnnotationTypeAnnotationCount == 0)
{
btnAnnoTypeRemove.Enabled = true;
txbxRemoveMsg.Visible = false;
lblAnnoTypeCntMessage.Visible = false;
}
else
{
string countMsg = string.Format("{0} is used in {1} places", ai.Name, ai.AnnotationTypeAnnotationCount);
btnAnnoTypeRemove.Enabled = false;
lblAnnoTypeCntMessage.Text = countMsg;
txbxRemoveMsg.Visible = true;
lblAnnoTypeCntMessage.Visible = true;
}
if (lbAnnotationTypes.SelectedIndex >= 0)
{
tbxAnnotationDescription.Focus();
tbxAnnotationDescription.SelectAll();
}
}
private void tbxAnnotationDescription_TextChanged(object sender, EventArgs e)
{
btnAnnoTypeUndo.Enabled = true;
}
private void tiAnnoTypes_Click(object sender, EventArgs e)
{
lbAnnotationTypes.SelectedIndex = -1;
lbAnnotationTypes.Invalidate();
}
private void RefreshAnnotationTypeList()
{
lbAnnotationTypes.DataSource = null;
lbAnnotationTypes.DataSource = myLocalAnnotationTypeInfoList;//myAnnotationTypeInfoList = AnnotationTypeInfoList.Get();
lbAnnotationTypes.DisplayMember = "Name";
}
private void btnAnnoTypeNew_Click(object sender, EventArgs e)
{
if (btnAnnoTypeUndo.Enabled) // save the current changes
{
btnAnnoTypeUndo.Enabled = false;
myLocalAnnotationTypeInfoList[_LastAnnotationTypeInfoIndex].Name = tbxAnnotationDescription.Text;
RefreshAnnotationTypeList();
}
LocalAnnotationTypeInfo lati = new LocalAnnotationTypeInfo("New Annotation Type");
lati.Name = string.Format("{0} {1}", lati.Name, lati.TypeID);
myLocalAnnotationTypeInfoList.Add(lati);
//myLocalAnnotationTypeInfoList.Add(new LocalAnnotationTypeInfo("New Annotation Type"));
btnAnnoTypeUndo.Enabled = false;
RefreshAnnotationTypeList();
btnAnnoTypeRemove.Enabled = true;
lbAnnotationTypes.SelectedIndex = lbAnnotationTypes.Items.Count - 1;
_LastAnnotationTypeInfoIndex = lbAnnotationTypes.SelectedIndex;
}
private void btnAnnoTypeUndo_Click(object sender, EventArgs e)
{
tbxAnnotationDescription.Undo();
btnAnnoTypeUndo.Enabled = false;
//int saveIdx = lbAnnotationTypes.SelectedIndex;
//LocalAnnotationTypeInfo ai = lbAnnotationTypes.SelectedValue as LocalAnnotationTypeInfo;
//btnAnnoTypeSave.Enabled = false;
//ai.Name = tbxAnnotationDescription.Text;
//RefreshAnnotationTypeList();
//lbAnnotationTypes.SelectedIndex = saveIdx;
}
private void btnAnnoTypeRemove_Click(object sender, EventArgs e)
{
LocalAnnotationTypeInfo ai = lbAnnotationTypes.SelectedValue as LocalAnnotationTypeInfo;
myLocalAnnotationTypeInfoList.Remove(ai);
int saveIdx = lbAnnotationTypes.SelectedIndex;
btnAnnoTypeRemove.Enabled = false;
btnAnnoTypeUndo.Enabled = false;
RefreshAnnotationTypeList();
if (saveIdx > lbAnnotationTypes.Items.Count - 1)
lbAnnotationTypes.SelectedIndex = saveIdx - 1;
else
{
lbAnnotationTypes.SelectedIndex = saveIdx;
LoadLocalAnnotationTypeInfo();
}
}
private void tbxAnnotationDescription_Validating(object sender, CancelEventArgs e)
{
if (_ValidateTextBox)
{
string newname = tbxAnnotationDescription.Text;
LocalAnnotationTypeInfo ai = lbAnnotationTypes.SelectedValue as LocalAnnotationTypeInfo;
if (newname.Trim().Length == 0)
{
MessageBox.Show("An Annotation Type Name Cannot Be Blank", "Annotation Type");
e.Cancel = true;
}
else
{
foreach (LocalAnnotationTypeInfo lati in myLocalAnnotationTypeInfoList)
if (lati.Name == newname && lati.TypeID != ai.TypeID)
{
MessageBox.Show("An Annotation Type of this Name already exists.", "Annotation Type");
e.Cancel = true;
}
}
}
}
private void btnAnnoTypeRemove_MouseEnter(object sender, EventArgs e)
{
_ValidateTextBox = false;
}
private void btnAnnoTypeRemove_MouseLeave(object sender, EventArgs e)
{
_ValidateTextBox = true;
}
#endregion
#region Revision Stages
private void tbRevisionStage_TextChanged(object sender, EventArgs e)
{
btnRevisoinStageUndo.Enabled = true;
}
private void btnRevisionStageNew_Click(object sender, EventArgs e)
{
LocalStageInfo lsi = new LocalStageInfo("New Stage", 0);
lsi.Name = string.Format("{0} {1}", lsi.Name, lsi.ID);
//myLocalStageInfoList.Add(new LocalStageInfo("New Stage", 0));
myLocalStageInfoList.Add(lsi);
btnRevisoinStageUndo.Enabled = false;
RefreshRevisionStagesList();
btnRevisionStageRemove.Enabled = true;
lbRevisionStages.SelectedIndex = lbRevisionStages.Items.Count - 1;
}
private void RefreshRevisionStagesList()
{
lbRevisionStages.DataSource = null;
lbRevisionStages.DataSource = myLocalStageInfoList;
lbRevisionStages.DisplayMember = "Name";
}
private void btnRevisionStageRemove_Click(object sender, EventArgs e)
{
LocalStageInfo si = lbRevisionStages.SelectedValue as LocalStageInfo;
myLocalStageInfoList.Remove(si);
int savIdx = lbRevisionStages.SelectedIndex;
btnRevisionStageRemove.Enabled = false;
btnRevisoinStageUndo.Enabled = false;
RefreshRevisionStagesList();
if (savIdx > lbRevisionStages.Items.Count - 1)
lbRevisionStages.SelectedIndex = savIdx - 1;
else
{
lbRevisionStages.SelectedIndex = savIdx;
LoadLocalStageInfo();
}
}
private void btnRevisionStageUndo_Click(object sender, EventArgs e)
{
tbRevisionStage.Undo();
btnRevisoinStageUndo.Enabled = false;
LocalStageInfo si = lbRevisionStages.SelectedValue as LocalStageInfo;
rbApprovalStage.Checked = (si.IsApproved > 0);
rbWorkflowStage.Checked = (si.IsApproved == 0);
//int savIdx = lbRevisionStages.SelectedIndex;
//LocalStageInfo si = lbRevisionStages.SelectedValue as LocalStageInfo;
//si.Name = tbRevisionStage.Text;
//si.IsApproved = rbRevisionStage.Checked ? 1 : 0;
//RefreshRevisionStagesList();
//lbRevisionStages.SelectedIndex = savIdx;
}
private void lbRevisionStages_SelectedIndexChanged(object sender, EventArgs e)
{
if (btnRevisoinStageUndo.Enabled)
{
btnRevisoinStageUndo.Enabled = false;
//DialogResult dr = MessageBox.Show("The Approval Stage Description was changed. \n\nSave your Changes?", "Approval Stage Desctiption", MessageBoxButtons.YesNo);
//if (dr == DialogResult.Yes)
//{
myLocalStageInfoList[_LastStageInfoIndex].Name = tbRevisionStage.Text;
myLocalStageInfoList[_LastStageInfoIndex].IsApproved = rbApprovalStage.Checked ? 1 : 0;
RefreshRevisionStagesList();
//}
}
LoadLocalStageInfo();
}
private int _LastStageInfoIndex = -1;
private void LoadLocalStageInfo()
{
btnRevisoinStageUndo.Enabled = false;
_LastStageInfoIndex = lbRevisionStages.SelectedIndex;
LocalStageInfo si = lbRevisionStages.SelectedValue as LocalStageInfo;
if (si == null)
{
tbRevisionStage.Text = "";
tbRevisionStage.Enabled = false;
btnRevisoinStageUndo.Enabled = false;
btnRevisionStageNew.Enabled = true;
btnRevisionStageRemove.Enabled = false;
return;
}
tbRevisionStage.Enabled = true;
tbRevisionStage.Text = si.Name;
if (si.IsApproved > 0)
rbApprovalStage.Checked = true;
else
rbWorkflowStage.Checked = true;
btnRevisoinStageUndo.Enabled = false;
btnRevisionStageRemove.Enabled = true;
if (lbRevisionStages.SelectedIndex >= 0)
{
tbRevisionStage.Focus();
tbRevisionStage.SelectAll();
}
}
private void tiRevisionStages_Click(object sender, EventArgs e)
{
lbRevisionStages.SelectedIndex = -1;
lbRevisionStages.Invalidate();
}
private void rbWorkflowStage_CheckedChanged(object sender, EventArgs e)
{
btnRevisoinStageUndo.Enabled = true;
}
private void rbApproveStage_CheckedChanged(object sender, EventArgs e)
{
btnRevisoinStageUndo.Enabled = true;
}
private void tbRevisionStage_Validating(object sender, CancelEventArgs e)
{
if (_ValidateTextBox)
{
string newname = tbRevisionStage.Text;
LocalStageInfo si = lbRevisionStages.SelectedValue as LocalStageInfo;
if (newname.Trim().Length == 0)
{
MessageBox.Show("The Revision Stage Name Cannot Be Blank", "Revision Stage");
e.Cancel = true;
}
else
{
foreach (LocalStageInfo lsi in myLocalStageInfoList)
if (lsi.Name == newname && lsi.ID != si.ID)
{
MessageBox.Show("A Revision Stage of this Name already exists.", "Revision Stage");
e.Cancel = true;
}
}
}
}
private void btnRevisionStageRemove_MouseEnter(object sender, EventArgs e)
{
_ValidateTextBox = false;
}
private void btnRevisionStageRemove_MouseLeave(object sender, EventArgs e)
{
_ValidateTextBox = true;
}
private void rbReviseStage_MouseEnter(object sender, EventArgs e)
{
_ValidateTextBox = false;
}
private void rbReviseStage_MouseLeave(object sender, EventArgs e)
{
_ValidateTextBox = true;
}
private void rbApproveStage_MouseEnter(object sender, EventArgs e)
{
_ValidateTextBox = false;
}
private void rbApproveStage_MouseLeave(object sender, EventArgs e)
{
_ValidateTextBox = true;
}
#endregion
}
public partial class LocalStageInfo
{
private static int _UniqueID = 0;
protected static int UniqueID
{ get { return --_UniqueID; } }
private int _MyUniqueID = UniqueID;
public int MyUniqueID // Absolutely Unique ID - Editable
{ get { return _MyUniqueID; } }
private int _ID;
public int ID
{
get { return _ID; }
set { _ID = value; }
}
private string _Name;
public string Name
{
get { return _Name; }
set { _Name = value; }
}
private int _IsApproved;
public int IsApproved
{
get { return _IsApproved; }
set { _IsApproved = value; }
}
private int _StageVersionCount;
public int StageVersionCount
{
get { return _StageVersionCount; }
set { _StageVersionCount = value; }
}
public LocalStageInfo(string name, int isApproved)
{
ID = MyUniqueID;
Name = name;
IsApproved = isApproved;
StageVersionCount = 0;
}
public LocalStageInfo(StageInfo si)
{
ID = si.StageID;
Name = si.Name;
IsApproved = si.IsApproved;
StageVersionCount = si.StageVersionCount;
}
public override string ToString()
{
return string.Format("{0} {1}", ID, Name);
}
}
public partial class LocalStageInfoList : List<LocalStageInfo>
{
public LocalStageInfoList(StageInfoList sil)
{
foreach (StageInfo si in sil)
Add(new LocalStageInfo(si));
}
}
public partial class LocalAnnotationTypeInfo
{
private static int _UniqueID = 0;
protected static int UniqueID
{ get { return --_UniqueID; } }
private int _MyUniqueID = UniqueID;
public int MyUniqueID // Absolutely Unique ID - Editable
{ get { return _MyUniqueID; } }
private int _TypeID;
public int TypeID
{
get { return _TypeID; }
set { _TypeID = value; }
}
private string _Name;
public string Name
{
get { return _Name; }
set { _Name = value; }
}
private int _AnnotationTypeAnnotationCount;
public int AnnotationTypeAnnotationCount
{
get { return _AnnotationTypeAnnotationCount; }
set { _AnnotationTypeAnnotationCount = value; }
}
public LocalAnnotationTypeInfo(string name)
{
TypeID = MyUniqueID;
Name = name;
AnnotationTypeAnnotationCount = 0;
}
public LocalAnnotationTypeInfo(AnnotationTypeInfo ai)
{
TypeID = ai.TypeID;
Name = ai.Name;
AnnotationTypeAnnotationCount = ai.AnnotationTypeAnnotationCount;
}
public override string ToString()
{
return string.Format("{0} {1}", TypeID, Name);
}
}
public partial class LocalAnnotationTypeInfoList : List<LocalAnnotationTypeInfo>
{
public LocalAnnotationTypeInfoList(AnnotationTypeInfoList ail)
{
foreach (AnnotationTypeInfo ai in ail)
Add(new LocalAnnotationTypeInfo(ai));
}
}
}