/********************************************************************************************* * Copyright 2004 - Volian Enterprises, Inc. All rights reserved. * Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE * ------------------------------------------------------------------------------ * $Workfile: DataPath.cs $ $Revision: 5 $ * $Author: Jsj $ $Date: 3/06/07 1:26p $ * * $History: DataPath.cs $ * * ***************** Version 5 ***************** * User: Jsj Date: 3/06/07 Time: 1:26p * Updated in $/LibSource/VEObject * check for a null Location. * * ***************** Version 4 ***************** * User: Kathy Date: 1/24/05 Time: 2:45p * Updated in $/LibSource/VEObject * B2005-004 fixes * * ***************** Version 3 ***************** * User: Kathy Date: 1/19/05 Time: 11:59a * Updated in $/LibSource/VEObject * Fix B2005-003 - missing plant security setting * * ***************** Version 2 ***************** * User: Kathy Date: 1/14/05 Time: 10:38a * Updated in $/LibSource/VEObject * B2004-061: fix security options * * ***************** Version 1 ***************** * User: Kathy Date: 7/27/04 Time: 8:53a * Created in $/LibSource/VEObject *********************************************************************************************/ using System; using System.Windows.Forms; using System.Collections; using System.Xml; using System.IO; using System.ComponentModel; using Utils; namespace VEObject { /// /// This defines the DataPath class, which handles the datapath information /// which tells the program where to search for veproms data. A datapath is of /// the form "[path],[title];" for example G:\,GDRIVE; /// Its children are vedata directories as found in the menuwin.xml file. /// These vedata directories represent plant data. /// public class VEO_DataPath : VEO_Base { protected string tmpTitle; protected string tmpLocation; protected bool changeLocation; protected bool changeTitle; private string PrevDirectory; public VEO_DataPath(UserRunTime iusrRunTime, string ititle, string iloc) { iconStates = new int[5] {6,21,8,22,7}; _Title = ititle; _Location = iloc; usrRunTime = iusrRunTime; changeTitle=false; changeLocation=false; isNew=false; LoadLockInfo(); icon = iconStates[(int)Lock.LockStatus]; } // the following properties are used in the properties dialog for modification // of 'property' data. [Description("Location"),Category("Data Path"),ReadOnly(true)]public string Location { get{return _Location;} set { ShortName sname = new ShortName(value); _Location=sname.ShortFileName; sname = null; } } [Description("Title"),Category("Data Path")]public string Title { get { if (!changeTitle) return _Title; else return tmpTitle; } set { changeTitle=true; tmpTitle=value; } } public override void Restore() { changeTitle = false; } // Make a new child, which is a plant node. public override Object MakeNewChild() { VEO_Plant pl = new VEO_PlantN(usrRunTime,null,null); return (Object) pl; } // 'Open' positions in the datapath directory (for creation of plant // directories (store the previous directory, to position out of this // directory on end). public override bool Open() { if (Directory.Exists(_Location) == false) return false; isOpen = true; PrevDirectory = Directory.GetCurrentDirectory(); if(_Location!=null)Directory.SetCurrentDirectory(_Location); return true; } // Close clears any multi-user settings for the system level public override bool Close() { if (!isOpen)return false; isOpen = false; Directory.SetCurrentDirectory(PrevDirectory); return true; } // Save the new plant & add to children if it succeeds. public override bool SaveChild(Object obj) { VEO_Plant plnt = (VEO_Plant)obj; bool succeed = plnt.SaveNew(this._Location); if (succeed == true) { plnt._Location = this._Location + plnt._Location; plnt.parentObj = this; } return succeed; } public override bool Delete() { // concatenate title/loc so that it can be removed from the datapath string string delpth = _Location + "," + _Title + ";"; bool success = usrRunTime.DeletePathFromCfg(delpth); return success; } // for this data path, read in which plants are available, and add to // the list. public override bool Read(bool dummy) { ArrayList tmpChildren = new ArrayList(); // using the . do exist tests to see if they exist on this datapath. XmlDocument xmldoc = usrRunTime.menuwinXML.GetXmlDoc(); XmlElement top = (XmlElement) xmldoc.FirstChild; XmlElement sys = (XmlElement) top.SelectSingleNode("SystemAttach"); XmlElement ele = (XmlElement) sys.SelectSingleNode("Plant"); while (ele != null) { // get plants and test for existence with the location for // this datapath. If exists, add it to the PlantList. //get the TemplateName & if there is a {t} replace the {t} // with this datapath's path. XmlElement tn = (XmlElement) ele.SelectSingleNode("TemplateName"); if (tn != null) { string templatename = tn.InnerText; if (templatename.IndexOf("{t}",0) != -1) { string tpath = templatename.Replace("{t}",this.Location); string path = tpath.Substring(0,tpath.IndexOf(" menu")); DirectoryInfo source = new DirectoryInfo(path.Replace("/","//")); if (source.Exists) { XmlElement etitle = (XmlElement) ele.SelectSingleNode("MenuName"); VEO_Plant plnt = new VEO_Plant(usrRunTime, etitle.InnerText,path); plnt.parentObj = this; tmpChildren.Add(plnt); } } } ele = (XmlElement) ele.NextSibling; } Security lsec = usrRunTime.sec; if (lsec.OpenFile()==true) { for(int i=0;i