Commit for development environment setup
This commit is contained in:
@@ -0,0 +1,325 @@
|
||||
/*********************************************************************************************
|
||||
* Copyright 2004 - Volian Enterprises, Inc. All rights reserved.
|
||||
* Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE
|
||||
* ------------------------------------------------------------------------------
|
||||
* $Workfile: DataRoot.cs $ $Revision: 2 $
|
||||
* $Author: Jsj $ $Date: 3/06/07 1:29p $
|
||||
*
|
||||
* $History: DataRoot.cs $
|
||||
*
|
||||
* ***************** Version 2 *****************
|
||||
* User: Jsj Date: 3/06/07 Time: 1:29p
|
||||
* Updated in $/LibSource/VEObject
|
||||
* Property page check
|
||||
*
|
||||
* ***************** Version 1 *****************
|
||||
* User: Kathy Date: 7/27/04 Time: 8:53a
|
||||
* Created in $/LibSource/VEObject
|
||||
*********************************************************************************************/
|
||||
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Windows.Forms;
|
||||
using System.ComponentModel;
|
||||
using System.IO;
|
||||
using VENetwork;
|
||||
using Utils;
|
||||
|
||||
namespace VEObject
|
||||
{
|
||||
/// <summary>
|
||||
/// This module defines the DataRoot class, which is the root of all
|
||||
/// data that is accessible to this user. (i.e. it is the container
|
||||
/// for all data within the datapath). Applications accessing the database
|
||||
/// should create a DataRoot.
|
||||
/// </summary>
|
||||
public class VEO_DataRoot : VEO_Base
|
||||
{
|
||||
protected string tmpLocation;
|
||||
protected bool changeLocation;
|
||||
|
||||
public VEO_DataRoot(UserRunTime iusrRunTime)
|
||||
{
|
||||
VEObjectType=(int)VEObjectTypesDefs.System;
|
||||
iconStates = new int[5] {6,21,8,22,7};
|
||||
_Title = "VE-PROMS Data "+iusrRunTime.ucfgpath;
|
||||
_Location = iusrRunTime.ucfgpath;
|
||||
changeLocation = false;
|
||||
usrRunTime = iusrRunTime;
|
||||
isNew=false;
|
||||
LoadLockInfo();
|
||||
icon = iconStates[(int)Lock.LockStatus];
|
||||
}
|
||||
|
||||
public override void LoadLockInfo()
|
||||
{
|
||||
Lock = new VELock(usrRunTime.syspath, usrRunTime.myUserData, usrRunTime.InMultiUserMode?VENetwork.LockTypes.System:VENetwork.LockTypes.None);
|
||||
}
|
||||
|
||||
// The following properties are used in the 'Properties' dialog. This set is used
|
||||
// for modify.
|
||||
[Description("Title"),Category("VE-PROMS Data Paths (CFG File)"),ReadOnly(true)]public string Title
|
||||
{
|
||||
get{return _Title;}
|
||||
set{_Title=value;}
|
||||
}
|
||||
|
||||
//[Description("Location"),Category("VE-PROMS Data Paths (CFG File)"),EditorAttribute(typeof(DataRootFileDlg), typeof(System.Drawing.Design.UITypeEditor))]public string Location
|
||||
[Description("Location"),Category("VE-PROMS Data Paths (CFG File)"),ReadOnly(true)]public string Location
|
||||
{
|
||||
get
|
||||
{
|
||||
if (!changeLocation)
|
||||
return _Location;
|
||||
else
|
||||
return tmpLocation;
|
||||
}
|
||||
set
|
||||
{
|
||||
FileInfo fi = new FileInfo(value);
|
||||
if (!fi.Exists)
|
||||
{
|
||||
MessageBox.Show("The file that was specified does not exist.");
|
||||
return;
|
||||
}
|
||||
changeLocation = true;
|
||||
tmpLocation=value;
|
||||
}
|
||||
}
|
||||
|
||||
public override bool Open()
|
||||
{
|
||||
isOpen = true;
|
||||
// check current multi-user status
|
||||
if (Connection!=null)Connection.Enter(false);
|
||||
return true;
|
||||
}
|
||||
|
||||
// Close clears any multi-user settings for the system level
|
||||
public override bool Close()
|
||||
{
|
||||
isOpen = false;
|
||||
if (Connection!=null)Connection.Exit();
|
||||
return true;
|
||||
}
|
||||
|
||||
public override void Restore()
|
||||
{
|
||||
changeLocation = false;
|
||||
}
|
||||
|
||||
public override bool mnuAllowDelete()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
public override bool mnuAllowLckDB()
|
||||
{
|
||||
if (usrRunTime.InMultiUserMode && usrRunTime.sec.PermissionToLockFlag&&Lock.LockStatus==VENetwork.Status.NoLock) return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
public override bool mnuAllowNew()
|
||||
{
|
||||
// if (usrRunTime.InMultiUserMode && Lock.LockStatus==VENetwork.Status.LockedByOther)return false;
|
||||
// B2007-005
|
||||
// Standardize the need for a lock. Prevent NEW button on first tree node
|
||||
// if a lock is not set
|
||||
if (amILockedByMe()==false) return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
public override bool mnuAllowUnlckDB()
|
||||
{
|
||||
if (usrRunTime.InMultiUserMode && usrRunTime.sec.PermissionToLockFlag&&(Lock.LockStatus==VENetwork.Status.Locked||
|
||||
Lock.LockStatus==VENetwork.Status.LockPending)) return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
// Add a Data Path. Private method used below.
|
||||
private void AddDataPath(string entry)
|
||||
{
|
||||
int comma;
|
||||
string tmp;
|
||||
string loc;
|
||||
string title;
|
||||
|
||||
comma = entry.IndexOf(",");
|
||||
tmp=entry.Substring(0,comma);
|
||||
loc=tmp.Trim();
|
||||
//Make sure datapath has an ending backslash
|
||||
if (!(loc.EndsWith("\\")))
|
||||
loc = loc + "\\";
|
||||
|
||||
tmp=entry.Substring(comma+1,entry.Length-comma-2); // -2, don't copy ";"
|
||||
title=tmp.Trim();
|
||||
|
||||
VEO_DataPath dp = new VEO_DataPath(usrRunTime,title,loc);
|
||||
dp.parentObj = (VEO_Base) this;
|
||||
Children.Add(dp);
|
||||
}
|
||||
|
||||
// Get the datapath list. If in demo mode, use sample list; otherwise read in
|
||||
// from the user's cfg file.
|
||||
public override bool Read(bool dummy)
|
||||
{
|
||||
PrivateProfile ppCfg;
|
||||
string dpath;
|
||||
string entry;
|
||||
int semi;
|
||||
int strtindx=0;
|
||||
int netpth;
|
||||
|
||||
if (usrRunTime.sec.isDemoMode)
|
||||
{
|
||||
dpath = usrRunTime.syspath + "\\samples\\,Demo Data;";
|
||||
}
|
||||
else
|
||||
{
|
||||
// for this data root, read in the datapath. If a user's cfg exists
|
||||
// use that data. Otherwise, use the menuwin2.xml data which is part
|
||||
// of the user's run time.
|
||||
ppCfg = new PrivateProfile(usrRunTime.ucfgpath);
|
||||
// dpath=ppCfg.Attr("/ini/section[@name='Menu']/param[@name='DataPath']/@value");
|
||||
dpath=ppCfg.Attr("Menu","DataPath");
|
||||
if (dpath==null || dpath=="")return false;
|
||||
}
|
||||
semi=dpath.IndexOf(";",strtindx);
|
||||
if (semi == -1)
|
||||
{
|
||||
MessageBox.Show("Must have semi-colon in datapath");
|
||||
Environment.Exit(-1);
|
||||
}
|
||||
while (semi !=-1)
|
||||
{
|
||||
entry = dpath.Substring(strtindx,semi-strtindx+1);
|
||||
netpth = entry.IndexOf("////",0);
|
||||
if (netpth != -1)
|
||||
//if(GetNetTempDisk()) AddDataPath(entry);
|
||||
MessageBox.Show("Need to support network temp disk");
|
||||
else
|
||||
AddDataPath(entry);
|
||||
|
||||
if (semi+1>dpath.Length)
|
||||
strtindx=-1;
|
||||
else
|
||||
{
|
||||
strtindx=semi+1;
|
||||
semi=dpath.IndexOf(";",strtindx);
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
// use the change to the cfg file.
|
||||
public override bool Write()
|
||||
{
|
||||
// check for cfg file existence
|
||||
FileInfo fi = new FileInfo(Location);
|
||||
if (fi.Exists)
|
||||
{
|
||||
if(changeLocation)_Location=tmpLocation;
|
||||
changeLocation=false;
|
||||
this._Title = "VE-PROMS Data " + Location;
|
||||
usrRunTime.ucfgpath = Location;
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
MessageBox.Show("The file that was specified does not exist.");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
// add a new datapath
|
||||
public override Object MakeNewChild()
|
||||
{
|
||||
VEO_DataPathN dp = new VEO_DataPathN(usrRunTime,null,null);
|
||||
return dp;
|
||||
}
|
||||
|
||||
// check that the directory input by the user exists. If so, add the
|
||||
// directory & title to the cfg file.
|
||||
public override bool SaveChild(Object obj)
|
||||
{
|
||||
VEO_DataPathN dp = (VEO_DataPathN) obj;
|
||||
// B2007-005
|
||||
// If the user didn't enter a location, then show an error message
|
||||
//and don't continue with the save.
|
||||
if (dp.Location == null || dp.Location.Length == 0)
|
||||
{
|
||||
MessageBox.Show("No data path Location specified.","Error");
|
||||
return false;
|
||||
}
|
||||
dp.SaveFields();
|
||||
// Check for existance of directory if it doesn't exist give message
|
||||
// and return;
|
||||
string pth = dp._Location;
|
||||
DirectoryInfo di = new DirectoryInfo(pth);
|
||||
if (di.Exists == false)
|
||||
{
|
||||
try
|
||||
{
|
||||
di.Create();
|
||||
}
|
||||
catch
|
||||
{
|
||||
MessageBox.Show("Directory for data path doesn't exist, and could not be created.");
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
string newcfgpth = dp._Location+","+dp._Title+";";
|
||||
usrRunTime.AddPathToCfg(newcfgpth);
|
||||
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_DataPath dp = (VEO_DataPath) Children[i];
|
||||
item = new ListViewItem(dp._Location,dp.icon);
|
||||
item.Tag = dp;
|
||||
item.SubItems.Add(dp._Title);
|
||||
veoListView.Items.Add(item);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public class DataRootFileDlg : 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)
|
||||
{
|
||||
OpenFileDialog FileDialog1 = new OpenFileDialog();
|
||||
FileDialog1.AddExtension = true;
|
||||
FileDialog1.CheckPathExists = true;
|
||||
FileDialog1.DefaultExt = ".cfg";
|
||||
FileDialog1.Filter = "CFG Files|*.cfg|All Files|*.*||";
|
||||
FileDialog1.DereferenceLinks = true;
|
||||
FileDialog1.Title = "User Configuration File (defines datapath)";
|
||||
FileDialog1.FileName = value.ToString();
|
||||
FileDialog1.ShowDialog();
|
||||
|
||||
return FileDialog1.FileName;
|
||||
}
|
||||
|
||||
public override bool GetPaintValueSupported(
|
||||
System.ComponentModel.ITypeDescriptorContext context)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user