diff --git a/PROMS/Formats/Formats.csproj b/PROMS/Formats/Formats.csproj index 9d8e1803..8ca8ceeb 100644 --- a/PROMS/Formats/Formats.csproj +++ b/PROMS/Formats/Formats.csproj @@ -92,6 +92,10 @@ + + + + Designer @@ -176,6 +180,7 @@ + @@ -187,6 +192,7 @@ + diff --git a/PROMS/Formats/epall/EPFormatTST1.xml b/PROMS/Formats/epall/EPFormatTST1.xml new file mode 100644 index 00000000..ac38208e Binary files /dev/null and b/PROMS/Formats/epall/EPFormatTST1.xml differ diff --git a/PROMS/Formats/epall/EPFormatTST2.xml b/PROMS/Formats/epall/EPFormatTST2.xml new file mode 100644 index 00000000..6f94675f Binary files /dev/null and b/PROMS/Formats/epall/EPFormatTST2.xml differ diff --git a/PROMS/Formats/epall/EPFormatTST3.xml b/PROMS/Formats/epall/EPFormatTST3.xml new file mode 100644 index 00000000..c2d23a61 Binary files /dev/null and b/PROMS/Formats/epall/EPFormatTST3.xml differ diff --git a/PROMS/Formats/epall/EPFormatTST4.xml b/PROMS/Formats/epall/EPFormatTST4.xml new file mode 100644 index 00000000..a54def4c Binary files /dev/null and b/PROMS/Formats/epall/EPFormatTST4.xml differ diff --git a/PROMS/Formats/fmtall/EPTST1all.xml b/PROMS/Formats/fmtall/EPTST1all.xml new file mode 100644 index 00000000..0c355742 Binary files /dev/null and b/PROMS/Formats/fmtall/EPTST1all.xml differ diff --git a/PROMS/Formats/fmtall/EPTST2all.xml b/PROMS/Formats/fmtall/EPTST2all.xml new file mode 100644 index 00000000..9bbd2e05 Binary files /dev/null and b/PROMS/Formats/fmtall/EPTST2all.xml differ diff --git a/PROMS/VEPROMS User Interface/PROMSFixes.Sql b/PROMS/VEPROMS User Interface/PROMSFixes.Sql index d59c839b..dd995cd1 100644 --- a/PROMS/VEPROMS User Interface/PROMSFixes.Sql +++ b/PROMS/VEPROMS User Interface/PROMSFixes.Sql @@ -23810,6 +23810,224 @@ GO IF (@@Error = 0) PRINT 'Running vesp_UpdateUserSettings Succeeded' ELSE PRINT 'Running vesp_UpdateUserSettings Failed to Execute' GO +--- begin changes for: +---C2025-023 - Electronic Procedures - Modifications to PROMS +--- The following IsEPAnnotationType column was added for EP Annotations. +--- IsEPAnnotationType = Is for EPs +IF NOT EXISTS(SELECT * + FROM INFORMATION_SCHEMA.COLUMNS + WHERE TABLE_NAME = 'AnnotationTypes' + AND COLUMN_NAME = 'IsEPAnnotationType') +ALTER TABLE AnnotationTypes ADD IsEPAnnotationType bit NOT NULL DEFAULT(0); +go +-- Display the status +IF (@@Error = 0) PRINT 'Altered table [AnnotationTypes] Succeeded for IsEPAnnotationType' +ELSE PRINT 'Altered table [AnnotationTypes] Error on Alter for IsEPAnnotationType' +go + + +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getAnnotationType]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE [getAnnotationType]; +GO + +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO +-- ============================================= +-- Author: Matthew Schill +-- Create date: 3/21/2025 +-- Description: Add EP to AnnotationTypes +-- ============================================= +CREATE PROCEDURE [dbo].[getAnnotationType] +( + @TypeID int +) +WITH EXECUTE AS OWNER +AS + SELECT + [TypeID], + [Name], + [Config], + [DTS], + [UserID], + [LastChanged], + (SELECT COUNT(*) FROM [Annotations] WHERE [Annotations].[TypeID]=[AnnotationTypes].[TypeID]) [AnnotationCount], + [IsEPAnnotationType] + FROM [AnnotationTypes] + WHERE [TypeID]=@TypeID + + SELECT + [Annotations].[AnnotationID], + [Annotations].[ItemID], + [Annotations].[TypeID], + [Annotations].[RtfText], + [Annotations].[SearchText], + [Annotations].[Config], + [Annotations].[DTS], + [Annotations].[UserID], + [Annotations].[LastChanged], + [Items].[PreviousID] [Item_PreviousID], + [Items].[ContentID] [Item_ContentID], + [Items].[DTS] [Item_DTS], + [Items].[UserID] [Item_UserID] + FROM [Annotations] + JOIN [Items] ON + [Items].[ItemID]=[Annotations].[ItemID] + WHERE + [Annotations].[TypeID]=@TypeID + + RETURN +GO + +IF (@@Error = 0) PRINT 'Running getAnnotationType Succeeded' +ELSE PRINT 'Running getAnnotationType Failed to Execute' +GO + +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getAnnotationTypeByName]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE [getAnnotationTypeByName]; +GO + +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO +-- ============================================= +-- Author: Matthew Schill +-- Create date: 3/21/2025 +-- Description: Add EP to AnnotationTypes +-- ============================================= +CREATE PROCEDURE [dbo].[getAnnotationTypeByName] +( + @Name nvarchar(100) +) +WITH EXECUTE AS OWNER +AS + SELECT + [TypeID], + [Name], + [Config], + [DTS], + [UserID], + [LastChanged], + (SELECT COUNT(*) FROM [Annotations] WHERE [Annotations].[TypeID]=[AnnotationTypes].[TypeID]) [AnnotationCount], + [IsEPAnnotationType] + FROM [AnnotationTypes] + WHERE [Name]=@Name + RETURN +GO + +IF (@@Error = 0) PRINT 'Running getAnnotationTypeByName Succeeded' +ELSE PRINT 'Running getAnnotationTypeByName Failed to Execute' +GO + +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getAnnotationTypes]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE [getAnnotationTypes]; +GO + +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO +-- ============================================= +-- Author: Matthew Schill +-- Create date: 3/21/2025 +-- Description: Add EP to AnnotationTypes +-- ============================================= +CREATE PROCEDURE [dbo].[getAnnotationTypes] +WITH EXECUTE AS OWNER +AS + SELECT + [TypeID], + [Name], + [Config], + [DTS], + [UserID], + [LastChanged], + (SELECT COUNT(*) FROM [Annotations] WHERE [Annotations].[TypeID]=[AnnotationTypes].[TypeID]) [AnnotationCount], + [IsEPAnnotationType] + FROM [AnnotationTypes] + RETURN + +GO + +IF (@@Error = 0) PRINT 'Running getAnnotationTypes Succeeded' +ELSE PRINT 'Running getAnnotationTypes Failed to Execute' +GO + +IF Not Exists(SELECT * FROM sys.objects Where name = 'EPFormats' AND type in (N'U')) +Begin -- Rofst Tables + + SET ANSI_NULLS ON + SET QUOTED_IDENTIFIER ON + + CREATE TABLE [dbo].[EPFormats]( + [FormatID] [int] IDENTITY(1,1) NOT NULL, + [Name] [nvarchar](100) NOT NULL, + [Data] [xml] NULL, + [Created] [datetime] NOT NULL DEFAULT (getdate()), + [CreatedBy] [nvarchar](100) NOT NULL DEFAULT (upper(suser_sname())), + [Updated] [datetime] NOT NULL DEFAULT (getdate()), + [UpdatedBy] [nvarchar](100) NOT NULL DEFAULT (upper(suser_sname())) + CONSTRAINT [PK_EPFormats] PRIMARY KEY CLUSTERED + ( + [FormatID] ASC + )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] + ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] + + IF (@@Error = 0) PRINT 'Table Creation: [EPFormats] Succeeded' + ELSE PRINT 'Table Creation: [EPFormats] Error on Creation' + +End +Go + +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_UpdateEPFormat]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE [vesp_UpdateEPFormat]; +GO + +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO +-- ============================================= +-- Author: Matthew Schill +-- Create date: 3/26/2025 +-- Description: Update / Insert EP Format +-- ============================================= +CREATE PROCEDURE [dbo].[vesp_UpdateEPFormat] +( + @name nvarchar(100), + @data nvarchar(max), + @userID nvarchar(15) +) +WITH EXECUTE AS OWNER +AS + +IF EXISTS(Select 1 FROM EPFormats where Name = @name ) + BEGIN + UpDate EPFormats + SET Name = @name, + Data = @data, + Updated = getdate(), + UpdatedBy = upper(@userID) + WHERE Name = @name + END +ELSE + BEGIN + INSERT INTO EPFormats (Name, Data, CreatedBy, UpdatedBy) + values (@name, @data, 'Migration', 'Migration') + + END + +GO + +IF (@@Error = 0) PRINT 'Running vesp_UpdateEPFormat Succeeded' +ELSE PRINT 'Running vesp_UpdateEPFormat Failed to Execute' +GO +UPDATE Formats SET ApplicablePlant = 1000 WHERE [Name] LIKE 'EPTST%'; +Go +--- end changes for: +---C2025-023 - Electronic Procedures - Modifications to PROMS /* --------------------------------------------------------------------------- @@ -23844,8 +24062,8 @@ BEGIN TRY -- Try Block DECLARE @RevDate varchar(255) DECLARE @RevDescription varchar(255) - set @RevDate = '4/03/2025 6:14 PM' - set @RevDescription = 'B2022-031 Add filtering for Proc and Section name from Global Search' + set @RevDate = '4/8/2025 11:24' + set @RevDescription = 'Added support for EP Viewer Editing' Select cast(@RevDate as datetime) RevDate, @RevDescription RevDescription PRINT 'SQL Code Revision ' + @RevDate + ' - ' + @RevDescription diff --git a/PROMS/VEPROMS.CSLA.Library/Config/AnnotationConfig.cs b/PROMS/VEPROMS.CSLA.Library/Config/AnnotationConfig.cs new file mode 100644 index 00000000..feb430cd --- /dev/null +++ b/PROMS/VEPROMS.CSLA.Library/Config/AnnotationConfig.cs @@ -0,0 +1,45 @@ +using System; +using System.Collections.Generic; +using System.Text; +using System.ComponentModel; + +namespace VEPROMS.CSLA.Library +{ + //C2025-023 - Electronic Procedures - Modifications to PROMS + //new class to handle access of tblAnnotations.Config + [Serializable] + [TypeConverter(typeof(ExpandableObjectConverter))] + public class AnnotationConfig : ConfigDynamicTypeDescriptor, INotifyPropertyChanged + { + private XMLProperties _Xp; + private XMLProperties Xp + { + get { return _Xp; } + } + public AnnotationConfig(string xml) + { + if (xml == string.Empty) xml = ""; + _Xp = new XMLProperties(xml); + } + + public AnnotationConfig() + { + _Xp = new XMLProperties(); + } + public override string ToString() + { + string s = _Xp.ToString(); + if (s == "" || s == "") return string.Empty; + return s; + } + public string GetValue(string group, string item) + { + return _Xp[group, item]; + } + public void SetValue(string group, string item, string newvalue) + { + _Xp[group, item] = newvalue; + } + + } +} diff --git a/PROMS/VEPROMS.CSLA.Library/Extension/FormatExt.cs b/PROMS/VEPROMS.CSLA.Library/Extension/FormatExt.cs index 02cd7989..a4e5383a 100644 --- a/PROMS/VEPROMS.CSLA.Library/Extension/FormatExt.cs +++ b/PROMS/VEPROMS.CSLA.Library/Extension/FormatExt.cs @@ -19,6 +19,7 @@ using System.Xml; using System.Drawing; using System.ComponentModel; using System.Collections.Generic; +using Volian.Base.Library; namespace VEPROMS.CSLA.Library { @@ -226,6 +227,34 @@ namespace VEPROMS.CSLA.Library //} } OnFormatLoaded(null, new FormatEventArgs("Formats Updated")); + + //C2025-023 - Electronic Procedures - Modifications to PROMS + //Begin section for processing Electronic Procedure (EP) Format Files + // now loop through all EP format files + string epPath = fmtPath.Replace("\\fmtall", "\\epall"); + DirectoryInfo diEP = new DirectoryInfo(epPath); + if (diEP.Exists) + { + FileInfo[] fisEP = diEP.GetFiles("*.xml"); + OnFormatLoaded(null, new FormatEventArgs(fisEP.Length.ToString() + " EP Formats to Load")); + foreach (FileInfo fi in fisEP) + { + string fmtname = Path.GetFileNameWithoutExtension(fi.Name); + try + { + AddEPFormatToDB(fmtname, DateTime.Now, VlnSettings.UserID, epPath); + } + catch (Exception ex) + { + Console.WriteLine("{0} - {1}", ex.GetType().Name, ex.Message); + } + } + OnFormatLoaded(null, new FormatEventArgs("EP Formats Updated")); + + // update all in-use annotation types that have Electronic Procedures + EPFormatFile.UpdateAllInUseEPAnnotationTypes(); + } + } private static Dictionary _LookupFormats; @@ -338,8 +367,54 @@ namespace VEPROMS.CSLA.Library } return rec; } + + //C2025-023 - Electronic Procedures - Modifications to PROMS + //Procedure to load the EP format fiels into the DB + private static void AddEPFormatToDB(string formatname, DateTime Dts, string Userid, string epPath) + { + string fmtdata = null; + FileInfo fmtfi = null; + XmlDocument xd = null; + + OnFormatLoaded(null, new FormatEventArgs("Loading Format " + formatname)); + + string path = Path.Combine(epPath, formatname + ".xml"); + if (File.Exists(path)) + { + try + { + using (StreamReader srf = new StreamReader(path)) + { + fmtfi = new FileInfo(path); + xd = new XmlDocument(); + xd.XmlResolver = null; + xd.Load(srf); + fmtdata = xd.OuterXml; + } + } + catch (Exception ex) + { + OnFormatLoaded(null, new FormatEventArgs("Error Loading Format " + formatname)); + _MyLog.ErrorFormat($"AddEPFormatToDB('{path}')"); + return; + } + } + + if (string.IsNullOrEmpty(Userid)) Userid = "Migration"; + + try + { + EPFormatFile.UpdateEPFormat(formatname, fmtdata, Userid); + } + catch (Exception ex) + { + _MyLog.ErrorFormat($"AddFormatToDB-make format('{path}')"); + } + + } } - public partial class FormatInfo : IFormatOrFormatInfo + +public partial class FormatInfo : IFormatOrFormatInfo { //transition report stuff private static Dictionary _TransitionTypes; diff --git a/PROMS/VEPROMS.CSLA.Library/Extension/ItemExt.cs b/PROMS/VEPROMS.CSLA.Library/Extension/ItemExt.cs index 668e1cf5..2dcfd7c5 100644 --- a/PROMS/VEPROMS.CSLA.Library/Extension/ItemExt.cs +++ b/PROMS/VEPROMS.CSLA.Library/Extension/ItemExt.cs @@ -2112,6 +2112,56 @@ namespace VEPROMS.CSLA.Library return (sd.Type == type); } + // C2025-023 - Electronic Procedures - Modifications to PROMS + //return EPFields that match this step type or a parent step type + public EPFields GetValidEPFields(int AnnTypeID) + { + EPFields filtered = new EPFields(); + + if (ActiveFormat.PlantFormat.EPFormatFiles.Count == 0) return filtered; + if ((int)MyContent.Type < 20000) return filtered; + EPFields unfiltered = ActiveFormat.PlantFormat.EPFormatFiles.Find(x => x.AnnotationTypeID == AnnTypeID)?.FieldList; + if (unfiltered == null) return filtered; + + //Build list of step type and step type of it's parents + List steptypelist = new List(); + int stepType = ((int)MyContent.Type) % 10000; + StepDataList sdlist = ActiveFormat.PlantFormat.FormatData.StepDataList; + if (stepType > sdlist.MaxIndex) + { + Console.WriteLine("Error getting type - contentid = {0}", MyContent.ContentID); + return filtered; + } + StepData sd = sdlist[stepType]; + while (sd.Index != 0) + { + steptypelist.Add(sd.Type); + sd = sdlist[sd.ParentType]; + } + + //if unfiltered list contains All as a step type, include it + foreach (EPField EP in unfiltered) + { + //if unfiltered list contains All as a step type, include it + if (EP.IsValidForStepType("All")) + filtered.Add(EP); + + //check for intersections between unfiltered list and step type list + List tmpEP = EP.validforsteptypes(); + if (tmpEP.Any(steptypelist.Contains)) + filtered.Add(EP); + } + + return filtered; + } + + // C2025-023 - Electronic Procedures - Modifications to PROMS + //return true if any EP Format files attached to the item's + public bool HasEPformat(int AnnTypeID) + { + return GetValidEPFields(AnnTypeID).Count > 0; + } + // determine if the the current step should automatically be placed on the Continuous Action Summary // Note, this logic only checks the format setting of the step. We will check the value of the Tag's Check Box later on. public bool IncludeOnContActSum diff --git a/PROMS/VEPROMS.CSLA.Library/Format/EPFormatFile.cs b/PROMS/VEPROMS.CSLA.Library/Format/EPFormatFile.cs new file mode 100644 index 00000000..0d2253d2 --- /dev/null +++ b/PROMS/VEPROMS.CSLA.Library/Format/EPFormatFile.cs @@ -0,0 +1,412 @@ +using System; +using System.Collections.Generic; +using System.Text; +using System.ComponentModel; +using System.Xml; +using System.Linq; +using System.Data.SqlClient; +using System.Data; +using Csla.Data; +using static VEPROMS.CSLA.Library.ROFSTLookup; + +namespace VEPROMS.CSLA.Library +{ + //C2025-023 - Electronic Procedures - Modifications to PROMS + // class to handle storage and access of EPFormatFile and EPFormatFile details + #region EPFormatFiles + [TypeConverter(typeof(vlnListConverter))] + public class EPFormatFiles : vlnFormatList + { + public EPFormatFiles(XmlNodeList xmlNodeList) : base(xmlNodeList) { } + } + #endregion + #region EPFormatFile + public class EPFormatFile : vlnFormatItem + { + #region Constructor + public EPFormatFile(XmlNode xmlNode) : base(xmlNode) { } + public EPFormatFile() : base() { } + #endregion + #region Business Fields + // Name of the EP Viewer Format File + private LazyLoad _Name; + [DisplayName("Name")] + [Description("EP Viewer File Name")] + public string Name + { + get + { + return LazyLoad(ref _Name, "@Name"); + } + } + // Name of the EP Viewer Format File + private LazyLoad _Description; + [DisplayName("Description")] + [Description("EP Viewer Description")] + public string Description + { + get + { + return LazyLoad(ref _Description, "@Description"); + } + } + // Id of Annotation Type Associated with this file + private LazyLoad _AnnotationTypeID; + [DisplayName("AnnotationTypeID")] + [Description("Id of Annotation Type Associated with this file")] + public int? AnnotationTypeID + { + get + { + return LazyLoad(ref _AnnotationTypeID, "@AnnotationTypeID"); + } + } + // returns a list of fields that are defined in the EP format's structure + private EPFields _FieldList; + public EPFields FieldList + { + get + { + XmlDocument xd = GetEPFormatData(Name); + return _FieldList == null ? _FieldList = new EPFields(xd.SelectNodes("/EPFormat/EPField")) : _FieldList; + } + } + #endregion + #region Business Methods + // update all in-use annotation types that have Electronic Procedures + public static void UpdateAllInUseEPAnnotationTypes() + { + foreach (int formatid in GetAllInUseFormats()) + { + PlantFormat frmt = FormatInfo.Get(formatid).PlantFormat; + foreach (EPFormatFile EP in frmt.EPFormatFiles) + { + UpdateAnnotationTypeAsEP((int) EP.AnnotationTypeID); + } + } + } + #endregion + #region Data Access + // static - Load EP Format details - save to db (insert/update) + public static void UpdateEPFormat(string name, string data, string userID) + { + using (SqlConnection cn = Database.VEPROMS_SqlConnection) + { + using (SqlCommand cm = cn.CreateCommand()) + { + cm.CommandType = CommandType.StoredProcedure; + cm.CommandText = "vesp_UpdateEPFormat"; + cm.Parameters.AddWithValue("@name", name); + cm.Parameters.AddWithValue("@data", data); + cm.Parameters.AddWithValue("@userID", userID); + cm.CommandTimeout = Database.DefaultTimeout; + cm.ExecuteNonQuery(); + } + } + } + + // load data for getting fieldlist for this EPFormat + public static XmlDocument GetEPFormatData(string name) + { + name = name.Replace(".xml", ""); + + using (SqlConnection cn = Database.VEPROMS_SqlConnection) + { + using (SqlCommand cm = cn.CreateCommand()) + { + cm.CommandType = CommandType.Text; + cm.CommandText = "Select Data FROM EPFormats where Name = @Name"; + cm.Parameters.AddWithValue("@Name", name); + cm.CommandTimeout = Database.DefaultTimeout; + using (SafeDataReader dr = new SafeDataReader(cm.ExecuteReader())) + { + if (dr.Read()) + { + XmlDocument xd = new XmlDocument(); + xd.XmlResolver = null; + xd.LoadXml(dr.GetString("Data")); + return xd; + } + } + } + } + + return null; + } + + // Get all in-use formats + public static List GetAllInUseFormats() + { + using (SqlConnection cn = Database.VEPROMS_SqlConnection) + { + using (SqlCommand cm = cn.CreateCommand()) + { + cm.CommandType = CommandType.Text; + cm.CommandText = @"SELECT Distinct Formats.[FormatID] + FROM + ( + SELECT FormatID FROM Contents + UNION + SELECT FormatID FROM DocVersions + UNION + SELECT FormatID FROM Folders + ) inuse + inner join Formats + on inuse.FormatID = Formats.FormatID"; + cm.CommandTimeout = Database.DefaultTimeout; + + using (DataTable dt = new DataTable()) + { + using (SqlDataAdapter da = new SqlDataAdapter(cm)) + { + da.Fill(dt); + return dt.AsEnumerable().Select(x => x.Field("FormatID")).ToList(); + } + } + + } + } + } + + // update an annotation type as an Electronic Procedure Annotation Type + public static void UpdateAnnotationTypeAsEP(int typeID) + { + using (SqlConnection cn = Database.VEPROMS_SqlConnection) + { + using (SqlCommand cm = cn.CreateCommand()) + { + cm.CommandType = CommandType.Text; + cm.CommandText = @"Update AnnotationTypes + SET IsEPAnnotationType = 1 + WHERE TypeID = @typeID"; + cm.Parameters.AddWithValue("@typeID", typeID); + cm.CommandTimeout = Database.DefaultTimeout; + cm.ExecuteNonQuery(); + } + } + } + + // Returns true if there are any EP Annotation Types + public static bool IsEPAnnotationType() + { + try + { + using (SqlConnection cn = Database.VEPROMS_SqlConnection) + { + using (SqlCommand cm = cn.CreateCommand()) + { + cm.CommandType = CommandType.Text; + cm.CommandText = @"SELECT RESULT = CASE WHEN + EXISTS(SELECT 1 FROM AnnotationTypes where IsEPAnnotationType = 1) + THEN 1 ELSE 0 END"; + cm.CommandTimeout = Database.DefaultTimeout; + using (SafeDataReader dr = new SafeDataReader(cm.ExecuteReader())) + { + if (dr.Read() && dr.GetInt32("RESULT") == 1) + return true; + } + } + } + } + catch + { + // EP Support has not yet been added for this DB + // IsEPAnnotationType does not exist + // need to run PROMS Fixes + // until then will ignore EP code + // instead of crashing for a field not found + } + + return false; + } + #endregion + } + + public class EPFields : vlnFormatList + { + public EPFields() + { + } + + public EPFields(XmlNodeList xmlNodeList) : base(xmlNodeList) { } + } + // EP field class + public class EPField : vlnFormatItem + { + public EPField(XmlNode xmlNode) : base(xmlNode) { } + public EPField() : base() { } + private LazyLoad _name; + public string name + { + get + { + return LazyLoad(ref _name, "@name"); + } + } + private LazyLoad _type; + public string type + { + get + { + return LazyLoad(ref _type, "@type"); + } + } + private LazyLoad _label; + public string label + { + get + { + string tmp = LazyLoad(ref _label, "@label"); + + if (string.IsNullOrEmpty(tmp)) + return LazyLoad(ref _name, "@name"); + else + return tmp; + } + } + private LazyLoad _text; + public string text + { + get + { + return LazyLoad(ref _text, "@text"); + } + } + //roid of group item that individual sub-items will be the choices for the list/combobox for ROSINGLE and ROMULTI + private LazyLoad _rosource; + public string rosource + { + get + { + return LazyLoad(ref _rosource, "@rosource"); + } + } + //the columns in the RO that will be included in the exports + private LazyLoad _returncols; + public List returncols() + { + try + { + string tmp = LazyLoad(ref _returncols, "@returncols"); + + if (string.IsNullOrEmpty(tmp)) + return new List(); + else + return tmp.Split(',').Select(p => p.Trim()).ToList(); + } + catch + { + throw new ArgumentException($"Error in returncols for EP file: {((EPFormatFile)MyParentFormat).Name}.xml, field: {name}"); + } + } + + //number of lines for a multi-line text box to span + private LazyLoad _numlines; + public int numlines + { + get + { + int? tmp = LazyLoad(ref _numlines, "@numlines"); + + if (tmp == null) + return 1; + + return (int) tmp; + } + } + //step types that the EPForma Item is valid for (as a list of types) + private LazyLoad _validforsteptypes; + public List validforsteptypes() + { + try + { + string tmp = LazyLoad(ref _validforsteptypes, "@validforsteptypes"); + return tmp.Split(',').Select(p => p.Trim()).ToList(); + } + catch + { + throw new ArgumentException($"Error in validforsteptypes for EP file: {((EPFormatFile) MyParentFormat).Name}.xml, field: {name}"); + } + } + public bool IsValidForStepType(string StepType) + { + List tmp = validforsteptypes(); + return tmp.Contains(StepType); + } + + //return a list of items based on the ROsource specified in the EPFormat File + //will return all RO items under the Group that's roid = the rosource + public List getROList(AnnotationInfo currAnn, bool includeblank) + { + if (string.IsNullOrEmpty(rosource)) + return new List(); + + try + { + DocVersionInfo MyDocVersion = currAnn.MyItem.MyDocVersion; + ROFSTLookup lookup = MyDocVersion.DocVersionAssociations[0].MyROFst.GetROFSTLookup(MyDocVersion); + + string roid = FormatRoidKey(rosource, false); + rochild[] children = lookup.GetRoChildrenByRoid(roid); + + List mylist = children.Select(x => new ROListItem(x.title, x.roid.Substring(0, 12))).ToList(); + if (includeblank) + mylist.Insert(0, new ROListItem("", "")); + + return mylist; + } + catch (Exception Ex) + { + throw new ArgumentException($"Error in rosource for EP file: {((EPFormatFile)MyParentFormat).Name}.xml, field: {name}"); + } + } + + + //return a list of values for the specified ROID + //given the EP items return columns + //will return all RO items under the Group that's roid = the rosource + public List getROValuesList(AnnotationInfo currAnn, string roid) + { + if (string.IsNullOrEmpty(roid)) + return new List(); + + List values = new List(); + DocVersionInfo MyDocVersion = currAnn.MyItem.MyDocVersion; + ROFSTLookup lookup = MyDocVersion.DocVersionAssociations[0].MyROFst.GetROFSTLookup(MyDocVersion); + rochild ro = lookup.GetRoChild(roid); + + List rtncols = returncols(); + + if (rtncols.Count == 0) + { + values.Add(ro.value); + } + else + { + foreach (string rcol in rtncols) + { + rochild ro_indiv = Array.Find(ro.children, x => x.appid.EndsWith($".{rcol}")); + if (ro_indiv.value != null) values.Add(ro_indiv.value); + } + } + + return values; + + } + } + #endregion + //C2025-023 - Electronic Procedures - Modifications to PROMS + // class to handle return of RO Lists + #region EPFormatFiles + public class ROListItem + { + public string Text { get; private set; } + public string Value { get; private set; } + public ROListItem(string _text, string _value) + { + Text = _text; Value = _value; + } + } + #endregion +} + diff --git a/PROMS/VEPROMS.CSLA.Library/Format/PlantFormat.cs b/PROMS/VEPROMS.CSLA.Library/Format/PlantFormat.cs index 8232a8d6..6703b87c 100644 --- a/PROMS/VEPROMS.CSLA.Library/Format/PlantFormat.cs +++ b/PROMS/VEPROMS.CSLA.Library/Format/PlantFormat.cs @@ -192,6 +192,18 @@ namespace VEPROMS.CSLA.Library } return (retlist); } + + //C2025-023 - Electronic Procedures - Modifications to PROMS + // EPFormatFiles contains which Electronic Procedure Format files apply to this main format file. + private EPFormatFiles _EPFormatFiles; + public EPFormatFiles EPFormatFiles + { + get + { + if (_EPFormatFiles == null) _EPFormatFiles = new EPFormatFiles(XmlDoc.SelectNodes("/PlantFormat/EPFormatFiles/EPFormatFile")); + return _EPFormatFiles; + } + } } #endregion #region VE_Font diff --git a/PROMS/VEPROMS.CSLA.Library/Format/vlnFormat.cs b/PROMS/VEPROMS.CSLA.Library/Format/vlnFormat.cs index 312582e8..c7676e27 100644 --- a/PROMS/VEPROMS.CSLA.Library/Format/vlnFormat.cs +++ b/PROMS/VEPROMS.CSLA.Library/Format/vlnFormat.cs @@ -57,6 +57,8 @@ namespace VEPROMS.CSLA.Library XmlNode xn = xmlNode.SelectSingleNode(path); if (xmlNode.Name == "Box") return xn; // if box, don't do inheritance. if (xmlNode.Name == "DocStyle") return xn; + //C2025-023 - Electronic Procedures - Modifications to PROMS + if (xmlNode.Name == "EPField") return xn; // if Electronic Procedure Field, don't do inheritance. if (xmlNode.Name == "StructureStyle") { Volian.Base.Library.DebugText.WriteLine("vlnFormatDocument:LookupSingleNode:StructureStyle - shouldn't get to this line of code.\r\nPath = {0}", path); diff --git a/PROMS/VEPROMS.CSLA.Library/Generated/AnnotationType.cs b/PROMS/VEPROMS.CSLA.Library/Generated/AnnotationType.cs index d586f302..913453ef 100644 --- a/PROMS/VEPROMS.CSLA.Library/Generated/AnnotationType.cs +++ b/PROMS/VEPROMS.CSLA.Library/Generated/AnnotationType.cs @@ -18,6 +18,8 @@ using System.IO; using System.ComponentModel; using System.Collections.Generic; using Csla.Validation; +using System.Linq; + namespace VEPROMS.CSLA.Library { /// @@ -207,6 +209,27 @@ namespace VEPROMS.CSLA.Library } } } + + //C2025-023 - Electronic Procedures - Modifications to PROMS + // Is Annotation Type an EP Annotation? + private bool _IsEPAnnotationType = false; + public bool IsEPAnnotationType + { + [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)] + get + { + return _IsEPAnnotationType; + } + [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)] + set + { + if (_IsEPAnnotationType != value) + { + _IsEPAnnotationType = value; + PropertyHasChanged(); + } + } + } private byte[] _LastChanged = new byte[8];//timestamp private int _AnnotationTypeAnnotationCount = 0; /// @@ -712,6 +735,8 @@ namespace VEPROMS.CSLA.Library _UserID = dr.GetString("UserID"); dr.GetBytes("LastChanged", 0, _LastChanged, 0, 8); _AnnotationTypeAnnotationCount = dr.GetInt32("AnnotationCount"); + if (dr.GetSchemaTable().Rows.OfType().Any(row => row["ColumnName"].ToString() == "IsEPAnnotationType")) + _IsEPAnnotationType = (bool)dr.GetValue("IsEPAnnotationType"); MarkOld(); } catch (Exception ex) diff --git a/PROMS/VEPROMS.CSLA.Library/Generated/AnnotationTypeInfo.cs b/PROMS/VEPROMS.CSLA.Library/Generated/AnnotationTypeInfo.cs index a82473e1..9aeb05cc 100644 --- a/PROMS/VEPROMS.CSLA.Library/Generated/AnnotationTypeInfo.cs +++ b/PROMS/VEPROMS.CSLA.Library/Generated/AnnotationTypeInfo.cs @@ -17,6 +17,8 @@ using System.Configuration; using System.IO; using System.ComponentModel; using System.Collections.Generic; +using System.Linq; + namespace VEPROMS.CSLA.Library { public delegate void AnnotationTypeInfoEvent(object sender); @@ -135,6 +137,19 @@ namespace VEPROMS.CSLA.Library return _UserID; } } + + //C2025-023 - Electronic Procedures - Modifications to PROMS + // Is Annotation Type an EP Annotation? + private bool _IsEPAnnotationType = false; + public bool IsEPAnnotationType + { + [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)] + get + { + return _IsEPAnnotationType; + } + } + private int _AnnotationTypeAnnotationCount = 0; /// /// Count of AnnotationTypeAnnotations for this AnnotationType @@ -312,6 +327,8 @@ namespace VEPROMS.CSLA.Library _DTS = dr.GetDateTime("DTS"); _UserID = dr.GetString("UserID"); _AnnotationTypeAnnotationCount = dr.GetInt32("AnnotationCount"); + if (dr.GetSchemaTable().Rows.OfType().Any(row => row["ColumnName"].ToString() == "IsEPAnnotationType")) + _IsEPAnnotationType = (bool)dr.GetValue("IsEPAnnotationType"); } catch (Exception ex) { diff --git a/PROMS/VEPROMS.CSLA.Library/VEPROMS.CSLA.Library.csproj b/PROMS/VEPROMS.CSLA.Library/VEPROMS.CSLA.Library.csproj index 469a09b4..3af1e207 100644 --- a/PROMS/VEPROMS.CSLA.Library/VEPROMS.CSLA.Library.csproj +++ b/PROMS/VEPROMS.CSLA.Library/VEPROMS.CSLA.Library.csproj @@ -98,6 +98,7 @@ + @@ -107,6 +108,7 @@ Properties\Settings.Designer.cs + @@ -164,6 +166,7 @@ + diff --git a/PROMS/Volian.Controls.Library/AnnotationDetails.Designer.cs b/PROMS/Volian.Controls.Library/AnnotationDetails.Designer.cs index b7cee59f..19adb53a 100644 --- a/PROMS/Volian.Controls.Library/AnnotationDetails.Designer.cs +++ b/PROMS/Volian.Controls.Library/AnnotationDetails.Designer.cs @@ -28,326 +28,341 @@ namespace Volian.Controls.Library /// private void InitializeComponent() { - this.components = new System.ComponentModel.Container(); - System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle(); - this.superTooltip1 = new DevComponents.DotNetBar.SuperTooltip(); - this.rtxbComment = new System.Windows.Forms.RichTextBox(); - this.btnSaveAnnotation = new DevComponents.DotNetBar.ButtonX(); - this.btnCancelAnnoation = new DevComponents.DotNetBar.ButtonX(); - this.cbGridAnnoType = new DevComponents.DotNetBar.Controls.ComboBoxEx(); - this.btnRemoveAnnotation = new DevComponents.DotNetBar.ButtonX(); - this.btnAddAnnotation = new DevComponents.DotNetBar.ButtonX(); - this.pannelAnnoEdit = new DevComponents.DotNetBar.PanelEx(); - this.labelX1 = new DevComponents.DotNetBar.LabelX(); - this.panelAnnoEditBtns = new DevComponents.DotNetBar.PanelEx(); - this.expandableSplitter4 = new DevComponents.DotNetBar.ExpandableSplitter(); - this.pannelAnnoGrid = new DevComponents.DotNetBar.PanelEx(); - this.dgAnnotations = new DevComponents.DotNetBar.Controls.DataGridViewX(); - this.myAnnotationTypeDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); - this.dTSDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); - this.userIDDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); - this.searchTextDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); - this.itemAnnotationsBindingSource = new System.Windows.Forms.BindingSource(this.components); - this.pannelAnnoEdit.SuspendLayout(); - this.panelAnnoEditBtns.SuspendLayout(); - this.pannelAnnoGrid.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.dgAnnotations)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.itemAnnotationsBindingSource)).BeginInit(); - this.SuspendLayout(); - // - // superTooltip1 - // - this.superTooltip1.DefaultTooltipSettings = new DevComponents.DotNetBar.SuperTooltipInfo("", "", "", null, null, DevComponents.DotNetBar.eTooltipColor.Gray); - this.superTooltip1.LicenseKey = "F962CEC7-CD8F-4911-A9E9-CAB39962FC1F"; - // - // rtxbComment - // - this.rtxbComment.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + this.components = new System.ComponentModel.Container(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle(); + this.superTooltip1 = new DevComponents.DotNetBar.SuperTooltip(); + this.rtxbComment = new System.Windows.Forms.RichTextBox(); + this.btnSaveAnnotation = new DevComponents.DotNetBar.ButtonX(); + this.btnCancelAnnoation = new DevComponents.DotNetBar.ButtonX(); + this.cbGridAnnoType = new DevComponents.DotNetBar.Controls.ComboBoxEx(); + this.btnRemoveAnnotation = new DevComponents.DotNetBar.ButtonX(); + this.btnAddAnnotation = new DevComponents.DotNetBar.ButtonX(); + this.btnEPAnnotation = new DevComponents.DotNetBar.ButtonX(); + this.pannelAnnoEdit = new DevComponents.DotNetBar.PanelEx(); + this.labelX1 = new DevComponents.DotNetBar.LabelX(); + this.panelAnnoEditBtns = new DevComponents.DotNetBar.PanelEx(); + this.expandableSplitter4 = new DevComponents.DotNetBar.ExpandableSplitter(); + this.pannelAnnoGrid = new DevComponents.DotNetBar.PanelEx(); + this.dgAnnotations = new DevComponents.DotNetBar.Controls.DataGridViewX(); + this.myAnnotationTypeDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.dTSDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.userIDDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.searchTextDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.itemAnnotationsBindingSource = new System.Windows.Forms.BindingSource(this.components); + this.pannelAnnoEdit.SuspendLayout(); + this.panelAnnoEditBtns.SuspendLayout(); + this.pannelAnnoGrid.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.dgAnnotations)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.itemAnnotationsBindingSource)).BeginInit(); + this.SuspendLayout(); + // + // superTooltip1 + // + this.superTooltip1.DefaultTooltipSettings = new DevComponents.DotNetBar.SuperTooltipInfo("", "", "", null, null, DevComponents.DotNetBar.eTooltipColor.Gray); + this.superTooltip1.LicenseKey = "F962CEC7-CD8F-4911-A9E9-CAB39962FC1F"; + // + // rtxbComment + // + this.rtxbComment.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); - this.rtxbComment.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(255)))), ((int)(((byte)(128))))); - this.rtxbComment.Font = new System.Drawing.Font("Microsoft Sans Serif", 10F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.rtxbComment.Location = new System.Drawing.Point(87, 33); - this.rtxbComment.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); - this.rtxbComment.Name = "rtxbComment"; - this.rtxbComment.ScrollBars = System.Windows.Forms.RichTextBoxScrollBars.Vertical; - this.rtxbComment.Size = new System.Drawing.Size(489, 291); - this.superTooltip1.SetSuperTooltip(this.rtxbComment, new DevComponents.DotNetBar.SuperTooltipInfo("Annotation", "", "Enter the annotation information here.", null, null, DevComponents.DotNetBar.eTooltipColor.Gray)); - this.rtxbComment.TabIndex = 1; - this.rtxbComment.Text = ""; - this.rtxbComment.TextChanged += new System.EventHandler(this.rtxbComment_TextChanged); - // - // btnSaveAnnotation - // - this.btnSaveAnnotation.AccessibleRole = System.Windows.Forms.AccessibleRole.PushButton; - this.btnSaveAnnotation.Enabled = false; - this.btnSaveAnnotation.Location = new System.Drawing.Point(491, 4); - this.btnSaveAnnotation.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); - this.btnSaveAnnotation.Name = "btnSaveAnnotation"; - this.btnSaveAnnotation.Size = new System.Drawing.Size(71, 25); - this.superTooltip1.SetSuperTooltip(this.btnSaveAnnotation, new DevComponents.DotNetBar.SuperTooltipInfo("Save Changes", "", "This will save the new annotation or changes made to an existing annotation.", null, null, DevComponents.DotNetBar.eTooltipColor.Gray)); - this.btnSaveAnnotation.TabIndex = 9; - this.btnSaveAnnotation.Text = "Save"; - this.btnSaveAnnotation.Click += new System.EventHandler(this.btnSaveAnnotation_Click); - // - // btnCancelAnnoation - // - this.btnCancelAnnoation.AccessibleRole = System.Windows.Forms.AccessibleRole.PushButton; - this.btnCancelAnnoation.Enabled = false; - this.btnCancelAnnoation.Location = new System.Drawing.Point(401, 4); - this.btnCancelAnnoation.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); - this.btnCancelAnnoation.Name = "btnCancelAnnoation"; - this.btnCancelAnnoation.Size = new System.Drawing.Size(69, 25); - this.superTooltip1.SetSuperTooltip(this.btnCancelAnnoation, new DevComponents.DotNetBar.SuperTooltipInfo("Cancel", "", "This will cancel the changes made to the annotation text and type selection", null, null, DevComponents.DotNetBar.eTooltipColor.Gray, true, true, new System.Drawing.Size(145, 100))); - this.btnCancelAnnoation.TabIndex = 8; - this.btnCancelAnnoation.Text = "Cancel"; - this.btnCancelAnnoation.Click += new System.EventHandler(this.btnCancelAnnoation_Click); - // - // cbGridAnnoType - // - this.cbGridAnnoType.DisplayMember = "Text"; - this.cbGridAnnoType.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed; - this.cbGridAnnoType.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.cbGridAnnoType.FlatStyle = System.Windows.Forms.FlatStyle.Standard; - this.cbGridAnnoType.Font = new System.Drawing.Font("Microsoft Sans Serif", 7.8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.cbGridAnnoType.ForeColor = System.Drawing.SystemColors.WindowText; - this.cbGridAnnoType.ItemHeight = 17; - this.cbGridAnnoType.Location = new System.Drawing.Point(133, 4); - this.cbGridAnnoType.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); - this.cbGridAnnoType.Name = "cbGridAnnoType"; - this.cbGridAnnoType.PreventEnterBeep = true; - this.cbGridAnnoType.Size = new System.Drawing.Size(244, 23); - this.superTooltip1.SetSuperTooltip(this.cbGridAnnoType, new DevComponents.DotNetBar.SuperTooltipInfo("Select Annotation Type", "", "This drop down list contains the possible annotation types.", null, null, DevComponents.DotNetBar.eTooltipColor.Gray)); - this.cbGridAnnoType.TabIndex = 7; - this.cbGridAnnoType.WatermarkBehavior = DevComponents.DotNetBar.eWatermarkBehavior.HideNonEmpty; - this.cbGridAnnoType.WatermarkText = "Select Annotation Type"; - this.cbGridAnnoType.SelectedValueChanged += new System.EventHandler(this.cbGridAnnoType_SelectedValueChanged); - // - // btnRemoveAnnotation - // - this.btnRemoveAnnotation.AccessibleRole = System.Windows.Forms.AccessibleRole.PushButton; - this.btnRemoveAnnotation.Location = new System.Drawing.Point(5, 34); - this.btnRemoveAnnotation.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); - this.btnRemoveAnnotation.Name = "btnRemoveAnnotation"; - this.btnRemoveAnnotation.Size = new System.Drawing.Size(71, 25); - this.superTooltip1.SetSuperTooltip(this.btnRemoveAnnotation, new DevComponents.DotNetBar.SuperTooltipInfo("Remove Annotation", "", "This will remove the currently selected annotation.", null, null, DevComponents.DotNetBar.eTooltipColor.Gray)); - this.btnRemoveAnnotation.TabIndex = 4; - this.btnRemoveAnnotation.Text = "Remove"; - this.btnRemoveAnnotation.Click += new System.EventHandler(this.btnRemoveAnnotation_Click); - // - // btnAddAnnotation - // - this.btnAddAnnotation.AccessibleRole = System.Windows.Forms.AccessibleRole.PushButton; - this.btnAddAnnotation.Location = new System.Drawing.Point(5, 4); - this.btnAddAnnotation.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); - this.btnAddAnnotation.Name = "btnAddAnnotation"; - this.btnAddAnnotation.Size = new System.Drawing.Size(71, 25); - this.superTooltip1.SetSuperTooltip(this.btnAddAnnotation, new DevComponents.DotNetBar.SuperTooltipInfo("Add New Annotation", "", "This button will create a new annotation.", null, null, DevComponents.DotNetBar.eTooltipColor.Gray)); - this.btnAddAnnotation.TabIndex = 3; - this.btnAddAnnotation.Text = "Add"; - this.btnAddAnnotation.Click += new System.EventHandler(this.btnAddAnnotation_Click); - // - // pannelAnnoEdit - // - this.pannelAnnoEdit.CanvasColor = System.Drawing.SystemColors.Control; - this.pannelAnnoEdit.Controls.Add(this.rtxbComment); - this.pannelAnnoEdit.Controls.Add(this.btnSaveAnnotation); - this.pannelAnnoEdit.Controls.Add(this.btnCancelAnnoation); - this.pannelAnnoEdit.Controls.Add(this.labelX1); - this.pannelAnnoEdit.Controls.Add(this.cbGridAnnoType); - this.pannelAnnoEdit.Controls.Add(this.panelAnnoEditBtns); - this.pannelAnnoEdit.DisabledBackColor = System.Drawing.Color.Empty; - this.pannelAnnoEdit.Dock = System.Windows.Forms.DockStyle.Fill; - this.pannelAnnoEdit.Location = new System.Drawing.Point(548, 0); - this.pannelAnnoEdit.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); - this.pannelAnnoEdit.Name = "pannelAnnoEdit"; - this.pannelAnnoEdit.Size = new System.Drawing.Size(576, 325); - this.pannelAnnoEdit.Style.Alignment = System.Drawing.StringAlignment.Center; - this.pannelAnnoEdit.Style.BackColor1.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBackground; - this.pannelAnnoEdit.Style.BackColor2.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBackground2; - this.pannelAnnoEdit.Style.Border = DevComponents.DotNetBar.eBorderType.SingleLine; - this.pannelAnnoEdit.Style.BorderColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder; - this.pannelAnnoEdit.Style.ForeColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelText; - this.pannelAnnoEdit.Style.GradientAngle = 90; - this.pannelAnnoEdit.TabIndex = 16; - this.pannelAnnoEdit.Text = "panelEx2"; - this.pannelAnnoEdit.ThemeAware = true; - // - // labelX1 - // - this.labelX1.AutoSize = true; - // - // - // - this.labelX1.BackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square; - this.labelX1.Font = new System.Drawing.Font("Microsoft Sans Serif", 7.8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.labelX1.Location = new System.Drawing.Point(93, 7); - this.labelX1.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); - this.labelX1.Name = "labelX1"; - this.labelX1.Size = new System.Drawing.Size(35, 17); - this.labelX1.TabIndex = 10; - this.labelX1.Text = "Type:"; - // - // panelAnnoEditBtns - // - this.panelAnnoEditBtns.CanvasColor = System.Drawing.SystemColors.Control; - this.panelAnnoEditBtns.Controls.Add(this.btnRemoveAnnotation); - this.panelAnnoEditBtns.Controls.Add(this.btnAddAnnotation); - this.panelAnnoEditBtns.DisabledBackColor = System.Drawing.Color.Empty; - this.panelAnnoEditBtns.Dock = System.Windows.Forms.DockStyle.Left; - this.panelAnnoEditBtns.Location = new System.Drawing.Point(0, 0); - this.panelAnnoEditBtns.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); - this.panelAnnoEditBtns.Name = "panelAnnoEditBtns"; - this.panelAnnoEditBtns.Size = new System.Drawing.Size(87, 325); - this.panelAnnoEditBtns.Style.Alignment = System.Drawing.StringAlignment.Center; - this.panelAnnoEditBtns.Style.BackColor1.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBackground; - this.panelAnnoEditBtns.Style.BackColor2.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBackground2; - this.panelAnnoEditBtns.Style.BorderColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder; - this.panelAnnoEditBtns.Style.ForeColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelText; - this.panelAnnoEditBtns.Style.GradientAngle = 90; - this.panelAnnoEditBtns.TabIndex = 11; - this.panelAnnoEditBtns.ThemeAware = true; - // - // expandableSplitter4 - // - this.expandableSplitter4.BackColor2 = System.Drawing.Color.FromArgb(((int)(((byte)(101)))), ((int)(((byte)(147)))), ((int)(((byte)(207))))); - this.expandableSplitter4.BackColor2SchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder; - this.expandableSplitter4.BackColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBackground; - this.expandableSplitter4.ExpandFillColor = System.Drawing.Color.FromArgb(((int)(((byte)(101)))), ((int)(((byte)(147)))), ((int)(((byte)(207))))); - this.expandableSplitter4.ExpandFillColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder; - this.expandableSplitter4.ExpandLineColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(0)))), ((int)(((byte)(0))))); - this.expandableSplitter4.ExpandLineColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.ItemText; - this.expandableSplitter4.GripDarkColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(0)))), ((int)(((byte)(0))))); - this.expandableSplitter4.GripDarkColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.ItemText; - this.expandableSplitter4.GripLightColor = System.Drawing.Color.FromArgb(((int)(((byte)(227)))), ((int)(((byte)(239)))), ((int)(((byte)(255))))); - this.expandableSplitter4.GripLightColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.BarBackground; - this.expandableSplitter4.HotBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(252)))), ((int)(((byte)(151)))), ((int)(((byte)(61))))); - this.expandableSplitter4.HotBackColor2 = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(184)))), ((int)(((byte)(94))))); - this.expandableSplitter4.HotBackColor2SchemePart = DevComponents.DotNetBar.eColorSchemePart.ItemPressedBackground2; - this.expandableSplitter4.HotBackColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.ItemPressedBackground; - this.expandableSplitter4.HotExpandFillColor = System.Drawing.Color.FromArgb(((int)(((byte)(101)))), ((int)(((byte)(147)))), ((int)(((byte)(207))))); - this.expandableSplitter4.HotExpandFillColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder; - this.expandableSplitter4.HotExpandLineColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(0)))), ((int)(((byte)(0))))); - this.expandableSplitter4.HotExpandLineColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.ItemText; - this.expandableSplitter4.HotGripDarkColor = System.Drawing.Color.FromArgb(((int)(((byte)(101)))), ((int)(((byte)(147)))), ((int)(((byte)(207))))); - this.expandableSplitter4.HotGripDarkColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder; - this.expandableSplitter4.HotGripLightColor = System.Drawing.Color.FromArgb(((int)(((byte)(227)))), ((int)(((byte)(239)))), ((int)(((byte)(255))))); - this.expandableSplitter4.HotGripLightColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.BarBackground; - this.expandableSplitter4.Location = new System.Drawing.Point(545, 0); - this.expandableSplitter4.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); - this.expandableSplitter4.Name = "expandableSplitter4"; - this.expandableSplitter4.Size = new System.Drawing.Size(3, 325); - this.expandableSplitter4.Style = DevComponents.DotNetBar.eSplitterStyle.Office2007; - this.expandableSplitter4.TabIndex = 15; - this.expandableSplitter4.TabStop = false; - // - // pannelAnnoGrid - // - this.pannelAnnoGrid.CanvasColor = System.Drawing.SystemColors.Control; - this.pannelAnnoGrid.Controls.Add(this.dgAnnotations); - this.pannelAnnoGrid.DisabledBackColor = System.Drawing.Color.Empty; - this.pannelAnnoGrid.Dock = System.Windows.Forms.DockStyle.Left; - this.pannelAnnoGrid.Location = new System.Drawing.Point(0, 0); - this.pannelAnnoGrid.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); - this.pannelAnnoGrid.Name = "pannelAnnoGrid"; - this.pannelAnnoGrid.Size = new System.Drawing.Size(545, 325); - this.pannelAnnoGrid.Style.Alignment = System.Drawing.StringAlignment.Center; - this.pannelAnnoGrid.Style.BackColor1.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBackground; - this.pannelAnnoGrid.Style.BackColor2.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBackground2; - this.pannelAnnoGrid.Style.Border = DevComponents.DotNetBar.eBorderType.SingleLine; - this.pannelAnnoGrid.Style.BorderColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder; - this.pannelAnnoGrid.Style.ForeColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelText; - this.pannelAnnoGrid.Style.GradientAngle = 90; - this.pannelAnnoGrid.TabIndex = 14; - this.pannelAnnoGrid.Text = "panelEx2"; - this.pannelAnnoGrid.ThemeAware = true; - // - // dgAnnotations - // - this.dgAnnotations.AutoGenerateColumns = false; - this.dgAnnotations.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.AllCells; - this.dgAnnotations.ColumnHeadersBorderStyle = System.Windows.Forms.DataGridViewHeaderBorderStyle.Single; - this.dgAnnotations.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; - this.dgAnnotations.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { + this.rtxbComment.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(255)))), ((int)(((byte)(128))))); + this.rtxbComment.Font = new System.Drawing.Font("Microsoft Sans Serif", 10F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.rtxbComment.Location = new System.Drawing.Point(65, 27); + this.rtxbComment.Margin = new System.Windows.Forms.Padding(2); + this.rtxbComment.Name = "rtxbComment"; + this.rtxbComment.ScrollBars = System.Windows.Forms.RichTextBoxScrollBars.Vertical; + this.rtxbComment.Size = new System.Drawing.Size(368, 237); + this.superTooltip1.SetSuperTooltip(this.rtxbComment, new DevComponents.DotNetBar.SuperTooltipInfo("Annotation", "", "Enter the annotation information here.", null, null, DevComponents.DotNetBar.eTooltipColor.Gray)); + this.rtxbComment.TabIndex = 1; + this.rtxbComment.Text = ""; + this.rtxbComment.TextChanged += new System.EventHandler(this.rtxbComment_TextChanged); + // + // btnSaveAnnotation + // + this.btnSaveAnnotation.AccessibleRole = System.Windows.Forms.AccessibleRole.PushButton; + this.btnSaveAnnotation.Enabled = false; + this.btnSaveAnnotation.Location = new System.Drawing.Point(368, 3); + this.btnSaveAnnotation.Margin = new System.Windows.Forms.Padding(2); + this.btnSaveAnnotation.Name = "btnSaveAnnotation"; + this.btnSaveAnnotation.Size = new System.Drawing.Size(53, 20); + this.superTooltip1.SetSuperTooltip(this.btnSaveAnnotation, new DevComponents.DotNetBar.SuperTooltipInfo("Save Changes", "", "This will save the new annotation or changes made to an existing annotation.", null, null, DevComponents.DotNetBar.eTooltipColor.Gray)); + this.btnSaveAnnotation.TabIndex = 9; + this.btnSaveAnnotation.Text = "Save"; + this.btnSaveAnnotation.Click += new System.EventHandler(this.btnSaveAnnotation_Click); + // + // btnCancelAnnoation + // + this.btnCancelAnnoation.AccessibleRole = System.Windows.Forms.AccessibleRole.PushButton; + this.btnCancelAnnoation.Enabled = false; + this.btnCancelAnnoation.Location = new System.Drawing.Point(301, 3); + this.btnCancelAnnoation.Margin = new System.Windows.Forms.Padding(2); + this.btnCancelAnnoation.Name = "btnCancelAnnoation"; + this.btnCancelAnnoation.Size = new System.Drawing.Size(52, 20); + this.superTooltip1.SetSuperTooltip(this.btnCancelAnnoation, new DevComponents.DotNetBar.SuperTooltipInfo("Cancel", "", "This will cancel the changes made to the annotation text and type selection", null, null, DevComponents.DotNetBar.eTooltipColor.Gray, true, true, new System.Drawing.Size(145, 100))); + this.btnCancelAnnoation.TabIndex = 8; + this.btnCancelAnnoation.Text = "Cancel"; + this.btnCancelAnnoation.Click += new System.EventHandler(this.btnCancelAnnoation_Click); + // + // cbGridAnnoType + // + this.cbGridAnnoType.DisplayMember = "Text"; + this.cbGridAnnoType.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed; + this.cbGridAnnoType.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.cbGridAnnoType.FlatStyle = System.Windows.Forms.FlatStyle.Standard; + this.cbGridAnnoType.Font = new System.Drawing.Font("Microsoft Sans Serif", 7.8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cbGridAnnoType.ForeColor = System.Drawing.SystemColors.WindowText; + this.cbGridAnnoType.ItemHeight = 17; + this.cbGridAnnoType.Location = new System.Drawing.Point(100, 3); + this.cbGridAnnoType.Margin = new System.Windows.Forms.Padding(2); + this.cbGridAnnoType.Name = "cbGridAnnoType"; + this.cbGridAnnoType.PreventEnterBeep = true; + this.cbGridAnnoType.Size = new System.Drawing.Size(184, 23); + this.superTooltip1.SetSuperTooltip(this.cbGridAnnoType, new DevComponents.DotNetBar.SuperTooltipInfo("Select Annotation Type", "", "This drop down list contains the possible annotation types.", null, null, DevComponents.DotNetBar.eTooltipColor.Gray)); + this.cbGridAnnoType.TabIndex = 7; + this.cbGridAnnoType.WatermarkBehavior = DevComponents.DotNetBar.eWatermarkBehavior.HideNonEmpty; + this.cbGridAnnoType.WatermarkText = "Select Annotation Type"; + this.cbGridAnnoType.SelectedValueChanged += new System.EventHandler(this.cbGridAnnoType_SelectedValueChanged); + // + // btnRemoveAnnotation + // + this.btnRemoveAnnotation.AccessibleRole = System.Windows.Forms.AccessibleRole.PushButton; + this.btnRemoveAnnotation.Location = new System.Drawing.Point(4, 28); + this.btnRemoveAnnotation.Margin = new System.Windows.Forms.Padding(2); + this.btnRemoveAnnotation.Name = "btnRemoveAnnotation"; + this.btnRemoveAnnotation.Size = new System.Drawing.Size(53, 20); + this.superTooltip1.SetSuperTooltip(this.btnRemoveAnnotation, new DevComponents.DotNetBar.SuperTooltipInfo("Remove Annotation", "", "This will remove the currently selected annotation.", null, null, DevComponents.DotNetBar.eTooltipColor.Gray)); + this.btnRemoveAnnotation.TabIndex = 4; + this.btnRemoveAnnotation.Text = "Remove"; + this.btnRemoveAnnotation.Click += new System.EventHandler(this.btnRemoveAnnotation_Click); + // + // btnAddAnnotation + // + this.btnAddAnnotation.AccessibleRole = System.Windows.Forms.AccessibleRole.PushButton; + this.btnAddAnnotation.Location = new System.Drawing.Point(4, 3); + this.btnAddAnnotation.Margin = new System.Windows.Forms.Padding(2); + this.btnAddAnnotation.Name = "btnAddAnnotation"; + this.btnAddAnnotation.Size = new System.Drawing.Size(53, 20); + this.superTooltip1.SetSuperTooltip(this.btnAddAnnotation, new DevComponents.DotNetBar.SuperTooltipInfo("Add New Annotation", "", "This button will create a new annotation.", null, null, DevComponents.DotNetBar.eTooltipColor.Gray)); + this.btnAddAnnotation.TabIndex = 3; + this.btnAddAnnotation.Text = "Add"; + this.btnAddAnnotation.Click += new System.EventHandler(this.btnAddAnnotation_Click); + // + // btnEPAnnotation + // + this.btnEPAnnotation.AccessibleRole = System.Windows.Forms.AccessibleRole.PushButton; + this.btnEPAnnotation.Location = new System.Drawing.Point(4, 52); + this.btnEPAnnotation.Margin = new System.Windows.Forms.Padding(2); + this.btnEPAnnotation.Name = "btnEPAnnotation"; + this.btnEPAnnotation.Size = new System.Drawing.Size(53, 20); + this.superTooltip1.SetSuperTooltip(this.btnEPAnnotation, new DevComponents.DotNetBar.SuperTooltipInfo("Open Annotation", "", "This will open Electronic Procedure Details for this Annotation.", null, null, DevComponents.DotNetBar.eTooltipColor.Gray)); + this.btnEPAnnotation.TabIndex = 5; + this.btnEPAnnotation.Text = "Open"; + this.btnEPAnnotation.Visible = false; + this.btnEPAnnotation.Click += new System.EventHandler(this.btnEPAnnotation_Click); + // + // pannelAnnoEdit + // + this.pannelAnnoEdit.CanvasColor = System.Drawing.SystemColors.Control; + this.pannelAnnoEdit.Controls.Add(this.rtxbComment); + this.pannelAnnoEdit.Controls.Add(this.btnSaveAnnotation); + this.pannelAnnoEdit.Controls.Add(this.btnCancelAnnoation); + this.pannelAnnoEdit.Controls.Add(this.labelX1); + this.pannelAnnoEdit.Controls.Add(this.cbGridAnnoType); + this.pannelAnnoEdit.Controls.Add(this.panelAnnoEditBtns); + this.pannelAnnoEdit.DisabledBackColor = System.Drawing.Color.Empty; + this.pannelAnnoEdit.Dock = System.Windows.Forms.DockStyle.Fill; + this.pannelAnnoEdit.Location = new System.Drawing.Point(411, 0); + this.pannelAnnoEdit.Margin = new System.Windows.Forms.Padding(2); + this.pannelAnnoEdit.Name = "pannelAnnoEdit"; + this.pannelAnnoEdit.Size = new System.Drawing.Size(432, 264); + this.pannelAnnoEdit.Style.Alignment = System.Drawing.StringAlignment.Center; + this.pannelAnnoEdit.Style.BackColor1.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBackground; + this.pannelAnnoEdit.Style.BackColor2.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBackground2; + this.pannelAnnoEdit.Style.Border = DevComponents.DotNetBar.eBorderType.SingleLine; + this.pannelAnnoEdit.Style.BorderColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder; + this.pannelAnnoEdit.Style.ForeColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelText; + this.pannelAnnoEdit.Style.GradientAngle = 90; + this.pannelAnnoEdit.TabIndex = 16; + this.pannelAnnoEdit.Text = "panelEx2"; + this.pannelAnnoEdit.ThemeAware = true; + // + // labelX1 + // + this.labelX1.AutoSize = true; + // + // + // + this.labelX1.BackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square; + this.labelX1.Font = new System.Drawing.Font("Microsoft Sans Serif", 7.8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.labelX1.Location = new System.Drawing.Point(70, 6); + this.labelX1.Margin = new System.Windows.Forms.Padding(2); + this.labelX1.Name = "labelX1"; + this.labelX1.Size = new System.Drawing.Size(29, 14); + this.labelX1.TabIndex = 10; + this.labelX1.Text = "Type:"; + // + // panelAnnoEditBtns + // + this.panelAnnoEditBtns.CanvasColor = System.Drawing.SystemColors.Control; + this.panelAnnoEditBtns.Controls.Add(this.btnEPAnnotation); + this.panelAnnoEditBtns.Controls.Add(this.btnRemoveAnnotation); + this.panelAnnoEditBtns.Controls.Add(this.btnAddAnnotation); + this.panelAnnoEditBtns.DisabledBackColor = System.Drawing.Color.Empty; + this.panelAnnoEditBtns.Dock = System.Windows.Forms.DockStyle.Left; + this.panelAnnoEditBtns.Location = new System.Drawing.Point(0, 0); + this.panelAnnoEditBtns.Margin = new System.Windows.Forms.Padding(2); + this.panelAnnoEditBtns.Name = "panelAnnoEditBtns"; + this.panelAnnoEditBtns.Size = new System.Drawing.Size(65, 264); + this.panelAnnoEditBtns.Style.Alignment = System.Drawing.StringAlignment.Center; + this.panelAnnoEditBtns.Style.BackColor1.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBackground; + this.panelAnnoEditBtns.Style.BackColor2.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBackground2; + this.panelAnnoEditBtns.Style.BorderColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder; + this.panelAnnoEditBtns.Style.ForeColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelText; + this.panelAnnoEditBtns.Style.GradientAngle = 90; + this.panelAnnoEditBtns.TabIndex = 11; + this.panelAnnoEditBtns.ThemeAware = true; + // + // expandableSplitter4 + // + this.expandableSplitter4.BackColor2 = System.Drawing.Color.FromArgb(((int)(((byte)(101)))), ((int)(((byte)(147)))), ((int)(((byte)(207))))); + this.expandableSplitter4.BackColor2SchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder; + this.expandableSplitter4.BackColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBackground; + this.expandableSplitter4.ExpandFillColor = System.Drawing.Color.FromArgb(((int)(((byte)(101)))), ((int)(((byte)(147)))), ((int)(((byte)(207))))); + this.expandableSplitter4.ExpandFillColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder; + this.expandableSplitter4.ExpandLineColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(0)))), ((int)(((byte)(0))))); + this.expandableSplitter4.ExpandLineColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.ItemText; + this.expandableSplitter4.GripDarkColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(0)))), ((int)(((byte)(0))))); + this.expandableSplitter4.GripDarkColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.ItemText; + this.expandableSplitter4.GripLightColor = System.Drawing.Color.FromArgb(((int)(((byte)(227)))), ((int)(((byte)(239)))), ((int)(((byte)(255))))); + this.expandableSplitter4.GripLightColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.BarBackground; + this.expandableSplitter4.HotBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(252)))), ((int)(((byte)(151)))), ((int)(((byte)(61))))); + this.expandableSplitter4.HotBackColor2 = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(184)))), ((int)(((byte)(94))))); + this.expandableSplitter4.HotBackColor2SchemePart = DevComponents.DotNetBar.eColorSchemePart.ItemPressedBackground2; + this.expandableSplitter4.HotBackColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.ItemPressedBackground; + this.expandableSplitter4.HotExpandFillColor = System.Drawing.Color.FromArgb(((int)(((byte)(101)))), ((int)(((byte)(147)))), ((int)(((byte)(207))))); + this.expandableSplitter4.HotExpandFillColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder; + this.expandableSplitter4.HotExpandLineColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(0)))), ((int)(((byte)(0))))); + this.expandableSplitter4.HotExpandLineColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.ItemText; + this.expandableSplitter4.HotGripDarkColor = System.Drawing.Color.FromArgb(((int)(((byte)(101)))), ((int)(((byte)(147)))), ((int)(((byte)(207))))); + this.expandableSplitter4.HotGripDarkColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder; + this.expandableSplitter4.HotGripLightColor = System.Drawing.Color.FromArgb(((int)(((byte)(227)))), ((int)(((byte)(239)))), ((int)(((byte)(255))))); + this.expandableSplitter4.HotGripLightColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.BarBackground; + this.expandableSplitter4.Location = new System.Drawing.Point(409, 0); + this.expandableSplitter4.Margin = new System.Windows.Forms.Padding(2); + this.expandableSplitter4.Name = "expandableSplitter4"; + this.expandableSplitter4.Size = new System.Drawing.Size(2, 264); + this.expandableSplitter4.Style = DevComponents.DotNetBar.eSplitterStyle.Office2007; + this.expandableSplitter4.TabIndex = 15; + this.expandableSplitter4.TabStop = false; + // + // pannelAnnoGrid + // + this.pannelAnnoGrid.CanvasColor = System.Drawing.SystemColors.Control; + this.pannelAnnoGrid.Controls.Add(this.dgAnnotations); + this.pannelAnnoGrid.DisabledBackColor = System.Drawing.Color.Empty; + this.pannelAnnoGrid.Dock = System.Windows.Forms.DockStyle.Left; + this.pannelAnnoGrid.Location = new System.Drawing.Point(0, 0); + this.pannelAnnoGrid.Margin = new System.Windows.Forms.Padding(2); + this.pannelAnnoGrid.Name = "pannelAnnoGrid"; + this.pannelAnnoGrid.Size = new System.Drawing.Size(409, 264); + this.pannelAnnoGrid.Style.Alignment = System.Drawing.StringAlignment.Center; + this.pannelAnnoGrid.Style.BackColor1.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBackground; + this.pannelAnnoGrid.Style.BackColor2.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBackground2; + this.pannelAnnoGrid.Style.Border = DevComponents.DotNetBar.eBorderType.SingleLine; + this.pannelAnnoGrid.Style.BorderColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder; + this.pannelAnnoGrid.Style.ForeColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelText; + this.pannelAnnoGrid.Style.GradientAngle = 90; + this.pannelAnnoGrid.TabIndex = 14; + this.pannelAnnoGrid.Text = "panelEx2"; + this.pannelAnnoGrid.ThemeAware = true; + // + // dgAnnotations + // + this.dgAnnotations.AutoGenerateColumns = false; + this.dgAnnotations.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.AllCells; + this.dgAnnotations.ColumnHeadersBorderStyle = System.Windows.Forms.DataGridViewHeaderBorderStyle.Single; + this.dgAnnotations.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; + this.dgAnnotations.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { this.myAnnotationTypeDataGridViewTextBoxColumn, this.dTSDataGridViewTextBoxColumn, this.userIDDataGridViewTextBoxColumn, this.searchTextDataGridViewTextBoxColumn}); - this.dgAnnotations.DataSource = this.itemAnnotationsBindingSource; - dataGridViewCellStyle2.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; - dataGridViewCellStyle2.BackColor = System.Drawing.SystemColors.Window; - dataGridViewCellStyle2.Font = new System.Drawing.Font("Microsoft Sans Serif", 7.8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - dataGridViewCellStyle2.ForeColor = System.Drawing.SystemColors.ControlText; - dataGridViewCellStyle2.SelectionBackColor = System.Drawing.SystemColors.Highlight; - dataGridViewCellStyle2.SelectionForeColor = System.Drawing.SystemColors.ControlText; - dataGridViewCellStyle2.WrapMode = System.Windows.Forms.DataGridViewTriState.False; - this.dgAnnotations.DefaultCellStyle = dataGridViewCellStyle2; - this.dgAnnotations.Dock = System.Windows.Forms.DockStyle.Fill; - this.dgAnnotations.GridColor = System.Drawing.Color.FromArgb(((int)(((byte)(208)))), ((int)(((byte)(215)))), ((int)(((byte)(229))))); - this.dgAnnotations.HighlightSelectedColumnHeaders = false; - this.dgAnnotations.Location = new System.Drawing.Point(0, 0); - this.dgAnnotations.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); - this.dgAnnotations.MultiSelect = false; - this.dgAnnotations.Name = "dgAnnotations"; - this.dgAnnotations.RowHeadersVisible = false; - this.dgAnnotations.RowTemplate.Height = 24; - this.dgAnnotations.RowTemplate.ReadOnly = true; - this.dgAnnotations.RowTemplate.Resizable = System.Windows.Forms.DataGridViewTriState.True; - this.dgAnnotations.SelectAllSignVisible = false; - this.dgAnnotations.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect; - this.dgAnnotations.Size = new System.Drawing.Size(545, 325); - this.dgAnnotations.TabIndex = 1; - this.dgAnnotations.CellClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dgAnnotations_CellClick); - // - // myAnnotationTypeDataGridViewTextBoxColumn - // - this.myAnnotationTypeDataGridViewTextBoxColumn.DataPropertyName = "MyAnnotationType"; - this.myAnnotationTypeDataGridViewTextBoxColumn.HeaderText = "Type"; - this.myAnnotationTypeDataGridViewTextBoxColumn.Name = "myAnnotationTypeDataGridViewTextBoxColumn"; - this.myAnnotationTypeDataGridViewTextBoxColumn.Width = 69; - // - // dTSDataGridViewTextBoxColumn - // - this.dTSDataGridViewTextBoxColumn.DataPropertyName = "DTS"; - this.dTSDataGridViewTextBoxColumn.HeaderText = "Date"; - this.dTSDataGridViewTextBoxColumn.Name = "dTSDataGridViewTextBoxColumn"; - this.dTSDataGridViewTextBoxColumn.Width = 67; - // - // userIDDataGridViewTextBoxColumn - // - this.userIDDataGridViewTextBoxColumn.DataPropertyName = "UserID"; - this.userIDDataGridViewTextBoxColumn.HeaderText = "User"; - this.userIDDataGridViewTextBoxColumn.Name = "userIDDataGridViewTextBoxColumn"; - this.userIDDataGridViewTextBoxColumn.Width = 67; - // - // searchTextDataGridViewTextBoxColumn - // - this.searchTextDataGridViewTextBoxColumn.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill; - this.searchTextDataGridViewTextBoxColumn.DataPropertyName = "SearchText"; - this.searchTextDataGridViewTextBoxColumn.HeaderText = "Description"; - this.searchTextDataGridViewTextBoxColumn.Name = "searchTextDataGridViewTextBoxColumn"; - // - // itemAnnotationsBindingSource - // - this.itemAnnotationsBindingSource.DataSource = typeof(VEPROMS.CSLA.Library.ItemAnnotation); - // - // AnnotationDetails - // - this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.Controls.Add(this.pannelAnnoEdit); - this.Controls.Add(this.expandableSplitter4); - this.Controls.Add(this.pannelAnnoGrid); - this.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); - this.Name = "AnnotationDetails"; - this.Size = new System.Drawing.Size(1124, 325); - this.pannelAnnoEdit.ResumeLayout(false); - this.pannelAnnoEdit.PerformLayout(); - this.panelAnnoEditBtns.ResumeLayout(false); - this.pannelAnnoGrid.ResumeLayout(false); - ((System.ComponentModel.ISupportInitialize)(this.dgAnnotations)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.itemAnnotationsBindingSource)).EndInit(); - this.ResumeLayout(false); + this.dgAnnotations.DataSource = this.itemAnnotationsBindingSource; + dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; + dataGridViewCellStyle1.BackColor = System.Drawing.SystemColors.Window; + dataGridViewCellStyle1.Font = new System.Drawing.Font("Microsoft Sans Serif", 7.8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + dataGridViewCellStyle1.ForeColor = System.Drawing.SystemColors.ControlText; + dataGridViewCellStyle1.SelectionBackColor = System.Drawing.SystemColors.Highlight; + dataGridViewCellStyle1.SelectionForeColor = System.Drawing.SystemColors.ControlText; + dataGridViewCellStyle1.WrapMode = System.Windows.Forms.DataGridViewTriState.False; + this.dgAnnotations.DefaultCellStyle = dataGridViewCellStyle1; + this.dgAnnotations.Dock = System.Windows.Forms.DockStyle.Fill; + this.dgAnnotations.GridColor = System.Drawing.Color.FromArgb(((int)(((byte)(208)))), ((int)(((byte)(215)))), ((int)(((byte)(229))))); + this.dgAnnotations.HighlightSelectedColumnHeaders = false; + this.dgAnnotations.Location = new System.Drawing.Point(0, 0); + this.dgAnnotations.Margin = new System.Windows.Forms.Padding(2); + this.dgAnnotations.MultiSelect = false; + this.dgAnnotations.Name = "dgAnnotations"; + this.dgAnnotations.RowHeadersVisible = false; + this.dgAnnotations.RowTemplate.Height = 24; + this.dgAnnotations.RowTemplate.ReadOnly = true; + this.dgAnnotations.RowTemplate.Resizable = System.Windows.Forms.DataGridViewTriState.True; + this.dgAnnotations.SelectAllSignVisible = false; + this.dgAnnotations.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect; + this.dgAnnotations.Size = new System.Drawing.Size(409, 264); + this.dgAnnotations.TabIndex = 1; + this.dgAnnotations.CellClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dgAnnotations_CellClick); + // + // myAnnotationTypeDataGridViewTextBoxColumn + // + this.myAnnotationTypeDataGridViewTextBoxColumn.DataPropertyName = "MyAnnotationType"; + this.myAnnotationTypeDataGridViewTextBoxColumn.HeaderText = "Type"; + this.myAnnotationTypeDataGridViewTextBoxColumn.Name = "myAnnotationTypeDataGridViewTextBoxColumn"; + this.myAnnotationTypeDataGridViewTextBoxColumn.Width = 56; + // + // dTSDataGridViewTextBoxColumn + // + this.dTSDataGridViewTextBoxColumn.DataPropertyName = "DTS"; + this.dTSDataGridViewTextBoxColumn.HeaderText = "Date"; + this.dTSDataGridViewTextBoxColumn.Name = "dTSDataGridViewTextBoxColumn"; + this.dTSDataGridViewTextBoxColumn.Width = 55; + // + // userIDDataGridViewTextBoxColumn + // + this.userIDDataGridViewTextBoxColumn.DataPropertyName = "UserID"; + this.userIDDataGridViewTextBoxColumn.HeaderText = "User"; + this.userIDDataGridViewTextBoxColumn.Name = "userIDDataGridViewTextBoxColumn"; + this.userIDDataGridViewTextBoxColumn.Width = 54; + // + // searchTextDataGridViewTextBoxColumn + // + this.searchTextDataGridViewTextBoxColumn.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill; + this.searchTextDataGridViewTextBoxColumn.DataPropertyName = "SearchText"; + this.searchTextDataGridViewTextBoxColumn.HeaderText = "Description"; + this.searchTextDataGridViewTextBoxColumn.Name = "searchTextDataGridViewTextBoxColumn"; + // + // itemAnnotationsBindingSource + // + this.itemAnnotationsBindingSource.DataSource = typeof(VEPROMS.CSLA.Library.ItemAnnotation); + // + // AnnotationDetails + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.Controls.Add(this.pannelAnnoEdit); + this.Controls.Add(this.expandableSplitter4); + this.Controls.Add(this.pannelAnnoGrid); + this.Margin = new System.Windows.Forms.Padding(2); + this.Name = "AnnotationDetails"; + this.Size = new System.Drawing.Size(843, 264); + this.pannelAnnoEdit.ResumeLayout(false); + this.pannelAnnoEdit.PerformLayout(); + this.panelAnnoEditBtns.ResumeLayout(false); + this.pannelAnnoGrid.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.dgAnnotations)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.itemAnnotationsBindingSource)).EndInit(); + this.ResumeLayout(false); } @@ -371,5 +386,6 @@ namespace Volian.Controls.Library private System.Windows.Forms.DataGridViewTextBoxColumn dTSDataGridViewTextBoxColumn; private System.Windows.Forms.DataGridViewTextBoxColumn userIDDataGridViewTextBoxColumn; private System.Windows.Forms.DataGridViewTextBoxColumn searchTextDataGridViewTextBoxColumn; - } + private DevComponents.DotNetBar.ButtonX btnEPAnnotation; + } } diff --git a/PROMS/Volian.Controls.Library/AnnotationDetails.cs b/PROMS/Volian.Controls.Library/AnnotationDetails.cs index fbd56849..d001d92e 100644 --- a/PROMS/Volian.Controls.Library/AnnotationDetails.cs +++ b/PROMS/Volian.Controls.Library/AnnotationDetails.cs @@ -329,14 +329,22 @@ namespace Volian.Controls.Library AnnotationDirty = true; } - private void dgAnnotations_CellClick(object sender, DataGridViewCellEventArgs e) + //C2025-023 - Electronic Procedures - Modifications to PROMS + // Only show Open button if it is an EPAnnotationType + private void dgAnnotations_CellClick(object sender, DataGridViewCellEventArgs e) { - if (!_LoadingGrid) // Only set the Current Annotation when not loading the grid + btnEPAnnotation.Visible = false; + + if (!_LoadingGrid) // Only set the Current Annotation when not loading the grid { - if ((_Annotations != null) && (dgAnnotations.Rows.Count > 0)) - CurrentAnnotation = _Annotations[dgAnnotations.CurrentRow.Index]; - else - CurrentAnnotation = null; + if ((_Annotations != null) && (dgAnnotations.Rows.Count > 0)) + { + CurrentAnnotation = _Annotations[dgAnnotations.CurrentRow.Index]; + if (CurrentAnnotation.MyAnnotationType.IsEPAnnotationType && CurrentItem.HasEPformat(CurrentAnnotation.MyAnnotationType.TypeID)) + btnEPAnnotation.Visible = true; + } + else + CurrentAnnotation = null; } } @@ -600,6 +608,7 @@ namespace Volian.Controls.Library public void UpdateAnnotationGrid(ItemInfo currentitem) { CurrentItem = currentitem; + btnEPAnnotation.Visible = false; UpdateAnnotationGrid(); } @@ -702,5 +711,12 @@ namespace Volian.Controls.Library } #endregion - } + //C2025-023 - Electronic Procedures - Modifications to PROMS + // Open new Dynamic Form if open button selected + private void btnEPAnnotation_Click(object sender, EventArgs e) + { + frmEPAnnotationDetails EPfrm = new frmEPAnnotationDetails(CurrentAnnotation); + DialogResult dr = EPfrm.ShowDialog(this); + } + } } diff --git a/PROMS/Volian.Controls.Library/ListBoxMulti.cs b/PROMS/Volian.Controls.Library/ListBoxMulti.cs new file mode 100644 index 00000000..74acaa54 --- /dev/null +++ b/PROMS/Volian.Controls.Library/ListBoxMulti.cs @@ -0,0 +1,52 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace Volian.Controls.Library +{ + //Class to handle bug in Windows WinForms ListBox + // that autoselects first item when no items are selected + public partial class ListBoxMulti : ListBox + { + public ListBoxMulti() + { + Visible = true; + SelectionMode = SelectionMode.MultiSimple; + + SelectedIndexChanged += lb_SelectedIndexChanged; + + Disposed += ListBoxMulti_Disposed; + } + + //singleselectedindex + // will help to fix bug in Winforms ListBox + // that autoselects first item when no items are selected + // -1 = multi or set to this after 1st initialization + // if this = 0 and only 1 item selected, + // that means item was autoselected, so clear all items. + public int singleselectedindex { get; set; } + private void lb_SelectedIndexChanged(object sender, EventArgs e) + { + ListBoxMulti tmp = (ListBoxMulti)sender; + + if (tmp.SelectedItems.Count == 1 && tmp.singleselectedindex == 0) + { + tmp.ClearSelected(); + } + else if (tmp.SelectedItems.Count == 1) + tmp.singleselectedindex = tmp.SelectedIndex; + else + tmp.singleselectedindex = -1; + + } + + //remove event when get rid of object + private void ListBoxMulti_Disposed(object sender, EventArgs e) + { + SelectedIndexChanged -= lb_SelectedIndexChanged; + } + } +} diff --git a/PROMS/Volian.Controls.Library/TablePropertiesControl.Designer.cs b/PROMS/Volian.Controls.Library/TablePropertiesControl.Designer.cs new file mode 100644 index 00000000..b0d7d2c8 --- /dev/null +++ b/PROMS/Volian.Controls.Library/TablePropertiesControl.Designer.cs @@ -0,0 +1,149 @@ + +namespace Volian.Controls.Library +{ + partial class TablePropertiesControl + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Component Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.lbl_Rows = new System.Windows.Forms.Label(); + this.lbl_Cols = new System.Windows.Forms.Label(); + this.NumRows = new System.Windows.Forms.NumericUpDown(); + this.NumCols = new System.Windows.Forms.NumericUpDown(); + this.dataview = new System.Windows.Forms.DataGridView(); + this.lbltitle = new System.Windows.Forms.Label(); + ((System.ComponentModel.ISupportInitialize)(this.NumRows)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.NumCols)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.dataview)).BeginInit(); + this.SuspendLayout(); + // + // lbl_Rows + // + this.lbl_Rows.AutoSize = true; + this.lbl_Rows.Location = new System.Drawing.Point(0, 34); + this.lbl_Rows.Name = "lbl_Rows"; + this.lbl_Rows.Size = new System.Drawing.Size(89, 13); + this.lbl_Rows.TabIndex = 0; + this.lbl_Rows.Text = "Number of Rows:"; + // + // lbl_Cols + // + this.lbl_Cols.AutoSize = true; + this.lbl_Cols.Location = new System.Drawing.Point(0, 56); + this.lbl_Cols.Name = "lbl_Cols"; + this.lbl_Cols.Size = new System.Drawing.Size(102, 13); + this.lbl_Cols.TabIndex = 1; + this.lbl_Cols.Text = "Number of Columns:"; + // + // NumRows + // + this.NumRows.Location = new System.Drawing.Point(114, 32); + this.NumRows.Minimum = new decimal(new int[] { + 1, + 0, + 0, + 0}); + this.NumRows.Name = "NumRows"; + this.NumRows.Size = new System.Drawing.Size(47, 20); + this.NumRows.TabIndex = 3; + this.NumRows.Value = new decimal(new int[] { + 1, + 0, + 0, + 0}); + this.NumRows.ValueChanged += new System.EventHandler(this.NumRows_ValueChanged); + // + // NumCols + // + this.NumCols.Location = new System.Drawing.Point(114, 54); + this.NumCols.Minimum = new decimal(new int[] { + 1, + 0, + 0, + 0}); + this.NumCols.Name = "NumCols"; + this.NumCols.Size = new System.Drawing.Size(47, 20); + this.NumCols.TabIndex = 4; + this.NumCols.Value = new decimal(new int[] { + 1, + 0, + 0, + 0}); + this.NumCols.ValueChanged += new System.EventHandler(this.NumCols_ValueChanged); + // + // dataview + // + this.dataview.AllowUserToAddRows = false; + this.dataview.AllowUserToDeleteRows = false; + this.dataview.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.dataview.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; + this.dataview.ColumnHeadersVisible = false; + this.dataview.Location = new System.Drawing.Point(3, 73); + this.dataview.Name = "dataview"; + this.dataview.Size = new System.Drawing.Size(316, 150); + this.dataview.TabIndex = 5; + this.dataview.CellEndEdit += new System.Windows.Forms.DataGridViewCellEventHandler(this.dataview_CellEndEdit); + // + // lbltitle + // + this.lbltitle.AutoSize = true; + this.lbltitle.Font = new System.Drawing.Font("Microsoft Sans Serif", 10F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lbltitle.Location = new System.Drawing.Point(3, 4); + this.lbltitle.Name = "lbltitle"; + this.lbltitle.Size = new System.Drawing.Size(0, 17); + this.lbltitle.TabIndex = 6; + // + // TablePropertiesControl + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.Controls.Add(this.lbltitle); + this.Controls.Add(this.dataview); + this.Controls.Add(this.NumCols); + this.Controls.Add(this.NumRows); + this.Controls.Add(this.lbl_Cols); + this.Controls.Add(this.lbl_Rows); + this.Name = "TablePropertiesControl"; + this.Size = new System.Drawing.Size(319, 252); + ((System.ComponentModel.ISupportInitialize)(this.NumRows)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.NumCols)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.dataview)).EndInit(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Label lbl_Rows; + private System.Windows.Forms.Label lbl_Cols; + private System.Windows.Forms.NumericUpDown NumRows; + private System.Windows.Forms.NumericUpDown NumCols; + private System.Windows.Forms.DataGridView dataview; + private System.Windows.Forms.Label lbltitle; + } +} diff --git a/PROMS/Volian.Controls.Library/TablePropertiesControl.cs b/PROMS/Volian.Controls.Library/TablePropertiesControl.cs new file mode 100644 index 00000000..42afccfd --- /dev/null +++ b/PROMS/Volian.Controls.Library/TablePropertiesControl.cs @@ -0,0 +1,240 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Text.RegularExpressions; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace Volian.Controls.Library +{ + //C2025-023 Electronic Procedures + //Control for designating which cells in a table require EP input + public partial class TablePropertiesControl : UserControl + { + //defines the type of possible inputs from an EP viewer + public enum EPinputtype + { + none, + textbox, + checkbox + }; + + private DataTable values; + private BindingSource bindingSource = null; + private int totalrows = 1; + private int totalcols = 1; + public readonly string epname; + private bool IsInitializing; + + //initialization / data will be in the format: + // totalnumrows,totalnumcols;(row,col):value|(row,col):value... + public TablePropertiesControl(string name, string title, string initialvalues) + { + InitializeComponent(); + + IsInitializing = true; + + epname = name; + lbltitle.Text = title; + initializevalues(initialvalues); + bindingSource = new BindingSource(values, ""); + dataview.DataSource = bindingSource; + dataview.AutoGenerateColumns = false; + + Load += new EventHandler(FormLoad_setDefaults); + } + + //initialization / data will be in the format: + // totalnumrows,totalnumcols;(row,col):value|(row,col):value... + private void initializevalues(string initialvalues) + { + values = new DataTable("values"); + + if (!string.IsNullOrEmpty(initialvalues)) + { + string[] grp = initialvalues.Split(';'); + string[] total = grp[0].Split(','); + initializedt(int.Parse(total[0]), int.Parse(total[1])); + + string[] ivs = grp[1].Split('|'); + //pair will be of format: + //(row,col):value + foreach (string pair in ivs) + { + Match m = Regex.Match(pair, @"\(([\d]),([\d])\):([\w]+)"); + if (m.Success) + { + int row = int.Parse(m.Groups[1].Value); + int col = int.Parse(m.Groups[2].Value); + string v = m.Groups[3].Value; + values.Rows[row][col] = v; + } + + } + + values.AcceptChanges(); + } + else + { + initializedt(1, 1); + } + } + + //initialize the blank datatable + private void initializedt(int numrows, int numcols) + { + totalrows = numrows; + totalcols = numcols; + + for (int c = 0; c < totalcols; c++) + { + values.Columns.Add(new DataColumn($"Column{c}") { DefaultValue = "none" }); + } + + for (int rw = 0; rw < totalrows; rw++) + { + values.Rows.Add(); + } + + } + + void FormLoad_setDefaults(object sender, EventArgs e) + { + BindingSource bindingSourceDropDown = new BindingSource(); + bindingSourceDropDown.DataSource = Enum.GetNames(typeof(EPinputtype)); + + //in order to achieve a dropdown of possible values need + //to remove the auto-inserted columns + //that were auto-generated of type type text + //when values was bound to the datagrid + for (int c = 0; c < totalcols; c++) + { + dataview.Columns.RemoveAt(c); + var cName = new DataGridViewComboBoxColumn(); + cName.DataSource = bindingSourceDropDown; + cName.DefaultCellStyle.NullValue = "none"; + dataview.Columns.Insert(c, cName); + } + + NumRows.Value = totalrows; + NumCols.Value = totalcols; + IsInitializing = false; + setDataViewtoValues(); + + } + + //set the display cells to match the values in the datatable for initialization + //and resize of the dataviewgrid + void setDataViewtoValues() + { + if (!IsInitializing) + { + for (int c = 0; c < totalcols; c++) + { + for (int rw = 0; rw < totalrows; rw++) + { + dataview.Rows[rw].Cells[c].Value = values.Rows[rw][c]; + } + } + } + } + + //Get storage string for storing table values in db + // data will be returned in the format: + // totalnumrows,totalnumcols;(row,col):value|(row,col):value... + public string GetStorageValue() + { + //force any in progress editing to commit. + ((BindingSource)dataview.DataSource).EndEdit(); + + StringBuilder bldr = new StringBuilder(); + bldr.Append($"{totalrows},{totalcols}"); + List points = new List(); + for (int rw = 0; rw < values.Rows.Count; rw++) + { + for (int col = 0; col < values.Columns.Count; col++) + { + if ((string) values.Rows[rw][col] != "none") + points.Add($"({rw},{col}):{values.Rows[rw][col]}"); + } + } + + + if (points.Count > 0) + { + bldr.Append(";"); + bldr.Append(string.Join("|", points)); + } + + return bldr.ToString(); + } + + private void NumRows_ValueChanged(object sender, EventArgs e) + { + int endNumRows = (int)NumRows.Value; + int curNumRows = totalrows; + + //remove rows till equal + while (curNumRows > endNumRows) + { + values.Rows.RemoveAt(curNumRows - 1); + curNumRows--; + } + //add rows till equal + while (curNumRows < endNumRows) + { + values.Rows.Add(); + curNumRows++; + } + + totalrows = endNumRows; + setDataViewtoValues(); + } + + private void NumCols_ValueChanged(object sender, EventArgs e) + { + int endNumCols = (int)NumCols.Value; + int curNumCols = totalcols; + + BindingSource bindingSourceDropDown = new BindingSource(); + bindingSourceDropDown.DataSource = Enum.GetNames(typeof(EPinputtype)); + + //remove cols till equal + while (curNumCols > endNumCols) + { + values.Columns.RemoveAt(curNumCols - 1); + dataview.Columns.RemoveAt(curNumCols - 1); + curNumCols--; + } + //add cols till equal + while (curNumCols < endNumCols) + { + values.Columns.Add(new DataColumn($"Column{curNumCols + 1}") { DefaultValue = "none"}); + if (dataview.Columns.Count > curNumCols) dataview.Columns.RemoveAt(curNumCols); + var cName = new DataGridViewComboBoxColumn(); + cName.DataSource = bindingSourceDropDown; + cName.DefaultCellStyle.NullValue = "none"; + dataview.Columns.Add(cName); + + curNumCols++; + } + + totalcols = endNumCols; + setDataViewtoValues(); + } + + //set the datatable value to match the changed datagridview value + //for some reason despite being bound, does not automatically update + // (it may be that datatable as a bindingsource does not implement INotifyProperty + // and thus needs manually set like this) + private void dataview_CellEndEdit(object sender, DataGridViewCellEventArgs e) + { + values.Rows[e.RowIndex][e.ColumnIndex] = (string) dataview.Rows[e.RowIndex].Cells[e.ColumnIndex].Value; + } + } + +} \ No newline at end of file diff --git a/PROMS/Volian.Controls.Library/TablePropertiesControl.resx b/PROMS/Volian.Controls.Library/TablePropertiesControl.resx new file mode 100644 index 00000000..1af7de15 --- /dev/null +++ b/PROMS/Volian.Controls.Library/TablePropertiesControl.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/PROMS/Volian.Controls.Library/Volian.Controls.Library.csproj b/PROMS/Volian.Controls.Library/Volian.Controls.Library.csproj index 1510659d..ae6f5783 100644 --- a/PROMS/Volian.Controls.Library/Volian.Controls.Library.csproj +++ b/PROMS/Volian.Controls.Library/Volian.Controls.Library.csproj @@ -243,6 +243,12 @@ frmEnhanced.cs + + Form + + + frmEPAnnotationDetails.cs + Form @@ -274,6 +280,9 @@ ImageItem.cs + + Component + Form @@ -374,6 +383,12 @@ + + UserControl + + + TablePropertiesControl.cs + Component @@ -474,6 +489,10 @@ frmEnhanced.cs + + frmEPAnnotationDetails.cs + Designer + frmImportWordContents.cs @@ -515,6 +534,9 @@ ResXFileCodeGenerator Resources.Designer.cs + + TablePropertiesControl.cs + vlnExpander.cs Designer diff --git a/PROMS/Volian.Controls.Library/frmEPAnnotationDetails.Designer.cs b/PROMS/Volian.Controls.Library/frmEPAnnotationDetails.Designer.cs new file mode 100644 index 00000000..6628fe2c --- /dev/null +++ b/PROMS/Volian.Controls.Library/frmEPAnnotationDetails.Designer.cs @@ -0,0 +1,111 @@ +namespace Volian.Controls.Library +{ + partial class frmEPAnnotationDetails + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.btnOk = new System.Windows.Forms.Button(); + this.btnCancel = new System.Windows.Forms.Button(); + this.panel_btns = new System.Windows.Forms.Panel(); + this.panelEP = new System.Windows.Forms.TableLayoutPanel(); + this.panel_btns.SuspendLayout(); + this.SuspendLayout(); + // + // btnOk + // + this.btnOk.DialogResult = System.Windows.Forms.DialogResult.OK; + this.btnOk.Location = new System.Drawing.Point(9, 7); + this.btnOk.Margin = new System.Windows.Forms.Padding(2); + this.btnOk.Name = "btnOk"; + this.btnOk.Size = new System.Drawing.Size(56, 19); + this.btnOk.TabIndex = 0; + this.btnOk.Text = "OK"; + this.btnOk.UseVisualStyleBackColor = true; + this.btnOk.Click += new System.EventHandler(this.btnOk_Click); + // + // btnCancel + // + this.btnCancel.Location = new System.Drawing.Point(82, 7); + this.btnCancel.Margin = new System.Windows.Forms.Padding(2); + this.btnCancel.Name = "btnCancel"; + this.btnCancel.Size = new System.Drawing.Size(56, 19); + this.btnCancel.TabIndex = 1; + this.btnCancel.Text = "Cancel"; + this.btnCancel.UseVisualStyleBackColor = true; + this.btnCancel.Click += new System.EventHandler(this.btnCancel_Click); + // + // panel_btns + // + this.panel_btns.Controls.Add(this.btnCancel); + this.panel_btns.Controls.Add(this.btnOk); + this.panel_btns.Dock = System.Windows.Forms.DockStyle.Bottom; + this.panel_btns.Location = new System.Drawing.Point(0, 512); + this.panel_btns.Name = "panel_btns"; + this.panel_btns.Size = new System.Drawing.Size(762, 30); + this.panel_btns.TabIndex = 2; + // + // panelEP + // + this.panelEP.AutoScroll = true; + this.panelEP.ColumnCount = 2; + this.panelEP.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle()); + this.panelEP.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle()); + this.panelEP.Dock = System.Windows.Forms.DockStyle.Fill; + this.panelEP.Location = new System.Drawing.Point(0, 0); + this.panelEP.Name = "panelEP"; + this.panelEP.RowCount = 1; + this.panelEP.RowStyles.Add(new System.Windows.Forms.RowStyle()); + this.panelEP.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 512F)); + this.panelEP.Size = new System.Drawing.Size(762, 512); + this.panelEP.TabIndex = 3; + // + // frmEPAnnotationDetails + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.AutoSize = true; + this.ClientSize = new System.Drawing.Size(762, 542); + this.Controls.Add(this.panelEP); + this.Controls.Add(this.panel_btns); + this.Margin = new System.Windows.Forms.Padding(2); + this.Name = "frmEPAnnotationDetails"; + this.Text = "Electronic Procedure Details"; + this.TopMost = true; + this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.frmEPAnnotationDetails_FormClosing); + this.panel_btns.ResumeLayout(false); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.Button btnOk; + private System.Windows.Forms.Button btnCancel; + private System.Windows.Forms.Panel panel_btns; + private System.Windows.Forms.TableLayoutPanel panelEP; + } +} \ No newline at end of file diff --git a/PROMS/Volian.Controls.Library/frmEPAnnotationDetails.cs b/PROMS/Volian.Controls.Library/frmEPAnnotationDetails.cs new file mode 100644 index 00000000..a641fd1c --- /dev/null +++ b/PROMS/Volian.Controls.Library/frmEPAnnotationDetails.cs @@ -0,0 +1,320 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Text; +using System.Windows.Forms; +using VEPROMS.CSLA.Library; +using Volian.Controls.Library; +using System.Linq; + +namespace Volian.Controls.Library +{ + //C2025-023 - Electronic Procedures - Modifications to PROMS + //Form for Dynamic Showing of EP detail controls and entry + public partial class frmEPAnnotationDetails : Form + { + private AnnotationInfo _CurrentAnnotation; + private EPFields myEPFields; + private AnnotationConfig MyConfig; + + private StepTabRibbon _MyStepTabRibbon; + private Dictionary _DicTB; + private Dictionary _DicCheckBox; + private Dictionary _DicComboBox; + private Dictionary _DicSingleRO; + private Dictionary _DicMultiRO; + private TablePropertiesControl _TablePropControl; + + private string multiseparator = ","; + + public frmEPAnnotationDetails(AnnotationInfo currAnn) + { + InitializeComponent(); + _DicTB = new Dictionary(); + _DicCheckBox = new Dictionary(); + _DicComboBox = new Dictionary(); + _DicSingleRO = new Dictionary(); + _DicMultiRO = new Dictionary(); + InitializeSpecificControls(currAnn); + _MyStepTabRibbon = new StepTabRibbon(); + } + + private void InitializeSpecificControls(AnnotationInfo currAnn) + { + _CurrentAnnotation = currAnn; + myEPFields = _CurrentAnnotation.MyItem.GetValidEPFields(_CurrentAnnotation.TypeID); + MyConfig = new AnnotationConfig(currAnn.Config); + + int MaxCharsInLabel = myEPFields.Where(y => y.type.ToLower() != "tableinput").Max(x => x.label.Length); + //font size 8 - make labels slightly bigger than largest label + panelEP.ColumnStyles[0].SizeType = SizeType.Absolute; + panelEP.ColumnStyles[0].Width = (8 * MaxCharsInLabel) + 5; + + int RowCount = 0; + foreach (EPField EP in myEPFields) + { + RowCount += 1; + panelEP.RowCount = RowCount; + panelEP.Top = 20; + + if (EP.type.ToLower() != "tableinput") + { + Label wlbl = new Label(); + wlbl.Text = EP.label; + wlbl.Visible = true; + wlbl.TextAlign = ContentAlignment.MiddleLeft; + wlbl.Anchor = AnchorStyles.Left | AnchorStyles.Top; + wlbl.Width = (8 * MaxCharsInLabel) + 5; + panelEP.Controls.Add(wlbl, 0, panelEP.RowCount - 1); + } + + if (EP.type.ToLower() == "text") + { + TextBox tb = new TextBox(); + tb.Font = tb.Font = new Font("Arial", 8); + tb.BorderStyle = BorderStyle.FixedSingle; + //aligning to both left and right stretches the textbox to the width of the form + tb.Anchor = AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Top; + string val = MyConfig.GetValue("EP", EP.name).Replace("\\u8209?", "-").Replace(@"\u9586?", @"\"); + tb.Text = val; + tb.Visible = true; + tb.Height = EP.numlines * tb.Font.Height + 1 + tb.Margin.Vertical; + tb.MinimumSize = new Size(0, EP.numlines * tb.Font.Height + 1 + tb.Margin.Vertical); + if (EP.numlines > 1) + { + tb.Multiline = true; + tb.ScrollBars = ScrollBars.Both; + panelEP.RowStyles.Insert(panelEP.RowCount - 1, new RowStyle(SizeType.Absolute, 50)); + } + else + { + panelEP.RowStyles.Insert(panelEP.RowCount - 1, new RowStyle(SizeType.AutoSize)); + } + + _DicTB.Add(EP.name, tb); + panelEP.Controls.Add(tb, 1, panelEP.RowCount - 1); + } + else + { + panelEP.RowStyles.Insert(panelEP.RowCount - 1, new RowStyle(SizeType.AutoSize)); + } + if (EP.type.ToLower() == "logical") + { + CheckBox cb = new CheckBox(); + cb.Text = EP.text; + cb.Visible = true; + string val = MyConfig.GetValue("EP", EP.name); + cb.Checked = val != null && val != "" && val.ToUpper()[0] == 'Y'; + _DicCheckBox.Add(EP.name, cb); + cb.AutoSize = true; + panelEP.Controls.Add(cb, 1, panelEP.RowCount - 1); + } + if (EP.type.ToLower() == "combo") + { + ComboBox cmb = new ComboBox(); + cmb.Visible = true; + string tmp = EP.text; + string[] tmps = tmp.Split(",".ToCharArray()); + foreach (string t in tmps) cmb.Items.Add(t.Trim()); + string val = MyConfig.GetValue("EP", EP.name); + if (val != null && val != "") cmb.SelectedItem = val; + cmb.DropDownWidth = TextRenderer.MeasureText(tmps.OrderByDescending(x => x.Length).First(), cmb.Font).Width + SystemInformation.VerticalScrollBarWidth; + cmb.Width = cmb.DropDownWidth; + _DicComboBox.Add(EP.name, cmb); + panelEP.Controls.Add(cmb, 1, panelEP.RowCount - 1); + } + if (EP.type.ToLower() == "rosingle") + { + ComboBox cmb = new ComboBox(); + cmb.Visible = true; + + List tmps = EP.getROList(currAnn, true); + cmb.DisplayMember = "Text"; + cmb.ValueMember = "Value"; + cmb.DataSource = tmps; + cmb.DropDownStyle = ComboBoxStyle.DropDownList; + cmb.DropDownWidth = TextRenderer.MeasureText(tmps.OrderByDescending(x => x.Text.Length).First().Text, cmb.Font).Width + SystemInformation.VerticalScrollBarWidth; + cmb.Width = cmb.DropDownWidth; + + _DicSingleRO.Add(EP.name, cmb); + panelEP.Controls.Add(cmb, 1, panelEP.RowCount - 1); + } + if (EP.type.ToLower() == "romulti") + { + ListBoxMulti lb = new ListBoxMulti(); + + List tmps = EP.getROList(currAnn, false); + lb.DisplayMember = "Text"; + lb.ValueMember = "Value"; + lb.Width = TextRenderer.MeasureText(tmps.OrderByDescending(x => x.Text.Length).First().Text, lb.Font).Width + SystemInformation.VerticalScrollBarWidth; + + lb.DataSource = tmps; + _DicMultiRO.Add(EP.name, lb); + panelEP.Controls.Add(lb, 1, panelEP.RowCount - 1); + + } + //note will allow only 1 tableproperties control since it is a 1:1 match with the table that is in the step + if (EP.type.ToLower() == "tableinput" && _TablePropControl == null) + { + string val = MyConfig.GetValue("EP", EP.name); + _TablePropControl = new TablePropertiesControl(EP.name, EP.label, val); + _TablePropControl.Anchor = AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Top; + panelEP.Controls.Add(_TablePropControl, 1, panelEP.RowCount - 1); + + } + + } + + Load += new EventHandler(Form1Load_setDefaults); + } + + void Form1Load_setDefaults(object sender, EventArgs e) + { + foreach (KeyValuePair pair in _DicSingleRO) + { + string val = MyConfig.GetValue("EP", pair.Key); + if (!string.IsNullOrEmpty(val) && pair.Value.Items.OfType().Any(x=> x.Value == val)) + pair.Value.SelectedValue = val; + else + pair.Value.SelectedValue = ""; + } + + foreach (KeyValuePair pair in _DicMultiRO) + { + //clear all items at start in case items were autoselected - bug in Winforms ListBox + pair.Value.ClearSelected(); + string val = MyConfig.GetValue("EP", pair.Key); + if (val != null && val != "") + { + var selectedvalues = val.Split(multiseparator.ToCharArray()); + foreach (string item in selectedvalues) + { + string text = ((List)pair.Value.DataSource).Find(x => x.Value == item)?.Text; + if (!string.IsNullOrEmpty(text)) pair.Value.SetSelected(pair.Value.FindString(text), true); + } + } + + //set this to -1 after initial setting of values + //this will help to fix bug in Winforms ListBox + //that autoselects first item when no items are selected + pair.Value.singleselectedindex = -1; + } + + + } + + private void FieldStepRTB_Enter(object sender, EventArgs e) + { + _MyStepTabRibbon.MyStepRTB = (StepRTB)sender; + } + private void btnOk_Click(object sender, EventArgs e) + { + + // loop through all of the fields + bool isDirty = false; + foreach (EPField EP in myEPFields) + { + if (EP.type.ToLower() == "text") + { + TextBox cur = _DicTB[EP.name]; + string newval = cur.Text; + string oldval = MyConfig.GetValue("EP", EP.name); + if (oldval != newval) + { + isDirty = true; + MyConfig.SetValue("EP", EP.name, newval.Replace("\\u8209?","-")); + } + } + else if (EP.type.ToLower() == "logical") + { + CheckBox cur = _DicCheckBox[EP.name]; + string newval = cur.Checked ? "Y" : "N"; + string oldval = MyConfig.GetValue("EP", EP.name); + if (newval != oldval) + { + isDirty = true; + MyConfig.SetValue("EP", EP.name, newval); + } + } + else if (EP.type.ToLower() == "combo") + { + ComboBox cmbcur = _DicComboBox[EP.name]; + string newval = cmbcur.Text; + string oldval = MyConfig.GetValue("EP", EP.name); + if (newval != oldval) + { + isDirty = true; + MyConfig.SetValue("EP", EP.name, newval); + } + } + else if (EP.type.ToLower() == "rosingle") + { + ComboBox cmbcur = _DicSingleRO[EP.name]; + string newval = cmbcur.SelectedValue.ToString(); + string oldval = MyConfig.GetValue("EP", EP.name); + if (newval == "-1") newval = ""; + if (newval != oldval) + { + isDirty = true; + MyConfig.SetValue("EP", EP.name, newval); + } + } + else if (EP.type.ToLower() == "romulti") + { + ListBoxMulti lbcur = _DicMultiRO[EP.name]; + string newvalues = String.Join(multiseparator, lbcur.SelectedItems.OfType().Select(item => item.Value)); + string oldvalues = MyConfig.GetValue("EP", EP.name); + if (newvalues != oldvalues) + { + isDirty = true; + MyConfig.SetValue("EP", EP.name, newvalues); + } + } + else if (EP.type.ToLower() == "tableinput" && EP.name == _TablePropControl.epname) + { + string newvalues = _TablePropControl.GetStorageValue(); + string oldvalues = MyConfig.GetValue("EP", EP.name); + if (newvalues != oldvalues) + { + isDirty = true; + MyConfig.SetValue("EP", EP.name, newvalues); + } + } + } + if (isDirty) + { + using (Annotation annotation = _CurrentAnnotation.Get()) + { + if (annotation != null) + { + annotation.Config = MyConfig.ToString(); + annotation.DTS = DateTime.Now; + annotation.UserID = Volian.Base.Library.VlnSettings.UserID; + annotation.Save(); + } + } + } + DialogResult = DialogResult.OK; + Close(); + } + + private void btnCancel_Click(object sender, EventArgs e) + { + DialogResult = DialogResult.Cancel; + Close(); + } + + //remove events so no memory loss + private void frmEPAnnotationDetails_FormClosing(object sender, FormClosingEventArgs e) + { + foreach (ListBoxMulti lb in _DicMultiRO.Values) + { + lb.Dispose(); + } + + Load -= Form1Load_setDefaults; + } + } +} \ No newline at end of file diff --git a/PROMS/Volian.Controls.Library/frmEPAnnotationDetails.resx b/PROMS/Volian.Controls.Library/frmEPAnnotationDetails.resx new file mode 100644 index 00000000..d58980a3 --- /dev/null +++ b/PROMS/Volian.Controls.Library/frmEPAnnotationDetails.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file