1109 lines
32 KiB
C#
1109 lines
32 KiB
C#
using System;
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using System.Collections.Specialized;
|
|
using System.ComponentModel;
|
|
using System.Data;
|
|
using System.Drawing;
|
|
using System.Text;
|
|
using System.Windows.Forms;
|
|
using VEPROMS.CSLA.Library;
|
|
using Csla;
|
|
using DevComponents;
|
|
using DevComponents.DotNetBar;
|
|
using DevComponents.DotNetBar.Rendering;
|
|
using Csla.Validation;
|
|
using VEPROMS.Properties;
|
|
using Volian.Controls.Library;
|
|
using DescriptiveEnum;
|
|
|
|
[assembly: log4net.Config.XmlConfigurator(Watch = true)]
|
|
|
|
namespace VEPROMS
|
|
{
|
|
enum PropPgStyle { Button = 1, Tab = 2, Grid = 3 };
|
|
|
|
public partial class frmVEPROMS : DevComponents.DotNetBar.Office2007RibbonForm
|
|
{
|
|
#region Log4Net
|
|
private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
|
|
#endregion
|
|
Folder _LastFolder = null;
|
|
FolderInfo _LastFolderInfo = null;
|
|
Procedure _LastProcedure = null;
|
|
ProcedureInfo _LastProcedureInfo = null;
|
|
DocVersion _LastDocVersion = null;
|
|
DocVersionInfo _LastDocVersionInfo = null;
|
|
SectionInfo _LastSectionInfo = null;
|
|
Section _LastSection = null;
|
|
VETreeNode _LastTreeNode = null;
|
|
Step _LastStep = null;
|
|
StepInfo _LastStepInfo = null;
|
|
Color _CommentTitleBckColor;
|
|
|
|
VETreeNode _PrevBookMark = null;
|
|
|
|
public frmVEPROMS()
|
|
{
|
|
InitializeComponent();
|
|
|
|
// set the color of the ribbon
|
|
RibbonPredefinedColorSchemes.ChangeOffice2007ColorTable((eOffice2007ColorScheme)Settings.Default.SystemColor);
|
|
|
|
VETreeNode tn = VETreeNode.GetFolder(1);
|
|
tv.Nodes.Add(tn);
|
|
tv.NodeNew += new Volian.Controls.Library.vlnTreeViewTreeNodeEvent(tv_NodeNew);
|
|
tv.NodeDragDrop += new Volian.Controls.Library.vlnTreeViewEvent(tv_NodeDragDrop);
|
|
tv.NodeDelete += new Volian.Controls.Library.vlnTreeViewBoolEvent(tv_NodeDelete);
|
|
tv.NodeProperties += new Volian.Controls.Library.vlnTreeViewEvent(tv_NodeProperties);
|
|
_CommentTitleBckColor = epComments.TitleStyle.BackColor1.Color;
|
|
epComments.Expanded = false;
|
|
// TODO: load previously set bookmarks
|
|
btnPrevPos.Enabled = false;
|
|
btnClrBookMrks.Enabled = false;
|
|
btnRmvCurBookMrk.Enabled = false;
|
|
lbxBookMarks.Enabled = false;
|
|
_PrevBookMark = null;
|
|
}
|
|
|
|
private void frmVEPROMS_FormClosing(object sender, FormClosingEventArgs e)
|
|
{
|
|
// Save the location and size of the VE-PROMS appication for this user
|
|
Settings.Default.Location = this.Location;
|
|
Settings.Default.Size = this.Size;
|
|
Settings.Default.Save();
|
|
}
|
|
|
|
private void frmVEPROMS_Load(object sender, EventArgs e)
|
|
{
|
|
// get the saved location and size of the VE-PROMS appication for this user
|
|
if (Settings.Default["Location"] != null) this.Location = Settings.Default.Location;
|
|
if (Settings.Default["Size"] != null) this.Size = Settings.Default.Size;
|
|
}
|
|
|
|
#region Tree View
|
|
|
|
/// <summary>
|
|
/// Get the selected tree node's properties
|
|
/// </summary>
|
|
/// <param name="node">VETreeNode</param>
|
|
void SetupNodes(VETreeNode node)
|
|
{
|
|
if (!node.Equals(_LastTreeNode))
|
|
{
|
|
_LastTreeNode = node;
|
|
_LastFolderInfo = null;
|
|
_LastFolder = null;
|
|
_LastDocVersion = null;
|
|
_LastProcedure = null;
|
|
_LastSection = null;
|
|
_LastStep = null;
|
|
epComments.Expanded = false;
|
|
rtxbComment.Text = "";
|
|
epComments.TitleStyle.BackColor1.Color = _CommentTitleBckColor;
|
|
|
|
switch (node.VEObject.GetType().Name)
|
|
{
|
|
case "FolderInfo":
|
|
_LastFolderInfo = (FolderInfo)(_LastTreeNode.VEObject);
|
|
_LastFolder = _LastFolderInfo.Get();
|
|
break;
|
|
case "DocVersionInfo":
|
|
_LastDocVersionInfo = (DocVersionInfo)(node.VEObject);
|
|
_LastDocVersion = _LastDocVersionInfo.Get();
|
|
break;
|
|
case "ProcedureInfo":
|
|
_LastProcedureInfo = (ProcedureInfo)(_LastTreeNode.VEObject);
|
|
_LastProcedure = _LastProcedureInfo.Get();
|
|
OpenItem((ItemInfo)_LastProcedureInfo);
|
|
if (_LastProcedureInfo.ItemAnnotationCount > 0)
|
|
{
|
|
if (!cbCmntDontPopup.Checked)
|
|
epComments.Expanded = true;
|
|
rtxbComment.Text = _LastProcedureInfo.ItemAnnotations[0].SearchText;
|
|
}
|
|
break;
|
|
case "SectionInfo":
|
|
_LastSectionInfo = (SectionInfo)(_LastTreeNode.VEObject);
|
|
_LastSection = _LastSectionInfo.Get();
|
|
OpenItem((ItemInfo)_LastSectionInfo);
|
|
if (_LastSectionInfo.ItemAnnotationCount > 0)
|
|
{
|
|
if (!cbCmntDontPopup.Checked)
|
|
epComments.Expanded = true;
|
|
rtxbComment.Text = _LastSectionInfo.ItemAnnotations[0].SearchText;
|
|
}
|
|
break;
|
|
case "StepInfo":
|
|
_LastStepInfo = (StepInfo)(_LastTreeNode.VEObject);
|
|
_LastStep = _LastStepInfo.Get();
|
|
OpenItem((ItemInfo)_LastStepInfo);
|
|
if (_LastStepInfo.ItemAnnotationCount > 0)
|
|
{
|
|
if (!cbCmntDontPopup.Checked)
|
|
epComments.Expanded = true;
|
|
rtxbComment.Text = _LastStepInfo.ItemAnnotations[0].SearchText;
|
|
itemAnnotationsBindingSource.DataSource = _LastStepInfo.ItemAnnotations;
|
|
epComments.TitleStyle.BackColor1.Color = Color.Yellow;
|
|
}
|
|
#region Sample Display Table Code
|
|
// display an exiting table in that rtf grid thing
|
|
//if ((_LastStepInfo.MyContent.Type == 20007) || (_LastStepInfo.MyContent.Type == 20009))
|
|
//{
|
|
// //MessageBox.Show("Source Grid");
|
|
// //frmTable newtable1 = new frmTable(_LastStepInfo.MyContent.Text);
|
|
// //newtable1.ShowDialog();
|
|
// //MessageBox.Show("IGrid");
|
|
// //frmIGrid newtable2 = new frmIGrid(_LastStepInfo.MyContent.Text);
|
|
// //newtable2.ShowDialog();
|
|
// //MessageBox.Show("GridView"); //standard Visual Studio Control
|
|
// //frmGridView newtable3 = new frmGridView(_LastStepInfo.MyContent.Text);
|
|
// //newtable3.ShowDialog();
|
|
// MessageBox.Show("FlexCell");
|
|
// frmFlexCell newtable4 = new frmFlexCell(_LastStepInfo.MyContent.Text);
|
|
// newtable4.ShowDialog();
|
|
//}
|
|
#endregion
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
setupRibbonTabs(node);
|
|
}
|
|
}
|
|
|
|
bool tv_NodeDelete(object sender, Volian.Controls.Library.vlnTreeEventArgs args)
|
|
{
|
|
SetupNodes((VETreeNode)args.Node);
|
|
if (_LastTreeNode.Nodes.Count > 0)
|
|
{
|
|
MessageBox.Show("Folder not empty", "Folder must be empty");
|
|
return false;
|
|
}
|
|
else
|
|
{
|
|
if (_LastFolderInfo != null)
|
|
{
|
|
DialogResult result = MessageBox.Show("Are you sure you want to delete " + _LastFolderInfo.Name, "Verify Folder Delete",
|
|
MessageBoxButtons.YesNo, MessageBoxIcon.Question);
|
|
if (result == DialogResult.Yes)
|
|
{
|
|
Folder.Delete(_LastFolderInfo.FolderID);
|
|
return true;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
MessageBox.Show("Not a folder", "Only Folder can be deleted");
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
bool IsFolder(VETreeNode veTreeNode)
|
|
{
|
|
return (veTreeNode.VEObject.GetType().Name == "FolderInfo");
|
|
}
|
|
|
|
void tv_NodeDragDrop(object sender, Volian.Controls.Library.vlnTreeEventArgs args)
|
|
{
|
|
VETreeNode drag = (VETreeNode)args.Node;
|
|
VETreeNode drop = (VETreeNode)args.Destination;
|
|
if (IsFolder(drag) && IsFolder(drop))
|
|
{
|
|
FolderInfo fdragi = (FolderInfo)(drag.VEObject);
|
|
Folder fdrag = fdragi.Get();
|
|
FolderInfo fdropi = (FolderInfo)(drop.VEObject);
|
|
fdrag.MyParent = fdropi.Get();
|
|
fdrag.Save();
|
|
}
|
|
}
|
|
|
|
TreeNode tv_NodeNew(object sender, Volian.Controls.Library.vlnTreeEventArgs args)
|
|
{
|
|
SaveIfChanged();
|
|
FolderInfo fldi = (FolderInfo)((VETreeNode)(args.Node)).VEObject;
|
|
_LastFolder = Folder.MakeFolder(fldi.Get(), fldi.Get().MyConnection, "New Folder", string.Empty, "Short Name", null, string.Empty, DateTime.Now, "Test");
|
|
BrokenRulesCollection brs = _LastFolder.BrokenRulesCollection;// .BrokenRules();
|
|
if (brs != null)
|
|
{
|
|
foreach (BrokenRule br in brs)
|
|
{
|
|
Console.WriteLine("broken rule {0}", br.Description);
|
|
}
|
|
}
|
|
_LastFolderInfo = FolderInfo.Get(_LastFolder.FolderID);
|
|
VETreeNode tn = new VETreeNode((IVEDrillDownReadOnly)_LastFolderInfo);
|
|
SetupNodes(tn);
|
|
return tn;
|
|
}
|
|
|
|
private void SaveIfChanged()
|
|
{
|
|
SaveIfChanged<Folder>(_LastFolder);
|
|
SaveIfChanged<DocVersion>(_LastDocVersion);
|
|
SaveIfChanged2(_LastProcedure);
|
|
SaveIfChanged2(_LastSection);
|
|
SaveIfChanged2(_LastStep);
|
|
if (_LastTreeNode != null) _LastTreeNode.ResetNode();
|
|
}
|
|
|
|
private void SaveIfChanged<T>(BusinessBase<T> tmp)
|
|
where T : BusinessBase<T>
|
|
{
|
|
if (tmp == null) return;
|
|
if (tmp.IsDirty == false) return;
|
|
if (tmp.IsSavable)
|
|
tmp = tmp.Save();
|
|
else
|
|
{
|
|
foreach (Csla.Validation.BrokenRule br in tmp.BrokenRulesCollection)
|
|
{
|
|
Console.WriteLine("{0}", br.RuleName);
|
|
}
|
|
}
|
|
}
|
|
|
|
private void SaveIfChanged2(Item tmp)
|
|
{
|
|
SaveIfChanged<Item>(tmp);
|
|
}
|
|
|
|
private void tv_BeforeExpand(object sender, TreeViewCancelEventArgs e)
|
|
{
|
|
VETreeNode tn = ((VETreeNode)e.Node);
|
|
tn.LoadingChildernDone += new VETreeNodeEvent(tn_LoadingChildernDone);
|
|
tn.LoadingChildernMax += new VETreeNodeEvent(tn_LoadingChildernMax);
|
|
tn.LoadingChildernValue += new VETreeNodeEvent(tn_LoadingChildernValue);
|
|
tn.LoadingChildrenSQL += new VETreeNodeEvent(tn_LoadingChildrenSQL);
|
|
tn.LoadChildren();
|
|
|
|
}
|
|
private void tv_AfterSelect(object sender, TreeViewEventArgs e)
|
|
{
|
|
SaveIfChanged();
|
|
SetupNodes((VETreeNode)e.Node);
|
|
this.Text = "VE-PROMS - " + e.Node.Text; // build and display window caption
|
|
|
|
}
|
|
|
|
void tv_NodeProperties(object sender, Volian.Controls.Library.vlnTreeEventArgs args)
|
|
{
|
|
DisplayProperties();
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Property Page and Grid
|
|
|
|
/// <summary>
|
|
// this is used by tv_NodeProperties() and by ribbonFilePropertes_Click()
|
|
// the type of the args parameter for these two functions is different and
|
|
// type casting didn't work, so I put the guts in this function.
|
|
/// </summary>
|
|
private void DisplayProperties()
|
|
{
|
|
// check the user's preference on the style of poperty dialogs "PropPageStyle"
|
|
// 1 - Button dialog interface
|
|
// 2 - Tab dialog interface
|
|
// 3 - Property Grid interface
|
|
this.Cursor = Cursors.WaitCursor;
|
|
if ((int)Settings.Default["PropPageStyle"] == (int)PropPgStyle.Grid)
|
|
DoPropertyGrid(); // Will display a Property Grid interface
|
|
else
|
|
DoPropertyPages(); // Will display either a Button or a Tab dialog
|
|
this.Cursor = Cursors.Default;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Button from the Ribbon Bar
|
|
/// </summary>
|
|
/// <param name="sender">object</param>
|
|
/// <param name="e">EventArgs</param>
|
|
private void btnProperties_Click(object sender, EventArgs e)
|
|
{
|
|
DisplayProperties();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Get a System.Drawing.Color from an Argb or color name
|
|
/// </summary>
|
|
/// <param name="strColor">Color Name or "[(alpha,)red,green,blue]"</param>
|
|
/// <returns></returns>
|
|
private static Color cGetColor(string strColor)
|
|
{
|
|
// This was copied from frmFolderProperties.CS
|
|
Color rtnColor;
|
|
if (strColor == null || strColor.Equals(""))
|
|
rtnColor = Color.White;
|
|
else
|
|
{
|
|
if (strColor[0] == '[')
|
|
{
|
|
string[] parts = strColor.Substring(1, strColor.Length - 2).Split(",".ToCharArray());
|
|
int parts_cnt = 0;
|
|
foreach (string s in parts)
|
|
{
|
|
parts[parts_cnt] = parts[parts_cnt].TrimStart(' '); // remove preceeding blanks
|
|
parts_cnt++;
|
|
}
|
|
if (parts_cnt == 3)
|
|
rtnColor = Color.FromArgb(Int32.Parse(parts[0]), Int32.Parse(parts[1]), Int32.Parse(parts[2]));
|
|
else
|
|
rtnColor = Color.FromArgb(Int32.Parse(parts[0].Substring(2)), Int32.Parse(parts[1].Substring(2)), Int32.Parse(parts[2].Substring(2)), Int32.Parse(parts[3].Substring(2)));
|
|
}
|
|
else rtnColor = Color.FromName(strColor);
|
|
}
|
|
return rtnColor;
|
|
}
|
|
|
|
private void SetupEditorColors(DisplayPanel vlnCSLAPanel1, TabPage pg)
|
|
{
|
|
// setup color
|
|
if (_LastFolderInfo == null)
|
|
{
|
|
// user didn't select a FolderInfo type of node.
|
|
// walk up the tree to find the first FolderInfo node type
|
|
VETreeNode tn = (VETreeNode)(tv.SelectedNode);
|
|
while (tn != null && tn.VEObject.GetType().Name != "FolderInfo")
|
|
tn = (VETreeNode)tn.Parent;
|
|
_LastFolderInfo = (FolderInfo)(tn.VEObject);
|
|
_LastFolder = _LastFolderInfo.Get();
|
|
}
|
|
|
|
if ((_LastFolderInfo.FolderConfig.Color_editbackground != null) && !(_LastFolderInfo.FolderConfig.Color_editbackground.Equals("")))
|
|
{
|
|
vlnCSLAPanel1.ActiveColor = cGetColor(_LastFolderInfo.FolderConfig.Color_editbackground);
|
|
}
|
|
if ((_LastFolderInfo.FolderConfig.Default_BkColor != null) && !(_LastFolderInfo.FolderConfig.Default_BkColor.Equals("")))
|
|
{
|
|
vlnCSLAPanel1.InactiveColor = _LastFolderInfo.FolderConfig.Default_BkColor;
|
|
vlnCSLAPanel1.TabColor = vlnCSLAPanel1.InactiveColor;
|
|
vlnCSLAPanel1.PanelColor = vlnCSLAPanel1.InactiveColor;
|
|
pg.BackColor = vlnCSLAPanel1.InactiveColor;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Display a Property Page for the current tree node
|
|
/// </summary>
|
|
private void DoPropertyPages()
|
|
{
|
|
// Display a property page. (the ppStyle selects either a tabbed or button interface)
|
|
VETreeNode tn = (VETreeNode)(tv.SelectedNode);
|
|
switch (tn.VEObject.GetType().Name)
|
|
{
|
|
case "FolderInfo":
|
|
frmFolderProperties frmfld = new frmFolderProperties(_LastFolder.FolderConfig);
|
|
if (frmfld.ShowDialog() == DialogResult.OK)
|
|
_LastFolder.Save();
|
|
break;
|
|
case "DocVersionInfo":
|
|
frmVersionsProperties frmver = new frmVersionsProperties(_LastDocVersion.DocVersionConfig);
|
|
if (frmver.ShowDialog() == DialogResult.OK)
|
|
_LastDocVersion.Save();
|
|
break;
|
|
case "ProcedureInfo":
|
|
frmProcedureProperties frmproc = new frmProcedureProperties(_LastProcedure.ProcedureConfig);
|
|
if (frmproc.ShowDialog() == DialogResult.OK)
|
|
_LastProcedure.Save();
|
|
break;
|
|
case "SectionInfo":
|
|
frmSectionProperties frmsec = new frmSectionProperties(_LastSection.SectionConfig);
|
|
if (frmsec.ShowDialog() == DialogResult.OK)
|
|
_LastSection.Save();
|
|
break;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Display a property grid for the current tree node
|
|
/// </summary>
|
|
private void DoPropertyGrid()
|
|
{
|
|
// Display a property grid
|
|
VETreeNode tn = (VETreeNode)(tv.SelectedNode);
|
|
frmPropGrid propGrid = null;
|
|
string title = "";
|
|
switch (tn.VEObject.GetType().Name)
|
|
{
|
|
case "FolderInfo":
|
|
title = string.Format("{0} Properties", _LastFolder.FolderConfig.Name);
|
|
propGrid = new frmPropGrid(_LastFolder.FolderConfig, title);
|
|
if ( propGrid.ShowDialog() == DialogResult.OK)
|
|
_LastFolder.Save();
|
|
break;
|
|
case "DocVersionInfo":
|
|
title = string.Format("{0} Properties", _LastDocVersion.DocVersionConfig.Name);
|
|
propGrid = new frmPropGrid(_LastDocVersion.DocVersionConfig, title);
|
|
if ( propGrid.ShowDialog() == DialogResult.OK)
|
|
_LastDocVersion.Save();
|
|
break;
|
|
case "ProcedureInfo":
|
|
title = string.Format("{0} {1} Properties", _LastProcedure.ProcedureConfig.Number, _LastProcedure.ProcedureConfig.Title);
|
|
propGrid = new frmPropGrid(_LastProcedure.ProcedureConfig, title);
|
|
if ( propGrid.ShowDialog() == DialogResult.OK)
|
|
_LastProcedure.Save();
|
|
break;
|
|
case "SectionInfo":
|
|
if (_LastSection.SectionConfig.Number.Length > 0)
|
|
title = string.Format("{0} {1} Properties", _LastSection.SectionConfig.Number, _LastSection.SectionConfig.Title);
|
|
else
|
|
title = string.Format("{0} Properties", _LastSection.SectionConfig.Title);
|
|
propGrid = new frmPropGrid(_LastSection.SectionConfig, title);
|
|
if ( propGrid.ShowDialog() == DialogResult.OK)
|
|
_LastSection.Save();
|
|
break;
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Table Insert Sample Code
|
|
private void btnInsTable_Click(object sender, EventArgs e)
|
|
{
|
|
Point loc = btnInsTable.DisplayRectangle.Location;
|
|
loc.X += 300;
|
|
int top = this.Top + (btnInsTable.Size.Height * 2);
|
|
TablePickerDlg(sender, e, loc, top);
|
|
}
|
|
|
|
private void TablePickerDlg(object sender, EventArgs e, Point loc, int top)
|
|
{
|
|
Accentra.Controls.TablePicker tp = new Accentra.Controls.TablePicker();
|
|
tp.Location = loc;
|
|
tp.Top += top;
|
|
tp.Show();
|
|
while (tp.Visible)
|
|
{
|
|
Application.DoEvents();
|
|
System.Threading.Thread.Sleep(0);
|
|
}
|
|
// This was used to display a dialog containing a table grid
|
|
// using a product called Source Grid - was for demo purposes only
|
|
//
|
|
//if (!tp.Cancel)
|
|
//{
|
|
// frmTable newtable = new frmTable(tp.SelectedRows, tp.SelectedColumns);
|
|
// newtable.Show();
|
|
//}
|
|
}
|
|
#endregion
|
|
|
|
#region Edit/View Modes
|
|
/// <summary>
|
|
/// Edit Mode button on the bottom tool bar
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void btnEditMode_Click(object sender, EventArgs e)
|
|
{
|
|
btnEditView.Text = btnEditMode.Text;
|
|
}
|
|
|
|
/// <summary>
|
|
/// View Mode button on the bottom tool bar
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void btnViewMode_Click(object sender, EventArgs e)
|
|
{
|
|
btnEditView.Text = btnViewMode.Text;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Insert button on the bottom tool bar
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void btnInsertMode_Click(object sender, EventArgs e)
|
|
{
|
|
btnInsOvr.Text = btnInsertMode.Text;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Overwrite button on the bottom tool bar
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void btnOverstrikeMode_Click(object sender, EventArgs e)
|
|
{
|
|
btnInsOvr.Text = btnOverstrikeMode.Text;
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Multi User
|
|
|
|
/// <summary>
|
|
/// Set Lock button on the bottom tool bar
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void btnSetLock_Click(object sender, EventArgs e)
|
|
{
|
|
btnLckUlck.Image = btnSetLock.Image;
|
|
btnLckUlck.Text = "Locked";
|
|
}
|
|
|
|
/// <summary>
|
|
/// Release Lock button on the bottom tool bar
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void btnReleaseLck_Click(object sender, EventArgs e)
|
|
{
|
|
btnLckUlck.Image = btnReleaseLck.Image;
|
|
btnLckUlck.Text = "Unlocked";
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Progress Bar
|
|
|
|
/// <summary>
|
|
/// Used for the status bar in the lower left corner of the main screen
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="args"></param>
|
|
void tn_LoadingChildrenSQL(object sender, VETreeNodeEventArgs args)
|
|
{
|
|
ProgBarText = "Loading SQL";
|
|
}
|
|
|
|
/// <summary>
|
|
/// Used for the status bar in the lower left corner of the main screen
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="args"></param>
|
|
void tn_LoadingChildernValue(object sender, VETreeNodeEventArgs args)
|
|
{
|
|
ProgBarValue = args.Value;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Used for the status bar in the lower left corner of the main screen
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="args"></param>
|
|
void tn_LoadingChildernMax(object sender, VETreeNodeEventArgs args)
|
|
{
|
|
ProgBarMax = args.Value;
|
|
ProgBarText = "Loading...";
|
|
}
|
|
|
|
/// <summary>
|
|
/// Used for the status bar in the lower left corner of the main screen
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="args"></param>
|
|
void tn_LoadingChildernDone(object sender, VETreeNodeEventArgs args)
|
|
{
|
|
ProgBarText = args.Info + " Seconds";
|
|
}
|
|
|
|
public int ProgBarMax
|
|
{
|
|
get { return bottomProgBar.Maximum; }
|
|
set { bottomProgBar.Maximum = value; }
|
|
}
|
|
|
|
public int ProgBarValue
|
|
{
|
|
get { return bottomProgBar.Value; }
|
|
set { bottomProgBar.Value = value; }
|
|
}
|
|
|
|
public string ProgBarText
|
|
{
|
|
get { return bottomProgBar.Text; }
|
|
set {
|
|
bottomProgBar.TextVisible = true;
|
|
bottomProgBar.Text = value;
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Views: Procedure Background Deviation
|
|
/// <summary>
|
|
/// Procedure Step View button on the bottom tool bar
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void btnViewPrcStp_Click(object sender, EventArgs e)
|
|
{
|
|
btnViewTypes.Text = btnViewPrcStp.Text;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Background Text View button on the bottom tool bar
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void btnViewBckgnd_Click(object sender, EventArgs e)
|
|
{
|
|
btnViewTypes.Text = btnViewBckgnd.Text;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Deviation Text View button on the bottom tool bar
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void btnViewDev_Click(object sender, EventArgs e)
|
|
{
|
|
btnViewTypes.Text = btnViewDev.Text;
|
|
}
|
|
#endregion
|
|
|
|
#region Bookmarks
|
|
|
|
/// <summary>
|
|
/// Mark Position button on bottom tool bar
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void btnMarkPrevPos_Click(object sender, EventArgs e)
|
|
{
|
|
btnSetBookMrk_Click(sender, e);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Previous button on bottom tool bar
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void btnPrevPos_Click(object sender, EventArgs e)
|
|
{
|
|
if (_PrevBookMark != null)
|
|
{
|
|
VETreeNode jumpToHere = _PrevBookMark; // save current previous
|
|
btnSetBookMrk_Click(sender, e); // save current as the new previous
|
|
tv.SelectedNode = jumpToHere; // jump to the saved previous
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Clear Bookmarks button on Information pannel
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void btnClrBookMrks_Click(object sender, EventArgs e)
|
|
{
|
|
lbxBookMarks.Items.Clear();
|
|
lbxBookMarks.Enabled = false;
|
|
btnPrevPos.Enabled = false;
|
|
btnClrBookMrks.Enabled = false;
|
|
btnRmvCurBookMrk.Enabled = false;
|
|
_PrevBookMark = null;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Remove Bookmark button on Information pannel
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void btnRmvCurBookMrk_Click(object sender, EventArgs e)
|
|
{
|
|
lbxBookMarks.Items.RemoveAt(lbxBookMarks.SelectedIndex);
|
|
if (lbxBookMarks.Items.Count == 0)
|
|
{
|
|
lbxBookMarks.Enabled = false;
|
|
btnPrevPos.Enabled = false;
|
|
btnClrBookMrks.Enabled = false;
|
|
btnRmvCurBookMrk.Enabled = false;
|
|
_PrevBookMark = null;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Adds the given tree node to the list of bookmarks
|
|
/// </summary>
|
|
/// <param name="bkmrk"></param>
|
|
private void AddToBookMarkList(VETreeNode bkmrk)
|
|
{
|
|
if (!(lbxBookMarks.Items.Contains(bkmrk)))
|
|
lbxBookMarks.Items.Add(bkmrk);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Set Bookmark button on the Information pannel
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void btnSetBookMrk_Click(object sender, EventArgs e)
|
|
{
|
|
VETreeNode tn = (VETreeNode)(tv.SelectedNode);
|
|
AddToBookMarkList(tn);
|
|
_PrevBookMark = tn;
|
|
lbxBookMarks.Enabled = true;
|
|
btnPrevPos.Enabled = true;
|
|
btnClrBookMrks.Enabled = true;
|
|
btnRmvCurBookMrk.Enabled = true;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Bookmarks List item double click event
|
|
/// Jump to slected bookmark
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void lbxBookMarks_DoubleClick(object sender, EventArgs e)
|
|
{
|
|
if (lbxBookMarks.SelectedItem != null)
|
|
tv.SelectedNode = (VETreeNode)lbxBookMarks.SelectedItem;
|
|
}
|
|
#endregion
|
|
|
|
#region DisplayPanel
|
|
|
|
/// <summary>
|
|
/// Jump to the location referenced by the transition
|
|
/// </summary>
|
|
/// <param name="item"></param>
|
|
private void OpenTransition(ItemInfo item)
|
|
{
|
|
OpenItem(item);
|
|
}
|
|
|
|
private void OpenItem(ItemInfo item)
|
|
{
|
|
DisplayPanel vlnCSLAPanel1 = AddProcedureTab(item.MyProcedure);
|
|
vlnCSLAPanel1.ItemSelect(item);
|
|
}
|
|
|
|
private void vlnCSLAPanel1_LinkClicked(object sender, Volian.Controls.Library.DisplayLinkEventArgs args)
|
|
{
|
|
switch (args.Type)
|
|
{
|
|
case ParsedLinkType.ReferencedObject:
|
|
MessageBox.Show(args.Roid, args.Type.ToString(), MessageBoxButtons.OK, MessageBoxIcon.Information);
|
|
break;
|
|
case ParsedLinkType.Transition:
|
|
case ParsedLinkType.TransitionRange:
|
|
OpenItem(args.MyTransition.MyItemToID);
|
|
break;
|
|
}
|
|
}
|
|
|
|
private DisplayPanel GetPanelFromPage(TabPage tp)
|
|
{
|
|
return (DisplayPanel)tp.Controls["vlnCSLAPanel1"];
|
|
}
|
|
|
|
private DisplayPanel AddProcedureTab(ItemInfo pi)
|
|
{
|
|
if (tc.TabPages.ContainsKey(pi.MyContent.Number))
|
|
{
|
|
tc.SelectTab(pi.MyContent.Number);
|
|
return GetPanelFromPage(tc.SelectedTab);
|
|
}
|
|
else
|
|
{
|
|
TabPage pg = new TabPage(pi.MyContent.Number);
|
|
pg.Name = pi.MyContent.Number;
|
|
tc.TabPages.Add(pg);
|
|
tc.SelectedTab = pg;
|
|
DisplayPanel vlnCSLAPanel1 = new Volian.Controls.Library.DisplayPanel(this.components);
|
|
pg.Controls.Add(vlnCSLAPanel1);
|
|
//
|
|
// vlnCSLAPanel1
|
|
//
|
|
vlnCSLAPanel1.ActiveColor = System.Drawing.Color.SkyBlue;
|
|
vlnCSLAPanel1.AutoScroll = true;
|
|
vlnCSLAPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
|
|
vlnCSLAPanel1.InactiveColor = System.Drawing.Color.Linen;
|
|
vlnCSLAPanel1.Name = "vlnCSLAPanel1";
|
|
vlnCSLAPanel1.PanelColor = System.Drawing.Color.LightGray;
|
|
vlnCSLAPanel1.ProcFont = new System.Drawing.Font("Arial", 12F, System.Drawing.FontStyle.Bold);
|
|
vlnCSLAPanel1.SectFont = new System.Drawing.Font("Arial", 10F, System.Drawing.FontStyle.Bold);
|
|
vlnCSLAPanel1.StepFont = new System.Drawing.Font("Arial", 10F);
|
|
vlnCSLAPanel1.TabColor = System.Drawing.Color.Beige;
|
|
SetupEditorColors(vlnCSLAPanel1,pg); // check for overridden color values
|
|
vlnCSLAPanel1.TabIndex = 9;
|
|
vlnCSLAPanel1.LinkClicked += new Volian.Controls.Library.DisplayPanelLinkEvent(this.vlnCSLAPanel1_LinkClicked);
|
|
vlnCSLAPanel1.MyItem = pi;
|
|
return vlnCSLAPanel1;
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
#region Font
|
|
|
|
/// <summary>
|
|
/// Bold button on the ribbon
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void btnBold_Click(object sender, EventArgs e)
|
|
{
|
|
btnBold.Checked = !btnBold.Checked;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Italics button on the ribbon
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void btnItalics_Click(object sender, EventArgs e)
|
|
{
|
|
btnItalics.Checked = !btnItalics.Checked;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Underline button on the ribbon
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void btnUline_Click(object sender, EventArgs e)
|
|
{
|
|
btnUline.Checked = !btnUline.Checked;
|
|
}
|
|
#endregion
|
|
|
|
#region Find/Replace and Search
|
|
|
|
/// <summary>
|
|
/// Find/Replace button on the ribbon
|
|
/// Display the Find/Replace dialog
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void btnFindRplDlg_Click_1(object sender, EventArgs e)
|
|
{
|
|
FindReplace frmFindRepl = new FindReplace();
|
|
frmFindRepl.Show();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Global Search button on the ribbon
|
|
/// Opens the Information Pannel and selects the Results tab
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void btnGlbSrch_Click(object sender, EventArgs e)
|
|
{
|
|
infoPanel.Expanded = true;
|
|
infoTabs.SelectedTab = infotabResults;
|
|
btnSrchRslt.Checked = true;
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Similar Steps
|
|
|
|
/// <summary>
|
|
/// Similar Steps button on the ribbon
|
|
/// Opens the Information Pannel and selects the Results tab
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void btnSimStps_Click(object sender, EventArgs e)
|
|
{
|
|
infoPanel.Expanded = true;
|
|
infoTabs.SelectedTab = infotabResults;
|
|
btnSimStpsRslt.Checked = true;
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Help/About
|
|
|
|
/// <summary>
|
|
/// About button on the ribbon
|
|
/// Display the About dialog
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void btnAbout_Click(object sender, EventArgs e)
|
|
{
|
|
AboutVEPROMS about = new AboutVEPROMS();
|
|
about.ShowDialog();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Volian Web button on the ribbon
|
|
/// display the Volian web site on a pop up form
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void btnVlnWeb_Click(object sender, EventArgs e)
|
|
{
|
|
VlnWeb veWWW = new VlnWeb();
|
|
veWWW.Show();
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Ribbon
|
|
|
|
/// <summary>
|
|
/// Hide and Unhide ribbon tabs based on the type of tree node selected
|
|
/// </summary>
|
|
/// <param name="node"></param>
|
|
private void setupRibbonTabs(VETreeNode node)
|
|
{
|
|
switch (node.VEObject.GetType().Name)
|
|
{
|
|
case "FolderInfo":
|
|
rtabEdit.Visible = false;
|
|
rtabTools.Visible = false;
|
|
rbnPrint.Visible = false;
|
|
ribbonControl1.SelectedRibbonTabItem = rtabHome;
|
|
break;
|
|
case "DocVersionInfo":
|
|
rtabEdit.Visible = false;
|
|
rtabTools.Visible = false;
|
|
rbnPrint.Visible = false;
|
|
ribbonControl1.SelectedRibbonTabItem = rtabHome;
|
|
break;
|
|
case "ProcedureInfo":
|
|
rtabEdit.Visible = true;
|
|
rtabTools.Visible = true;
|
|
rbnPrint.Visible = true;
|
|
ribbonControl1.SelectedRibbonTabItem = rtabEdit;
|
|
break;
|
|
case "SectionInfo":
|
|
rtabEdit.Visible = true;
|
|
rtabTools.Visible = true;
|
|
rbnPrint.Visible = true;
|
|
ribbonControl1.SelectedRibbonTabItem = rtabEdit;
|
|
break;
|
|
case "StepInfo":
|
|
rtabEdit.Visible = true;
|
|
rtabTools.Visible = true;
|
|
rbnPrint.Visible = true;
|
|
ribbonControl1.SelectedRibbonTabItem = rtabEdit;
|
|
break;
|
|
default:
|
|
rtabEdit.Visible = false;
|
|
rtabTools.Visible = false;
|
|
rbnPrint.Visible = false;
|
|
ribbonControl1.SelectedRibbonTabItem = rtabHome;
|
|
break;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Options button on the dialog that appears when the V icon is clicked (top left of application window)
|
|
/// note that the "V icon" is also called the Office 2007 Start Button
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void btnOptions_Click(object sender, EventArgs e)
|
|
{
|
|
frmSysOptions VeSysOpts = new frmSysOptions();
|
|
VeSysOpts.ShowDialog();
|
|
|
|
}
|
|
|
|
/// <summary>
|
|
/// Exit button on the dialog that appears when the V icon is clicked (top left of application window)
|
|
/// note that the "V icon" is also called the Office 2007 Start Button
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void btnExit_Click(object sender, EventArgs e)
|
|
{
|
|
this.Close();
|
|
}
|
|
#endregion
|
|
|
|
#region ROTab
|
|
private void tvROFST_BeforeExpand(object sender, TreeViewCancelEventArgs e)
|
|
{
|
|
LoadChildren(e.Node);
|
|
}
|
|
private void tvROFST_AfterSelect(object sender, TreeViewEventArgs e)
|
|
{
|
|
if (e.Node.Tag is ROFST.rochild)
|
|
{
|
|
ROFST.rochild chld = (ROFST.rochild)e.Node.Tag;
|
|
if (chld.type == 1 && chld.value != null) tbROValue.Text = chld.value;
|
|
else tbROValue.Text = null;
|
|
}
|
|
else
|
|
tbROValue.Text = null;
|
|
}
|
|
private void LoadChildren(TreeNode tn)
|
|
{
|
|
object tag = tn.Tag;
|
|
if (tn.FirstNode != null && tn.FirstNode.Text == "VLN_DUMMY_FOR_TREE") tn.FirstNode.Remove();
|
|
ROFST.rochild[] chld = null;
|
|
|
|
if (tn.Tag is ROFST.rodbi)
|
|
{
|
|
ROFST.rodbi db = (ROFST.rodbi)tn.Tag;
|
|
chld = db.children;
|
|
}
|
|
else if (tn.Tag is ROFST.rochild)
|
|
{
|
|
ROFST.rochild ch = (ROFST.rochild)tn.Tag;
|
|
chld = ch.children;
|
|
}
|
|
else
|
|
{
|
|
Console.WriteLine("error - no type");
|
|
return;
|
|
}
|
|
// if children, add dummy node
|
|
if (chld != null && chld.Length > 0)
|
|
{
|
|
for (int i = 0; i < chld.Length; i++)
|
|
{
|
|
TreeNode tmp = null;
|
|
// if this is a group, i.e. type 0, add a dummy node
|
|
if (chld[i].type == 0 && chld[i].children == null)
|
|
//skip it.
|
|
Console.WriteLine("ro junk");
|
|
else if (chld[i].type == 1 && chld[i].value == null)
|
|
{
|
|
tmp = new TreeNode(chld[i].title);
|
|
tmp.Tag = chld[i];
|
|
tn.Nodes.Add(tmp);
|
|
TreeNode sub = new TreeNode("VLN_DUMMY_FOR_TREE");
|
|
tmp.Nodes.Add(sub);
|
|
}
|
|
else
|
|
{
|
|
tmp = new TreeNode(chld[i].title);
|
|
tmp.Tag = chld[i];
|
|
tn.Nodes.Add(tmp);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
private void LoadTree(ROFST rofst)
|
|
{
|
|
for (int i = 0; i < rofst.myHdr.myDbs.Length; i++)
|
|
{
|
|
TreeNode tn = new TreeNode(rofst.myHdr.myDbs[i].dbiTitle);
|
|
tn.Tag = rofst.myHdr.myDbs[i];
|
|
tvROFST.Nodes.Add(tn);
|
|
AddDummyGroup(rofst.myHdr.myDbs[i], tn);
|
|
}
|
|
}
|
|
private void AddDummyGroup(ROFST.rodbi rodbi, TreeNode tn)
|
|
{
|
|
if (rodbi.children != null && rodbi.children.Length > 0)
|
|
{
|
|
TreeNode tmp = new TreeNode("VLN_DUMMY_FOR_TREE");
|
|
tn.Nodes.Add(tmp);
|
|
}
|
|
}
|
|
private void infotabRO_Click(object sender, EventArgs e)
|
|
{
|
|
ROFST rofst = new ROFST("g:\\vehlp\\ro\\ro.fst");
|
|
LoadTree(rofst);
|
|
}
|
|
#endregion
|
|
|
|
#region TransitionTab
|
|
private void infotabTransition_Click(object sender, EventArgs e)
|
|
{
|
|
// fill in combo box.
|
|
}
|
|
#endregion
|
|
}
|
|
} |