/********************************************************************************************* * Copyright 2002 - Volian Enterprises, Inc. All rights reserved. * Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE * ------------------------------------------------------------------------------ * $Workfile: GroupNewFrm.cs $ $Revision: 7 $ * $Author: Kathy $ $Date: 5/07/03 1:58p $ * * $History: GroupNewFrm.cs $ * * ***************** Version 7 ***************** * User: Kathy Date: 5/07/03 Time: 1:58p * Updated in $/EXE/RefObj/ROEditor * B2003-033 * * ***************** Version 6 ***************** * User: Kathy Date: 4/04/03 Time: 9:40a * Updated in $/EXE/RefObj/ROEditor * B2003-030: set HasChild Attribute for new group * * ***************** Version 5 ***************** * User: Kathy Date: 12/10/02 Time: 2:26p * Updated in $/EXE/RefObj/ROEditor * fieldname special char * * ***************** Version 4 ***************** * User: Kathy Date: 12/06/02 Time: 11:58a * Updated in $/EXE/RefObj/ROEditor * fix new table can't delete without exiting program * * ***************** Version 3 ***************** * User: Kathy Date: 12/02/02 Time: 8:30a * Updated in $/EXE/RefObj/ROEditor * fieldname replace chars * * ***************** Version 2 ***************** * User: Kathy Date: 10/17/02 Time: 11:35a * Updated in $/EXE/RefObj/ROEditor * don't save twice if continue selected to close * * ***************** Version 1 ***************** * User: Kathy Date: 10/15/02 Time: 2:24p * Created in $/EXE/RefObj/ROEditor * new hi level group, form & code *********************************************************************************************/ using System; using System.Drawing; using System.Collections; using System.ComponentModel; using System.Windows.Forms; using System.Xml; using System.Text; using ROFields; using RODBInterface; namespace ROEditor { /// /// Summary description for GroupNewFrm. /// public class GroupNewFrm : System.Windows.Forms.Form { private System.Windows.Forms.Button btnCancel; private System.Windows.Forms.TextBox tbGroup; private System.Windows.Forms.Label lblGroup; private System.Windows.Forms.Button btnContinue; private System.Windows.Forms.GroupBox groupBox1; private System.Windows.Forms.RadioButton rbbtnUserDef; private System.Windows.Forms.RadioButton rbbtnGraphics; private System.Windows.Forms.RadioButton rbbtnSetpoint; /// /// Required designer variable. /// private System.ComponentModel.Container components = null; private RODB myrodb; private VlnXmlElement elem; private string lastSavedGroup; private VlnXmlElement nelem; // new group element private string tbname; // new group table name private string toprecid; // new group master rec id public GroupNewFrm(RODB rodb, VlnXmlElement topelem) { elem = topelem; myrodb = rodb; nelem = null; toprecid = null; tbname = null; // // Required for Windows Form Designer support // InitializeComponent(); // // TODO: Add any constructor code after InitializeComponent call // } /// /// Clean up any resources being used. /// protected override void Dispose( bool disposing ) { if( disposing ) { if(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.btnCancel = new System.Windows.Forms.Button(); this.btnContinue = new System.Windows.Forms.Button(); this.tbGroup = new System.Windows.Forms.TextBox(); this.lblGroup = new System.Windows.Forms.Label(); this.groupBox1 = new System.Windows.Forms.GroupBox(); this.rbbtnSetpoint = new System.Windows.Forms.RadioButton(); this.rbbtnGraphics = new System.Windows.Forms.RadioButton(); this.rbbtnUserDef = new System.Windows.Forms.RadioButton(); this.groupBox1.SuspendLayout(); this.SuspendLayout(); // // btnCancel // this.btnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel; this.btnCancel.Location = new System.Drawing.Point(176, 244); this.btnCancel.Name = "btnCancel"; this.btnCancel.Size = new System.Drawing.Size(120, 24); this.btnCancel.TabIndex = 10; this.btnCancel.Text = "Cancel"; this.btnCancel.Click += new System.EventHandler(this.btnCancel_Click); // // btnContinue // this.btnContinue.Location = new System.Drawing.Point(40, 244); this.btnContinue.Name = "btnContinue"; this.btnContinue.Size = new System.Drawing.Size(106, 24); this.btnContinue.TabIndex = 9; this.btnContinue.Text = "Continue"; this.btnContinue.Click += new System.EventHandler(this.btnContinue_Click); // // tbGroup // this.tbGroup.Location = new System.Drawing.Point(72, 8); this.tbGroup.Name = "tbGroup"; this.tbGroup.Size = new System.Drawing.Size(248, 22); this.tbGroup.TabIndex = 8; this.tbGroup.Text = ""; // // lblGroup // this.lblGroup.Location = new System.Drawing.Point(8, 8); this.lblGroup.Name = "lblGroup"; this.lblGroup.Size = new System.Drawing.Size(56, 16); this.lblGroup.TabIndex = 7; this.lblGroup.Text = "Group:"; // // groupBox1 // this.groupBox1.Controls.AddRange(new System.Windows.Forms.Control[] { this.rbbtnSetpoint, this.rbbtnGraphics, this.rbbtnUserDef}); this.groupBox1.Location = new System.Drawing.Point(24, 56); this.groupBox1.Name = "groupBox1"; this.groupBox1.Size = new System.Drawing.Size(288, 152); this.groupBox1.TabIndex = 11; this.groupBox1.TabStop = false; this.groupBox1.Text = "Group Type"; // // rbbtnSetpoint // this.rbbtnSetpoint.Location = new System.Drawing.Point(48, 64); this.rbbtnSetpoint.Name = "rbbtnSetpoint"; this.rbbtnSetpoint.Size = new System.Drawing.Size(184, 24); this.rbbtnSetpoint.TabIndex = 2; this.rbbtnSetpoint.Text = "Setpoint Database"; // // rbbtnGraphics // this.rbbtnGraphics.Location = new System.Drawing.Point(48, 96); this.rbbtnGraphics.Name = "rbbtnGraphics"; this.rbbtnGraphics.Size = new System.Drawing.Size(184, 24); this.rbbtnGraphics.TabIndex = 1; this.rbbtnGraphics.TabStop = true; this.rbbtnGraphics.Text = "Graphics Database"; // // rbbtnUserDef // this.rbbtnUserDef.Location = new System.Drawing.Point(48, 32); this.rbbtnUserDef.Name = "rbbtnUserDef"; this.rbbtnUserDef.Size = new System.Drawing.Size(184, 24); this.rbbtnUserDef.TabIndex = 0; this.rbbtnUserDef.Text = "User Defined Database"; // // GroupNewFrm // this.AutoScaleBaseSize = new System.Drawing.Size(6, 15); this.ClientSize = new System.Drawing.Size(376, 273); this.Controls.AddRange(new System.Windows.Forms.Control[] { this.groupBox1, this.btnCancel, this.btnContinue, this.tbGroup, this.lblGroup}); this.Font = new System.Drawing.Font("Tahoma", 9F); this.Name = "GroupNewFrm"; this.Text = "New Group (Database)"; this.Load += new System.EventHandler(this.GroupNewFrm_Load); this.groupBox1.ResumeLayout(false); this.ResumeLayout(false); } #endregion private void GroupNewFrm_Load(object sender, System.EventArgs e) { } private string CvtUserFldToFld(string fldname) { if (fldname.Length < 2) return fldname; // a digit cannot start an xml fieldname, prepend a "__" to it. string tmp0; if (char.IsDigit(fldname,0)) tmp0 = "__" + fldname; else tmp0 = fldname; // an xml fieldname cannot have a space, change it to a "__" string tmpstr = tmp0.Replace(" ","__"); int len = tmpstr.Length; int cnt = 0; // this is also our sequence that tells us the follow 3 digits is the ascii number (base 10) // of the character we replaced. string OKpunch = "-._"; string outstr = ""; int decval; while (cnt < len) { char tmpchr = tmpstr[cnt]; if(!char.IsLetterOrDigit(tmpchr)&& (OKpunch.IndexOf(tmpchr) == -1) ) { decval = tmpchr; outstr += OKpunch + decval.ToString("D3"); } else { outstr += tmpchr.ToString(); } cnt++; } return outstr; } private void btnCancel_Click(object sender, System.EventArgs e) { if (toprecid != null) { myrodb.RODB_DeleteGroup((XmlNode)nelem,tbname,toprecid); } if(nelem!=null) { XmlNode par = (XmlNode)nelem.ParentNode; par.RemoveChild((XmlNode)nelem); } } private void btnContinue_Click(object sender, System.EventArgs e) { bool success; if (this.tbGroup.Text == null || this.tbGroup.Text == "") { MessageBox.Show("Need to specify group name."); return; } // if this was already saved, i.e. user hit continue button already, // just return; if (this.tbGroup.Text == lastSavedGroup) { this.Close(); return; } lastSavedGroup = this.tbGroup.Text; int dbtype=-1; if (this.rbbtnGraphics.Checked == true) dbtype = 1; else if (this.rbbtnSetpoint.Checked == true) dbtype = 2; else if (this.rbbtnUserDef.Checked == true) dbtype = 3; if (dbtype<0) { MessageBox.Show("Need to define type of group."); return; } Cursor.Current = Cursors.WaitCursor; // make a new table with the next table name id tbname = myrodb.RODB_GetNextGroupTable(); if (tbname == null) { Cursor.Current = Cursors.Default; return; } toprecid = myrodb.RODB_AddNewTable(tbname, this.tbGroup.Text); if (toprecid == null) { Cursor.Current = Cursors.Default; return; } // for the given type, copy over the required fields. success = myrodb.RODB_CopyFieldDefs("ROMaster",tbname,dbtype); if (success == false) { Cursor.Current = Cursors.Default; return; } // create top level group node with input name. nelem = (VlnXmlElement) elem.OwnerDocument.CreateElement("vlnGroup"); nelem.InnerText = CvtUserFldToFld(this.tbGroup.Text); nelem.SetAttribute("Table",tbname); nelem.SetAttribute("ParentID", "00000000"); string nrecid = myrodb.RODB_GetNextRecId(tbname); nelem.SetAttribute("RecID", nrecid); elem.AppendChild((XmlNode) nelem); success = myrodb.RODB_InsertGroup(nelem); Cursor.Current = Cursors.Default; if (success == false) return; nelem.SetAttribute("TreeNotData", "True"); nelem.SetAttribute("MenuTitle", this.tbGroup.Text); nelem.SetAttribute("MasterRecID",toprecid); nelem.SetAttribute("HasChild", "False"); // if this is a setpoint db or image db, get fields and find those fields needed // to define ro & group. This is hardcoded, yuk. if(dbtype == 1 || dbtype == 2) { ArrayList FieldList = myrodb.RODB_GetFields(nelem, (uint) RecordType.Schema); string[] fldlist=null, grplist=null; ROField rof; string curfld; StringBuilder Inuse = new StringBuilder(); // Get list of inuse fields for the rro. if (dbtype == 1) fldlist = new string[] {"Name", "Image ID", "Image"}; else fldlist = new string[] {"Setpoint ID", "Setpoint Value", "Associated System Component", "Applicability", "Revision", "Short Description", "Description", "Key Assumptions", "Basis", "References"}; for (int i=0; i< fldlist.Length; i++) { curfld = fldlist[i]; for (int j=0; j"); nelem.SetAttribute("MenuItem"," "); nelem.SetAttribute("GroupMenuItem",""); nelem.SetAttribute("AccPageIDPrefix","SP2"); nelem.SetAttribute("AccPageID",""); } else if (dbtype == 1) // image { nelem.SetAttribute("RetVal",""); nelem.SetAttribute("MenuItem",""); nelem.SetAttribute("GroupMenuItem",""); nelem.SetAttribute("AccPageIDPrefix","IG2"); nelem.SetAttribute("AccPageID",""); } success = myrodb.RODB_WriteRO(nelem); if (success == false) return; } // now let the user specify the group name, etc to define the group. GroupDefFrm grdef = new GroupDefFrm(nelem,myrodb,nelem.InnerText,dbtype); grdef.ShowDialog(); } } }