This commit is contained in:
2010-09-21 18:36:49 +00:00
parent 6634758e73
commit 22831cc08d
7 changed files with 144 additions and 132 deletions

View File

@@ -36,6 +36,7 @@ namespace Volian.Controls.Library
if (_CurTrans == value) return;
_TranFmtIndx = value.TranType;
_CurItemFrom = MyRTB.MyItemInfo;
btnTranSave.Enabled = btnTranCancel.Enabled = false;
}
_CurTrans = value;
_SavCurItemFrom = _CurItemFrom;
@@ -111,6 +112,7 @@ namespace Volian.Controls.Library
_InitializingTrans = true;
if (_RangeNode1 != null || _RangeNode2 != null) ClearRangeTransition();
InitControls();
btnTranCancel.Enabled = false;
_InitializingTrans = false;
}
private void InitControls()
@@ -395,30 +397,45 @@ namespace Volian.Controls.Library
}
private void tvTranFillIn(ItemInfo startitm)
{
bool nostep = false;
tvTran.Nodes.Clear();
groupPanelTranstionSteps.Style.BackColor = _OrigGroupPanelSteps;
if (startitm == null) return;
// if the transition to point is a section or procedure, just return
if (startitm.MyContent.Type < 20000) return;
if (startitm.MyContent.Type < 20000) nostep = true;
groupPanelTranstionSteps.Style.BackColor = Color.Cornsilk;
// For the tree view, use parent, unless already at HLS. If at HLS, use this level.
ItemInfo selitm = startitm;
if (_CurTrans == null)
if (!nostep)
{
if (!startitm.IsHigh)
if (_CurTrans == null)
{
startitm = startitm.MyParent;
selitm = startitm;
if (!startitm.IsHigh)
{
startitm = startitm.MyParent;
selitm = startitm;
}
}
}
else
selitm = null;
E_TransUI etm = (E_TransUI)_CurItemFrom.ActiveFormat.PlantFormat.FormatData.TransData.TransTypeList[listBoxTranFmt.SelectedIndex].TransUI;
// no step
VETreeNode nost = null;
if ((etm & E_TransUI.StepAllowNone) == E_TransUI.StepAllowNone)
{
VETreeNode tvn = new VETreeNode("No step");
tvTran.Nodes.Add(tvn);
nost = tvn;
}
startitm = startitm.FirstSibling;
while (startitm != null)
{
VETreeNode tvn = new VETreeNode(startitm);
tvn.Tag = startitm;
int active = this.tvTran.Nodes.Add(tvn);
if (startitm.ItemID == selitm.ItemID) tvTran.SelectedNode = tvTran.Nodes[active];
if (nost == null && startitm.ItemID == selitm.ItemID) tvTran.SelectedNode = tvTran.Nodes[active];
startitm = (startitm.NextItemCount > 0 ? startitm.NextItems[0] : null);
}
tvTran.BeforeExpand += new TreeViewCancelEventHandler(tvTran_BeforeExpand);
@@ -494,7 +511,7 @@ namespace Volian.Controls.Library
// Do section combo, in 16-bit system it was types 0, 3, 4, 5
if (cbTranSects.Items.Count > 0 &&
(((etm & E_TransUI.SectDefault) == E_TransUI.SectDefault) ||
( //((etm & E_TransUI.SectDefault) == E_TransUI.SectDefault) ||
((etm & E_TransUI.SectMenuAny) == E_TransUI.SectMenuAny) ||
((etm & E_TransUI.SectMenuStep) == E_TransUI.SectMenuStep)))
{
@@ -502,8 +519,10 @@ namespace Volian.Controls.Library
groupPanelTransitionSect.Style.BackColor = Color.Cornsilk;
}
else
{
cbTranSects.Enabled = false;
}
// check for range - if no range, then range button/label & step tree selections should be
// 'cleared/invisble'.
btnTranRangeClear.Visible = _DoingRange;
@@ -647,12 +666,32 @@ namespace Volian.Controls.Library
groupPanelTranFmt.Style.BackColor = (_CurTrans == null && _TranFmtIndx == 0) ? Color.Yellow : Color.Orange;
E_TransUI etm = (E_TransUI)_CurItemFrom.ActiveFormat.PlantFormat.FormatData.TransData.TransTypeList[_TranFmtIndx].TransUI;
_DoingRange = (etm & E_TransUI.StepLast) == E_TransUI.StepLast;
// get section selected and if it's a step section, fill in the treeview of steps
if (cbTranSects.Items.Count > 0)
{
ItemInfo secitm = (ItemInfo) cbTranSects.SelectedItem;
if (secitm == null || !secitm.IsStepSection)
{
tvTran.Nodes.Clear();
tvTran.Enabled = false;
}
else
{
_InitializingTrans = true; // just initializing now, don't set any ranges, etc.
tvTranFillIn(secitm.Steps[0]);
tvTran.Enabled = true;
_InitializingTrans = false;
}
}
SetControlsEnabling();
}
private void btnUp1_Click(object sender, EventArgs e)
{
// if StepAllowNone, then use the second node in the tree view.
int indx = 0;
if (tvTran.Nodes[0].Tag == null) indx = 1;
// if at HLS, don't do anything.
ItemInfo curitm = (ItemInfo)((VETreeNode)tvTran.Nodes[0]).VEObject;
ItemInfo curitm = (ItemInfo)((VETreeNode)tvTran.Nodes[indx]).VEObject;
if (curitm.IsHigh) return;
tvTranFillIn(curitm);
}
@@ -661,6 +700,7 @@ namespace Volian.Controls.Library
VETreeNode tn = ((VETreeNode)e.Node);
// true fixes empty expand, but allows for transitions 'way down' in RNO tree. HVJ & PAL wanted to
// allow this (12/2/09)
tn.ChildrenLoaded = false;
tn.LoadChildren(true);
}
private void cbTranSects_SelectedIndexChanged(object sender, EventArgs e)
@@ -673,6 +713,10 @@ namespace Volian.Controls.Library
{
tvTran.Nodes.Clear();
tvTran.Enabled = false;
// Set Save & Cancel enabling, depending on whether section can be an endpoint.
E_TransUI etm = (E_TransUI)_CurItemFrom.ActiveFormat.PlantFormat.FormatData.TransData.TransTypeList[_TranFmtIndx].TransUI;
bool noStepNeeded = (etm & E_TransUI.StepAllowNone) == E_TransUI.StepAllowNone;
SaveCancelEnabling(noStepNeeded, secitm);
}
else
{
@@ -707,18 +751,24 @@ namespace Volian.Controls.Library
private void tvTran_AfterSelect(object sender, TreeViewEventArgs e)
{
if (_InitializingTrans) return;
E_TransUI etm = (E_TransUI)_CurItemFrom.ActiveFormat.PlantFormat.FormatData.TransData.TransTypeList[listBoxTranFmt.SelectedIndex].TransUI;
if ((etm & E_TransUI.StepAllowNone) == E_TransUI.StepAllowNone && tvTran.SelectedNode.Tag==null)
{
btnTranSave.Enabled = true;
return;
}
// check if node is a true end-point, i.e. not a 'part' node. If part node, don't
// allow selection.
bool allowSave = false;
VETreeNode vt = tvTran.SelectedNode as VETreeNode;
ItemInfo selii = vt.VEObject as ItemInfo;
if (vt != null)
{
ItemInfo ii = vt.VEObject as ItemInfo;
if (ii != null) allowSave = true;
if (selii != null) allowSave = true;
}
if (!_DoingRange)
{
btnTranSave.Enabled = allowSave;
{
SaveCancelEnabling(allowSave, selii);
return;
}
if (!allowSave)
@@ -736,6 +786,7 @@ namespace Volian.Controls.Library
_RangeNode2 = null;
lblxTranRangeTip.Text = "Select Last Step \r\nfor Range";
lblxTranRangeTip.BackColor = Color.LightPink;
btnTranSave.Enabled = false;
}
else
{
@@ -745,11 +796,29 @@ namespace Volian.Controls.Library
tvTranRangeHilites(true, _RangeNode1, _RangeNode2);
lblxTranRangeTip.Text = "Select First Transition\r\nfor Range";
lblxTranRangeTip.BackColor = Color.Yellow;
btnTranSave.Enabled = true;
}
}
}
private void SaveCancelEnabling(bool allowSave, ItemInfo selii)
{
btnTranSave.Enabled = allowSave;
if (CurTrans != null)
{
if (CurTrans.ToID == selii.ItemID) btnTranCancel.Enabled = btnTranSave.Enabled = false;
else
{
btnTranCancel.Enabled = true;
btnTranSave.Enabled = allowSave;
}
}
else btnTranSave.Enabled = allowSave;
}
private void btnTranCancel_Click(object sender, EventArgs e)
{
btnTranSave.Enabled = false;
btnTranCancel.Enabled = false;
_CurItemFrom = _SavCurItemFrom;
_TranFmtIndx = _SavTranFmtIndx;
TransitionFillIn();
@@ -829,20 +898,22 @@ namespace Volian.Controls.Library
else if ((etm & E_TransUI.StepFirst) == E_TransUI.StepFirst)
{
VETreeNode vtn = (VETreeNode)tvTran.SelectedNode;
if (vtn != null)
if (vtn != null && vtn.Tag != null)
{
toItem = (ItemInfo)vtn.VEObject; // is this cast valid?
linktxt = string.Format("#Link:Transition:{0} <NewID> {1}", listBoxTranFmt.SelectedIndex, toItem.ItemID);
}
}
// toItem may have been set in the 'Range' selection code above.
if (toItem == null && (etm & E_TransUI.SectMenuAny) == E_TransUI.SectMenuAny)
{
if (tvTran.Enabled == false || toItem.IsAccPages)
if (tvTran.Enabled == false || (toItem!=null && toItem.IsAccPages))
toItem = (ItemInfo)cbTranSects.SelectedItem;
else
{
VETreeNode vtn = (VETreeNode)tvTran.SelectedNode;
toItem = (ItemInfo)vtn.VEObject;
if (vtn.Tag == null) toItem = (ItemInfo)cbTranSects.SelectedItem;
else toItem = (ItemInfo)vtn.VEObject;
}
if (toItem==null)
{