Commit for development environment setup
This commit is contained in:
@@ -0,0 +1,421 @@
|
||||
/*********************************************************************************************
|
||||
* 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
|
||||
{
|
||||
/// <summary>
|
||||
/// 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.
|
||||
/// </summary>
|
||||
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<tmpChildren.Count;i++)
|
||||
{
|
||||
VEO_Plant plnt = (VEO_Plant) tmpChildren[i];
|
||||
lsec.AddPlant(i,plnt._Location);
|
||||
|
||||
// Check if the plant is included in the vesam file. If not,
|
||||
// it may have been added since vesam was run. In this case,
|
||||
// the BlockAccess flag is used to determine whether the user
|
||||
// should have access to the plant.
|
||||
bool hasSec = lsec.PlantHasSecurity(i);
|
||||
|
||||
// see if the plant has any plant options, if so, include
|
||||
// it in the list. If not, check to see if any of its procedures
|
||||
// have options set & if so, the plant should be included.
|
||||
//
|
||||
bool procopts=false;
|
||||
if (hasSec)
|
||||
{
|
||||
plnt.accessFlags = lsec.GetPlantSecurity(i);
|
||||
if (plnt.accessFlags==0L)
|
||||
{
|
||||
procopts = lsec.AnyOptionsSet(i);
|
||||
}
|
||||
}
|
||||
// if security is okay, i.e. either the plant has options or at least
|
||||
// one of the sets within it has some options, include the plant in the
|
||||
// list. Also, if there is not security, but access is not blocked
|
||||
// (!BlockAccess) add it.
|
||||
if ((hasSec && (plnt.accessFlags!=0L||procopts)) || (!hasSec&&!lsec.BlockAccess()))
|
||||
Children.Add(plnt);
|
||||
}
|
||||
lsec.CloseFile();
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
// write out to the user's cfg file.
|
||||
public override bool Write()
|
||||
{
|
||||
string newtitle=null;
|
||||
string oldmodstr=_Location + "," + _Title + ";";
|
||||
if (changeTitle)
|
||||
newtitle = tmpTitle;
|
||||
else
|
||||
newtitle = _Title;
|
||||
string newmodstr = _Location + "," + newtitle + ";";
|
||||
usrRunTime.ModTitleToCfg(oldmodstr,newmodstr);
|
||||
if (changeTitle) _Title=newtitle;
|
||||
changeTitle=false;
|
||||
return true;
|
||||
}
|
||||
|
||||
public override void DoListView(ListView veoListView)
|
||||
{
|
||||
ListViewItem item=null;
|
||||
veoListView.Columns.Add("Location", 120, HorizontalAlignment.Left);
|
||||
veoListView.Columns.Add("Title", 300, HorizontalAlignment.Left);
|
||||
|
||||
for (int i=0; i<Children.Count; i++)
|
||||
{
|
||||
VEO_Plant plnt = (VEO_Plant) Children[i];
|
||||
item = new ListViewItem(plnt._Location,plnt.icon);
|
||||
item.Tag = plnt;
|
||||
item.SubItems.Add(plnt._Title);
|
||||
veoListView.Items.Add(item);
|
||||
}
|
||||
}
|
||||
|
||||
public override bool mnuAllowNew()
|
||||
{
|
||||
if (amILockedByMe()==false) return false; // new (plant) requires sys lock
|
||||
if(usrRunTime.sec.SystemAdminFlag) return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
public override bool CollapseSibling()
|
||||
{
|
||||
if (!usrRunTime.InMultiUserMode) return false;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
// the following class inherits from the VEO_DataPath and is used to handle
|
||||
// a New data path (it has the Location property as editable).
|
||||
class VEO_DataPathN : VEO_DataPath
|
||||
{
|
||||
public VEO_DataPathN(UserRunTime iusrRunTime, string ititle, string iloc)
|
||||
: base(iusrRunTime, ititle, iloc)
|
||||
{
|
||||
isNew=true;
|
||||
}
|
||||
|
||||
// this method is used so that if a new datapath is created, it is associated
|
||||
// with editable properties (such as path). When the object exists this is
|
||||
// not editable. So when a new object is created, if it's successful, it's
|
||||
// copied to an object which is not editable for the treeview & any further
|
||||
// operations.
|
||||
public override Object Copy()
|
||||
{
|
||||
VEO_DataPath dp = new VEO_DataPath(usrRunTime,this._Title,this._Location);
|
||||
dp.parentObj=this.parentObj;
|
||||
return (Object) dp;
|
||||
}
|
||||
|
||||
public void SaveFields()
|
||||
{
|
||||
// B2007-005
|
||||
// Check to see if tmpLocation is null before checking for a substring.
|
||||
if (tmpLocation != null && tmpLocation.Substring(tmpLocation.Length-1,1) != "\\")
|
||||
_Location = tmpLocation+"\\";
|
||||
else
|
||||
_Location=tmpLocation;
|
||||
_Title=tmpTitle;
|
||||
changeLocation=false;
|
||||
changeTitle=false;
|
||||
|
||||
}
|
||||
|
||||
[Description("Location"),Category("Data Path"),ReadOnly(false),EditorAttribute(typeof(VEFolderBrowserDlg), typeof(System.Drawing.Design.UITypeEditor))]public new string Location
|
||||
{
|
||||
get
|
||||
{
|
||||
if (!changeLocation)
|
||||
return _Location;
|
||||
else
|
||||
return tmpLocation;
|
||||
}
|
||||
set
|
||||
{
|
||||
ShortName sname = new ShortName(value);
|
||||
tmpLocation=sname.ShortFileName;
|
||||
sname = null;
|
||||
changeLocation=true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public class VEFolderBrowserDlg : System.Drawing.Design.UITypeEditor
|
||||
{
|
||||
public override System.Drawing.Design.UITypeEditorEditStyle GetEditStyle(System.ComponentModel.ITypeDescriptorContext context)
|
||||
{
|
||||
return System.Drawing.Design.UITypeEditorEditStyle.Modal;
|
||||
}
|
||||
|
||||
public override object EditValue(
|
||||
System.ComponentModel.ITypeDescriptorContext context,
|
||||
System.IServiceProvider provider, object value)
|
||||
{
|
||||
FolderBrowserDialog FldrDlg = new FolderBrowserDialog();
|
||||
FldrDlg.ShowNewFolderButton = true;
|
||||
FldrDlg.SelectedPath = Directory.GetCurrentDirectory();
|
||||
if(FldrDlg.ShowDialog() == DialogResult.OK)
|
||||
return FldrDlg.SelectedPath;
|
||||
else
|
||||
return null;
|
||||
}
|
||||
|
||||
public override bool GetPaintValueSupported(
|
||||
System.ComponentModel.ITypeDescriptorContext context)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public class VESymbDlg : System.Drawing.Design.UITypeEditor
|
||||
{
|
||||
public override System.Drawing.Design.UITypeEditorEditStyle GetEditStyle(System.ComponentModel.ITypeDescriptorContext context)
|
||||
{
|
||||
return System.Drawing.Design.UITypeEditorEditStyle.Modal;
|
||||
}
|
||||
|
||||
public override object EditValue(
|
||||
System.ComponentModel.ITypeDescriptorContext context,
|
||||
System.IServiceProvider provider, object value)
|
||||
{
|
||||
System.Windows.Forms.GridItem grdentr = (GridItem) provider;
|
||||
SymbolListSteps symblst = new SymbolListSteps();
|
||||
SymbDlg symdlg = new SymbDlg(symblst,grdentr);
|
||||
if(symdlg.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
return symdlg.ReturnText;
|
||||
}
|
||||
else
|
||||
return value;
|
||||
}
|
||||
|
||||
public override bool GetPaintValueSupported(
|
||||
System.ComponentModel.ITypeDescriptorContext context)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public class VECreateFolderBrowserDlg : System.Drawing.Design.UITypeEditor
|
||||
{
|
||||
public override System.Drawing.Design.UITypeEditorEditStyle GetEditStyle(System.ComponentModel.ITypeDescriptorContext context)
|
||||
{
|
||||
return System.Drawing.Design.UITypeEditorEditStyle.Modal;
|
||||
}
|
||||
|
||||
public override object EditValue(
|
||||
System.ComponentModel.ITypeDescriptorContext context,
|
||||
System.IServiceProvider provider, object value)
|
||||
{
|
||||
FolderBrowserDialog FldrDlg = new FolderBrowserDialog();
|
||||
FldrDlg.SelectedPath = Directory.GetCurrentDirectory();
|
||||
FldrDlg.ShowNewFolderButton = true;
|
||||
if(FldrDlg.ShowDialog() == DialogResult.OK)
|
||||
return FldrDlg.SelectedPath;
|
||||
else
|
||||
return null;
|
||||
}
|
||||
|
||||
public override bool GetPaintValueSupported(
|
||||
System.ComponentModel.ITypeDescriptorContext context)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user