using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; using System.Data; using System.Text; using System.Windows.Forms; using System.IO; using System.Text.RegularExpressions; using VEPROMS.CSLA.Library; using Accentra.Controls; using Volian.Base.Library; namespace Volian.Controls.Library { public partial class StepTabRibbon : UserControl { private static bool _PastePlainTextSetting = false; public static bool PastePlainTextSetting { get { return _PastePlainTextSetting; } set { _PastePlainTextSetting = value; } } private static bool _PasteNoReturnsSetting = false; public static bool PasteNoReturnsSetting { get { return _PasteNoReturnsSetting; } set { _PasteNoReturnsSetting = value; } } private static readonly log4net.ILog _MyLog = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); #region Properties private bool EnableROEdit; private VlnFlexGrid MyFlexGrid { get { if (MyEditItem is GridItem) return (MyEditItem as GridItem).MyFlexGrid; return null; } } private EditItem _MyEditItem; public EditItem MyEditItem { get { return _MyEditItem; } set { if (_MyEditItem == value) return; // Don't do this if the value is not different _MyEditItem = value; if (value != null) { (this.Parent as StepTabPanel).MyDisplayTabItem.SetupSecurity(MyItemInfo); MyStepRTB = value.MyStepRTB; if (value is GridItem) { ToggleTableDesignButtons(true); MyFlexGrid_SelChange(this, new EventArgs()); } } else MyStepRTB = null; //if (rtabChgId.Visible) // txtBxChgId.Text = (this.Parent as StepTabPanel).MyDisplayTabControl.ChgId; } } public void SetChangeId(string chgid, ItemInfo ii) { txtBxChgId.Text = chgid; rtabChgId.Visible = (ii != null) ? ii.ActiveFormat.PlantFormat.FormatData.ProcData.ChangeBarData.ChangeIds : false; } // added jcb 20121221 to support set ro from word doc private ROFSTLookup MyLookup; private DocVersionInfo _MyDVI; public DocVersionInfo MyDVI { get { if (_MyDVI != null) return _MyDVI; if (_MyEditItem != null) { ItemInfo procInfo = _MyEditItem.MyItemInfo.MyProcedure as ItemInfo; if (procInfo == null) return null; _MyDVI = procInfo.ActiveParent as DocVersionInfo; // added jcb 20121221 to support set ro from word doc if (_MyDVI.DocVersionAssociations != null && _MyDVI.DocVersionAssociations.Count > 0) MyLookup = _MyDVI.DocVersionAssociations[0].MyROFst.GetROFSTLookup(_MyDVI); else MyLookup = null; return _MyDVI; } return null; } } private ItemInfo MyItemInfo { get { if(_MyStepRTB != null && _MyStepRTB.MyItemInfo != null) return _MyStepRTB.MyItemInfo; if(_MyEditItem != null && _MyEditItem.MyItemInfo != null) return _MyEditItem.MyItemInfo; return null; } } private DevComponents.DotNetBar.ButtonItem _DefaultContextMenu; public void ClearContextMenu() { _ContextMenuBar.SetContextMenuEx(_MyStepRTB, null); } #region Save ROs from Word Document jcb 20121221 private string MyLookupData; private Dictionary MyAvailableROs; public void SetContextMenu() { AddWROContext(btnCMRtfEdit); _ContextMenuBar.SetContextMenuEx(_MyStepRTB, btnCMRtfEdit); } #region set up save ro menu jcb 20121221 private void AddWROContext(DevComponents.DotNetBar.ButtonItem myButtonItem) { MyAvailableROs = new Dictionary(); DevComponents.DotNetBar.BaseItem btnSaveRO = null; if (!myButtonItem.SubItems.Contains("btnSaveRO")) { btnSaveRO = new DevComponents.DotNetBar.ButtonItem("btnSaveRO", "Save RO"); btnSaveRO.Visible = false; myButtonItem.SubItems.Add(btnSaveRO); } else btnSaveRO = myButtonItem.SubItems["btnSaveRO"]; if (Clipboard.ContainsData(System.Windows.Forms.DataFormats.Text)) { MyLookupData = Clipboard.GetData(System.Windows.Forms.DataFormats.Text).ToString(); if (MyLookupData.StartsWith(" 0 && MyStepRTB.SelectedText.ToLower() != MyAvailableROs[k].ToLower()) { btn = new DevComponents.DotNetBar.ButtonItem("_" + k, MyAvailableROs[k] + " with Annotation"); btn.Tag = MyAvailableROs[k]; btn.Click += new EventHandler(SaveROWithAnnotation_Click); btnSaveRO.SubItems.Add(btn); } } btnSaveRO.Visible = true; } else { btnSaveRO.SubItems.Clear(); btnSaveRO.Text = "No RO Found"; DevComponents.DotNetBar.BaseItem btn = new DevComponents.DotNetBar.ButtonItem("btnRONotFound", "Create Annotation"); btn.Tag = string.Format("Text '{0}' has no corresponding RO", MyStepRTB.SelectedText); btn.Click += new EventHandler(NoROFound_Click); btnSaveRO.SubItems.Add(btn); btnSaveRO.Visible = true; } } } } #endregion private bool IsValidRO(string data) { bool rv = false; MyAvailableROs = new Dictionary(); if (MyDVI != null) { #region force arp without hi or lo jcb 20121221 //if (data == "") //{ // data = data.Replace("-LO1", ""); // Console.WriteLine("force null roc"); //} #endregion string accPageID = GetAccPageID(data); ROFSTLookup.rochild? roc = MyLookup.GetRoChildByAccPagID(accPageID, MyDVI.DocVersionConfig.RODefaults_setpointprefix, MyDVI.DocVersionConfig.RODefaults_graphicsprefix); if (roc != null) { int index = GetROValueIndex(data); if (index > -1) { MyAvailableROs.Add(((ROFSTLookup.rochild)roc).children[index].roid, ((ROFSTLookup.rochild)roc).children[index].value.Replace(@"\u160?", " ")); if (accPageID.StartsWith("MEL") && index == 0) // If equipment and 1st return value, then add option to add 4th Return Value { MyAvailableROs.Add(((ROFSTLookup.rochild)roc).children[3].roid, ((ROFSTLookup.rochild)roc).children[3].value.Replace(@"\u160?", " ")); MyAvailableROs.Add(((ROFSTLookup.rochild)roc).children[4].roid, ((ROFSTLookup.rochild)roc).children[4].value.Replace(@"\u160?", " ")); } rv = true; } } else { //see if arp then try HI 1,2,3 and LO 1,2,3 if (accPageID.StartsWith("ARP")) { string tmpAccPageID = string.Empty; //try HI1,2,3 string suffix = "-HI"; for (int i = 1; i < 4; i++) { tmpAccPageID = accPageID + suffix + i.ToString(); roc = MyLookup.GetRoChildByAccPagID(tmpAccPageID, MyDVI.DocVersionConfig.RODefaults_setpointprefix, MyDVI.DocVersionConfig.RODefaults_graphicsprefix); if (roc != null) { int index = GetROValueIndex(data); if (index > -1) { MyAvailableROs.Add(((ROFSTLookup.rochild)roc).children[index].roid, ((ROFSTLookup.rochild)roc).children[index].value.Replace(@"\u160?", " ")); rv = true; } } } //try LO1,2,3 suffix = "-LO"; for (int i = 1; i < 4; i++) { tmpAccPageID = accPageID + suffix + i.ToString(); roc = MyLookup.GetRoChildByAccPagID(tmpAccPageID, MyDVI.DocVersionConfig.RODefaults_setpointprefix, MyDVI.DocVersionConfig.RODefaults_graphicsprefix); if (roc != null) { int index = GetROValueIndex(data); if (index > -1) { MyAvailableROs.Add(((ROFSTLookup.rochild)roc).children[index].roid, ((ROFSTLookup.rochild)roc).children[index].value.Replace(@"\u160?", " ")); rv = true; } } } } } } return rv; } private string GetAccPageID(string txt) { // // // txt = txt.Replace(" 0) rv = 0; else if (data.IndexOf(@"\s") > 0) rv = 1; else if (data.IndexOf(@"\t") > 0) rv = 2; else if (data.IndexOf(@"\d") > 0) rv = 3; else rv = -1; } if (data.StartsWith(" 0) rv = 0; else if (data.IndexOf(@"\d") > 0) rv = 1; else if (data.IndexOf(@"\r") > 0) rv = 2; else rv = -1; } if (data.StartsWith(" 0) rv = 0; else if (data.IndexOf(@"\d") > 0) rv = 1; else if (data.IndexOf(@"\n") > 0) rv = 2; else rv = -1; } return rv; } private void SaveRO_Click(object sender, EventArgs e) { DevComponents.DotNetBar.BaseItem btn = sender as DevComponents.DotNetBar.BaseItem; string myroid = btn.Name; string myvalue = btn.Tag.ToString(); // the roid may be 12 or 16 chars long, with the last 4 set if there is unit specific // menuing. Pad to 12 to store in the rousage table. string padroid = (myroid.Length <= 12) ? myroid + "0000" : myroid; string linktxt = string.Format(@"#Link:ReferencedObject: {0} {1}", padroid, MyLookup.MyDocVersionInfo.DocVersionAssociations[0].MyROFst.MyRODb.RODbID); // Resolve symbols and scientific notation in the RO return value string valtxt = MyLookup.GetTranslatedRoValue(padroid, MyStepRTB.MyItemInfo.ActiveFormat.PlantFormat.FormatData.SectData.ConvertCaretToDelta); //ConvertSymbolsAndStuff(selectedChld.value); MyStepRTB.OnRoInsert(this, new StepRTBRoEventArgs(valtxt, myvalue, linktxt, padroid, MyLookup.MyDocVersionInfo.DocVersionAssociations[0].MyROFst.MyRODb.RODbID)); } private void SaveROWithAnnotation_Click(object sender, EventArgs e) { DevComponents.DotNetBar.BaseItem btn = sender as DevComponents.DotNetBar.BaseItem; string myroid = btn.Name.Replace("_", ""); string myvalue = btn.Tag.ToString(); using (Item itm = MyStepRTB.MyItemInfo.Get()) { Annotation x = Annotation.MakeAnnotation(itm, AnnotationType.GetByName("RO Value Changed"), null, string.Format("RO Value '{0}' replaces text '{1}'", myvalue, MyStepRTB.SelectedText), null); } // the roid may be 12 or 16 chars long, with the last 4 set if there is unit specific // menuing. Pad to 12 to store in the rousage table. string padroid = (myroid.Length <= 12) ? myroid + "0000" : myroid; string linktxt = string.Format(@"#Link:ReferencedObject: {0} {1}", padroid, MyLookup.MyDocVersionInfo.DocVersionAssociations[0].MyROFst.MyRODb.RODbID); // Resolve symbols and scientific notation in the RO return value string valtxt = MyLookup.GetTranslatedRoValue(padroid, MyStepRTB.MyItemInfo.ActiveFormat.PlantFormat.FormatData.SectData.ConvertCaretToDelta); //ConvertSymbolsAndStuff(selectedChld.value); MyStepRTB.OnRoInsert(this, new StepRTBRoEventArgs(valtxt, myvalue, linktxt, padroid, MyLookup.MyDocVersionInfo.DocVersionAssociations[0].MyROFst.MyRODb.RODbID)); } private void NoROFound_Click(object sender, EventArgs e) { DevComponents.DotNetBar.BaseItem btn = sender as DevComponents.DotNetBar.BaseItem; string myvalue = btn.Tag.ToString(); using (Item itm = MyStepRTB.MyItemInfo.Get()) { Annotation x = Annotation.MakeAnnotation(itm, AnnotationType.GetByName("RO Missing"), null, myvalue, null); } } #endregion public void SetGridCellContextMenu() { AddWROContext(btnCMRtfCellEdit); _ContextMenuBar.SetContextMenuEx(_MyStepRTB, btnCMRtfCellEdit); } public void SetGridContextMenu() { if (rtabTableGridTools.Visible) _ContextMenuBar.SetContextMenuEx(MyFlexGrid, btnCMGrid); } public void OpenContextMenu(Point loc) { btnCMRtfEdit.Popup(loc); } private int _MyLastFormatID = -1; private StepRTB _MyStepRTB; public StepRTB MyStepRTB { get { return _MyStepRTB; } set { _MyStepRTB = value; if (value != null) { //Console.WriteLine(string.Format("StepTabRibbon: In set of MyStepRTB, Selected Text = {0}", MyStepRTB.SelectedText)); switch (_MyStepRTB.FieldToEdit) { case E_FieldToEdit.PSI: _ContextMenuBar.SetContextMenuEx(_MyStepRTB, btnCMPSI); _DefaultContextMenu = btnCMPSI; break; case E_FieldToEdit.StepText: if (MyFlexGrid != null) { // This happends when the FlexGrid (table) is slected (not when you edit a table cell) _ContextMenuBar.SetContextMenuEx(_MyStepRTB, btnCMRtfCellEdit); _DefaultContextMenu = btnCMRtfCellEdit; } else { _ContextMenuBar.SetContextMenuEx(_MyStepRTB, btnCMRtfEdit); _DefaultContextMenu = btnCMRtfEdit; } break; case E_FieldToEdit.Text: case E_FieldToEdit.Number: _ContextMenuBar.SetContextMenuEx(_MyStepRTB, btnCMRtfEdit3); _DefaultContextMenu = btnCMRtfEdit3; break; default: break; } // The following two lines were replaced by the third line so that the Ribbon KeyTips will work properly. // ex. Positon on a substep, press , to list the substep types //_MyStepRTB.MouseUp += new MouseEventHandler(_MyStepRTB_MouseUp); //+= new MouseEventHandler(MyStepRTB_SelectionChanged); //_MyStepRTB.KeyUp += new KeyEventHandler(_MyStepRTB_KeyUp); //+= new KeyEventHandler(MyStepRTB_SelectionChanged); _MyStepRTB.SelectionChanged += new EventHandler(_MyStepRTB_SelectionChanged); //_MyStepRTB.ModeChange += new StepRTBModeChangeEvent(_MyStepRTB_ModeChange); if (_MyEditItem != null) _MyEditItem.Leave += new EventHandler(_MyEditItem_Leave); //_MyStepRTB.Leave += new EventHandler(_MyStepRTB_Leave); _MyStepRTB.LinkChanged += new StepRTBLinkEvent(_MyStepRTB_LinkChanged); _MyStepRTB.TextChanged += new EventHandler(_MyStepRTB_TextChanged); if (MyFlexGrid != null) { MyFlexGrid.CopyOptionChanged += new VlnFlexGridEvent(MyFlexGrid_CopyOptionChanged); MyFlexGrid.SelChange+=new EventHandler(MyFlexGrid_SelChange); } // Add symbols into the tab ribbon based on format selection. For now, only add symbols once // because all symbols are same!!! If we start defining different symbols in different formats // this will have to change, i.e. remove the second part of 'if' statement. if (MyItemInfo.ActiveFormat.FormatID != _MyLastFormatID && _MyLastFormatID == -1) { // Add symbols to the tabribbon & also to the context menu getting info from the format file... // Note that the ButtonItems must be used in order to place the buttons on a gallery (cannot // use buttonx or dotnet/windows/button). However, you cannot change the font on ButtonItems so // the ribbon MUST use the Arial Unicode MS Font for this to work!!!! FormatInfo fmt = MyItemInfo.ActiveFormat; SymbolList sl = fmt.PlantFormat.FormatData.SymbolList; if (sl == null || sl.Count <= 0) { MessageBox.Show("No symbols are available, check with administrator"); return; } BuildSymbolGallery(sl, galleryContainerSymbolsCM, galleryContainerSymbolsCM3, galleryContainerSymbolsGrid, galleryContainerSymbolsCM4); //BuildSymbolGallery(sl, galleryContainerSymbolsCM); //BuildSymbolGallery(sl, galleryContainerSymbolsCM3); //BuildSymbolGallery(sl, galleryContainerSymbolsGrid); } SetButtonAndMenuEnabling(true); SetStepButtonAndMenuEnabling(true); _MyLastFormatID = MyItemInfo.ActiveFormat.FormatID; } } } void _MyStepRTB_TextChanged(object sender, EventArgs e) { if (_MyStepRTB == null) return; // if we are in view mode or the edit window is empty, then don't allow inserting steps/substeps, // page breaks, copy step, nor creating a pdf bool allow = (_MyStepRTB.TextLength > 0 && (MyEditItem == null || MyEditItem.MyStepPanel.VwMode == E_ViewMode.Edit)); // turn ribbon items on/off base on whether there is text in the edit window rbnSiblings.Enabled = rbnBreaks.Enabled = rbnStepParts.Enabled = allow; // only turn on the Insert Before/After and the CopyStep buttons if on a step part btnInsAftH.Enabled = btnInsBefH.Enabled = btnInsAfter.Enabled = btnInsBefore.Enabled = btnCpyStp.Enabled = allow && !(MyItemInfo.IsProcedure || MyItemInfo.IsSection || MyItemInfo.IsFigure || MyItemInfo.IsTable || MyItemInfo.IsRNOPart); rbPdf.Enabled = allow; // toggle context menus used with the shortcut key btnCMInsHLS.Enabled = btnCMInsRNO.Enabled = btnCMInsSubStps.Enabled = btnCMInsCaution.Enabled = btnCMInsNote.Enabled = btnCMInsTable.Enabled = btnCMInsFigure.Enabled = allow; // if in Calvert Alarms Condition/Response, disable insert of Cautions and Notes btnInsCaut.Enabled = btnInsNote.Enabled = btnCMInsCaution.Enabled = btnCMInsNote.Enabled = allow && !MyItemInfo.IsInCalvertConditionResponse; } void MyFlexGrid_SelChange(object sender, EventArgs e) { if (MyFlexGrid == null) return; if (MyFlexGrid.Selection.c1 < 0 || MyFlexGrid.Selection.r1 < 0) return; if (MyFlexGrid.Selection.c1 >= MyFlexGrid.Cols.Count || MyFlexGrid.Selection.r1 >= MyFlexGrid.Rows.Count) return; if ((MyEditItem as GridItem).Initializing) return; //C1.Win.C1FlexGrid.CellRange cr = MyFlexGrid.GetEvenSelection(); //rbnBorderSelectionPanel.InitializeBorder(MyFlexGrid.MyBorders, cr.r1, cr.c1, cr.r2, cr.c2); rbnBorderSelectionPanel.InitializeBorder(MyFlexGrid, MyFlexGrid.Selection); } void _MyEditItem_Leave(object sender, EventArgs e) { // The following two lines were replaced by the third line so that the Ribbon KeyTips will work properly. // ex. Positon on a substep, press , to list the substep types //_MyStepRTB.KeyUp -=new KeyEventHandler(_MyStepRTB_KeyUp); //_MyStepRTB.MouseUp -= new MouseEventHandler(_MyStepRTB_MouseUp); if (_MyEditItem != null) { _MyEditItem.Leave -= new EventHandler(_MyEditItem_Leave); _MyEditItem.Enter += new EventHandler(_MyEditItem_Enter); } //_MyStepRTB.Leave -= new EventHandler(_MyStepRTB_Leave); if (_MyStepRTB != null) { _MyStepRTB.SelectionChanged -= new EventHandler(_MyStepRTB_SelectionChanged); _MyStepRTB.LinkChanged -= new StepRTBLinkEvent(_MyStepRTB_LinkChanged); } if (MyFlexGrid != null) { MyFlexGrid.CopyOptionChanged -= new VlnFlexGridEvent(MyFlexGrid_CopyOptionChanged); MyFlexGrid.SelChange -= new EventHandler(MyFlexGrid_SelChange); } } void _MyEditItem_Enter(object sender, EventArgs e) { // The following two lines were replaced by the third line so that the Ribbon KeyTips will work properly. // ex. Positon on a substep, press , to list the substep types //_MyStepRTB.KeyUp -=new KeyEventHandler(_MyStepRTB_KeyUp); //_MyStepRTB.MouseUp -= new MouseEventHandler(_MyStepRTB_MouseUp); if (_MyEditItem != null) { _MyEditItem.Leave += new EventHandler(_MyEditItem_Leave); _MyEditItem.Enter -= new EventHandler(_MyEditItem_Enter); } //_MyStepRTB.Leave -= new EventHandler(_MyStepRTB_Leave); if (_MyStepRTB != null) { _MyStepRTB.LinkChanged += new StepRTBLinkEvent(_MyStepRTB_LinkChanged); _MyStepRTB.SelectionChanged += new EventHandler(_MyStepRTB_SelectionChanged); } if (MyFlexGrid != null) { MyFlexGrid.CopyOptionChanged += new VlnFlexGridEvent(MyFlexGrid_CopyOptionChanged); MyFlexGrid.SelChange += new EventHandler(MyFlexGrid_SelChange); //Console.WriteLine("Turn on SelChange"); } } void MyFlexGrid_CopyOptionChanged(object sender, EventArgs args) { btnTblDgnPaste.Enabled = true; btnCmGridPaste.Enabled = true; switch (VlnFlexGrid.MyCopyInfo.MyCopyOption) { case GridCopyOption.Row: btnTblDgnPasteRow.Visible = true; btnCmGridPasteRow.Visible = true; btnTblDgnPasteColumn.Visible = false; btnCmGridPasteCol.Visible = false; break; case GridCopyOption.Column: btnTblDgnPasteRow.Visible = false; btnCmGridPasteRow.Visible = false; btnTblDgnPasteColumn.Visible = true; btnCmGridPasteCol.Visible = true; break; case GridCopyOption.Selection: btnTblDgnPasteRow.Visible = false; btnCmGridPasteRow.Visible = false; btnTblDgnPasteColumn.Visible = false; btnCmGridPasteCol.Visible = false; break; default: break; } } void _MyStepRTB_SelectionChanged(object sender, EventArgs e) { SetButtonAndMenuEnabling(false); } //void _MyStepRTB_MouseUp(object sender, MouseEventArgs e) //{ // //SetButtonAndMenuEnabling(false); //} //void _MyStepRTB_KeyUp(object sender, KeyEventArgs e) //{ // //SetButtonAndMenuEnabling(false); //} private void BuildSymbolGallery(SymbolList sl, DevComponents.DotNetBar.GalleryContainer gc1, DevComponents.DotNetBar.GalleryContainer gc2, DevComponents.DotNetBar.GalleryContainer gc3, DevComponents.DotNetBar.GalleryContainer gc4) { foreach (Symbol sym in sl) { DevComponents.DotNetBar.ButtonItem btn = new DevComponents.DotNetBar.ButtonItem(); btn.Text = string.Format("{0}", (char)sym.Unicode); // to name button use unicode rather than desc, desc may have spaces or odd chars btn.Name = "btn" + sym.Unicode.ToString(); btn.Tooltip = sym.Desc; btn.Tag = string.Format(@"{0}", sym.Unicode); btn.FontBold = true; btn.Click += new System.EventHandler(btnSym_Click); galleryContainerSymbols.SubItems.Add(btn); DevComponents.DotNetBar.ButtonItem btnCM1 = GetCMButton(sym); btnCM1.Click += new System.EventHandler(btnSym_Click); gc1.SubItems.Add(btnCM1); DevComponents.DotNetBar.ButtonItem btnCM2 = GetCMButton(sym); btnCM2.Click += new System.EventHandler(btnSym_Click); gc2.SubItems.Add(btnCM2); DevComponents.DotNetBar.ButtonItem btnCM3 = GetCMButton(sym); btnCM3.Click += new System.EventHandler(btnSym_Click); gc3.SubItems.Add(btnCM3); DevComponents.DotNetBar.ButtonItem btnCM4 = GetCMButton(sym); btnCM4.Click += new System.EventHandler(btnSym_Click); gc4.SubItems.Add(btnCM4); } } private static DevComponents.DotNetBar.ButtonItem GetCMButton(Symbol sym) { DevComponents.DotNetBar.ButtonItem btnCM3 = new DevComponents.DotNetBar.ButtonItem(); btnCM3.Text = string.Format("{0}", (char)sym.Unicode); // to name button use unicode rather than desc, desc may have spaces or odd chars btnCM3.Name = "btnCM" + sym.Unicode.ToString(); btnCM3.Tooltip = sym.Desc; btnCM3.Tag = string.Format(@"{0}", sym.Unicode); btnCM3.FontBold = true; return btnCM3; } //void _MyStepRTB_ModeChange(object sender, StepRTBModeChangeEventArgs args) //{ // SetButtonAndMenuEnabling(true); //} #endregion #region Constructor public StepTabRibbon() { InitializeComponent(); SetChangeIdRibbon(); EnableROEdit = true; _RibbonControl.AutoSize = true; _RibbonControl.SizeChanged += new EventHandler(_RibbonControl_SizeChanged); // When AutoExpand is set to true, [CTRL][F1] and double click will hide/expand the ribbon bar // causing its state to be out of sync with that of the QAT menu option to // expand/hide the ribbon. // We now set AutoExpand to false and issue an event to expand/collapse the ribbon // in a generic event method (ribbonTab_DoubleClick) // and assigned it to the DoubleClick event of each tab in the ribbon. // (see ribbonTab_DoubleClick() for more information) -jsj 07-APR-2011 // Note: the QAT menu is to the right of the V start button in the upper left _RibbonControl.AutoExpand = false; _RibbonControl.Items[0].RaiseClick(); // initially default to HOME tab rbnBorderlistBox.Resize+=new EventHandler(rbnBorderlistBox_Resize); rbnBorderlistBox.SetupFontAndSize(6); // 6 Point Font } void _RibbonControl_SizeChanged(object sender, EventArgs e) { this.Size = _RibbonControl.Size; } public bool Expanded { get { return _RibbonControl.Expanded; } set { _RibbonControl.Expanded = value; } } #endregion #region Events public event StepTabRibbonEvent PrintRequest; private void OnPrintRequest(StepTabRibbonEventArgs args) { if (PrintRequest != null) PrintRequest(this, args); } void _MyStepRTB_LinkChanged(object sender, StepPanelLinkEventArgs args) { // do all Transition and ReferencedObject menu items/buttons based on whether a 'link is selected' and the link type. SetupGoToButton(); if (btnCMGoTo.Enabled == true && _MyStepRTB.MyLinkText != null) // must have some link test, use it to set edit of transition or ro... { btnCMEditTran.Enabled = _MyStepRTB.MyLinkText.IndexOf("Transition") > -1; // selected link must be a transition btnCMEditRO.Enabled = _MyStepRTB.MyLinkText.IndexOf("ReferencedObject") > -1; // selected link must be ro } else { btnCMEditTran.Enabled = false; btnCMEditRO.Enabled = false; } } private void SetupGoToButton() { if (MyEditItem is GridItem && (MyEditItem as GridItem).MyFlexGrid.IsRoTable) btnCMGoTo.Enabled = btnGoTo.Enabled = true; else { if (_MyStepRTB == null) return; if (_MyStepRTB.IsSelectionLinked(_MyStepRTB.SelectionStart, _MyStepRTB.SelectionLength)) { // if selected text = ?, i.e. a missing/undefined destination, don't allow go to btnCMGoTo.Enabled = btnGoTo.Enabled = !_MyStepRTB.SelectedText.StartsWith("?"); } else btnCMGoTo.Enabled = btnGoTo.Enabled = false; } } void _MyStepRTB_Leave(object sender, EventArgs e) { // The following two lines were replaced by the third line so that the Ribbon KeyTips will work properly. // ex. Positon on a substep, press , to list the substep types //_MyStepRTB.KeyUp -=new KeyEventHandler(_MyStepRTB_KeyUp); //_MyStepRTB.MouseUp -= new MouseEventHandler(_MyStepRTB_MouseUp); _MyStepRTB.SelectionChanged -= new EventHandler(_MyStepRTB_SelectionChanged); _MyStepRTB.Leave -= new EventHandler(_MyStepRTB_Leave); _MyStepRTB.LinkChanged -= new StepRTBLinkEvent(_MyStepRTB_LinkChanged); } void btnInsStep_Click(object sender, EventArgs e) { string cautNoteOrder = _MyEditItem.MyItemInfo.ActiveFormat.PlantFormat.FormatData.SectData.StepSectionData.StepSectionLayoutData.CautionNoteOrder; DevComponents.DotNetBar.ButtonItem b = (DevComponents.DotNetBar.ButtonItem)sender; if (b.Tag == null) return; char[] sep = { ' ' }; string[] insdata = b.Tag.ToString().Split(sep); if (insdata.Length < 2) return; int fromtype = Convert.ToInt32(insdata[0]); int contenttype = Convert.ToInt32(insdata[1]) + 20000; string tabletype = (insdata.Length == 3)? insdata[2]:null; // if CautionNoteOrder format variable is set then use it to determine the placement of the // Caution, Note, Warning, or Message (calvert format) if (cautNoteOrder != null && (","+cautNoteOrder+",").Contains(","+(contenttype % 10000).ToString() + ",") && (_MyEditItem.MyItemInfo.Cautions != null || _MyEditItem.MyItemInfo.Notes != null)) { EditItem stepBefore = FindStepBefore(cautNoteOrder, contenttype); if (stepBefore != null) stepBefore.AddSiblingAfter((int?)contenttype, true); else { EditItem stepAfter = FindStepAfter(cautNoteOrder, contenttype); if (stepAfter != null) stepAfter.AddSiblingBefore((int?)contenttype, true); } } // if from type == 0, we've inserted a hls. // if inserting from section, insert first child // else do a after from current HLS - if not at HLS, go up parents until find it. else if (fromtype == 0 && !_MyEditItem.MyItemInfo.IsStepSection) { EditItem hlsEditItem = _MyEditItem; while (!hlsEditItem.MyItemInfo.IsHigh) hlsEditItem = hlsEditItem.ActiveParent; hlsEditItem.AddSiblingAfter((int?)contenttype, true); } else if (InsertingTable(contenttype)) { if (tabletype.Contains("RO")) { VlnFlexGrid grd = new VlnFlexGrid(); grd.Rows.Count = 1; grd.Cols.Count = 1; grd.IsRoTable = true; _MyEditItem.AddChild((E_FromType)fromtype, contenttype, grd); StepTabPanel tmp = Parent as StepTabPanel; tmp.MyDisplayTabControl.OnLinkModifyRO(this, new StepPanelLinkEventArgs(null)); } else { VlnFlexGrid grd = CreateNewTable(); if (grd != null) _MyEditItem.AddChild((E_FromType)fromtype, contenttype, grd); } } else { _MyEditItem.AddChild((E_FromType)fromtype, contenttype); } } private EditItem FindStepAfter(string types, int contenttype) { string[] order = types.Split(",".ToCharArray()); //"29,7,6,22" bool found = false; List lOrder = new List(); foreach (string type in order) { if (found) lOrder.Add(int.Parse(type)); if (int.Parse(type) == contenttype % 10000) found = true; } //_MyEditItem.MyItemInfo.RefreshItemParts(); _MyEditItem.MyItemInfo.ResetParts(); if (_MyEditItem.MyItemInfo.Cautions != null) foreach (ItemInfo ii in _MyEditItem.MyItemInfo.Cautions) { if (lOrder.Contains((int)ii.MyContent.Type % 10000)) return _MyEditItem.MyStepPanel.FindItem(ii); } if (_MyEditItem.MyItemInfo.Notes != null) foreach (ItemInfo ii in _MyEditItem.MyItemInfo.Notes) { if (lOrder.Contains((int)ii.MyContent.Type % 10000)) return _MyEditItem.MyStepPanel.FindItem(ii); } return null; } private EditItem FindStepBefore(string types, int contenttype) { string[] order = types.Split(",".ToCharArray()); //"29,7,6,22" List lOrder = new List(); foreach (string type in order) { lOrder.Add(int.Parse(type)); if (lOrder.Contains(contenttype % 10000)) break; } ItemInfo itemBefore = null; //_MyEditItem.MyItemInfo.RefreshItemParts(); _MyEditItem.MyItemInfo.ResetParts(); if (_MyEditItem.MyItemInfo.Cautions != null) foreach (ItemInfo ii in _MyEditItem.MyItemInfo.Cautions) { if (lOrder.Contains((int)ii.MyContent.Type % 10000)) itemBefore = ii; } if (_MyEditItem.MyItemInfo.Notes != null) foreach (ItemInfo ii in _MyEditItem.MyItemInfo.Notes) { if (lOrder.Contains((int)ii.MyContent.Type % 10000)) itemBefore = ii; } if (itemBefore != null) { Console.WriteLine("findStepBefore {0}", itemBefore.DisplayText); return _MyEditItem.MyStepPanel.FindItem(itemBefore); } return null; } // Table Grid private bool InsertingTable(int contenttype) { bool rtnval = false; switch (contenttype) { case 20008: // Centered table case 20010: // AER table case 20033: // AER table without boarder case 20034: // Centered table without boarder rtnval = true; break; } return rtnval; } private void btnInsBefore_Click(object sender, EventArgs e) { _MyEditItem.AddSiblingBefore(); } private void btnInsAfter_Click(object sender, EventArgs e) { _MyEditItem.AddSiblingAfter(); } /// /// Using style for step type, enable/disable formatting buttons /// private void SetButtonForStyle() { btnBold.Enabled = btnCMBold.Enabled = (!((_MyStepRTB.MyStyleFont.Style & E_Style.Bold) == E_Style.Bold || (_MyStepRTB.MyStyleFont.Style & E_Style.MmBold) == E_Style.MmBold)); btnUnderline.Enabled = btnCMUnderline.Enabled = (!((_MyStepRTB.MyStyleFont.Style & E_Style.Underline) == E_Style.Underline)); btnItalics.Enabled = btnCMItalics.Enabled = (!((_MyStepRTB.MyStyleFont.Style & E_Style.Italics) == E_Style.Italics)); } public void SetTableButtonsForMergeRangeSelection() { if (MyFlexGrid != null) { btnTblDgnMergeCells.Enabled = btnCmGridMergeCells.Enabled = !MyFlexGrid.IsInMergeRange(); } } private void SetButtonMenuEnabledDisabledOnSelection(bool setting) { btnCMBold.Enabled = btnBold.Enabled = setting; btnCMItalics.Enabled = btnItalics.Enabled = setting; btnCMUnderline.Enabled = btnUnderline.Enabled = setting; btnCMSubscript.Enabled = btnSubscript.Enabled = setting; btnCMSuperscript.Enabled = btnSuperscript.Enabled = setting; btnCMCut.Enabled = btnCut.Enabled = setting; btnCMUndo.Enabled = btnUndo.Enabled = setting; btnCMRedo.Enabled = btnRedo.Enabled = setting; //btnEdit3CMPaste.Enabled = btnPasteText.Enabled = btnCMPasteText.Enabled = btnCMPaste.Enabled = btnPaste.Enabled = setting; btnCMPaste.Enabled = btnCMPasteText.Enabled = btnPasteText.Enabled = btnPasteStepText.Enabled = btnPaste.Enabled = setting; btnCMCopy.Enabled = btnCopy.Enabled = setting; btnPasteAfter.Enabled = btnPasteBefore.Enabled = btnStepPaste.Enabled = btnPasteReplace.Enabled = setting; btnCMGrid.Enabled = setting; } private void SetButtonMenuEnabledDisabledOnStepType(bool setting) { btnPageBreak.Enabled = btnInsPgBrk.Enabled = setting; btnCMChgStep.Enabled = btnChgTyp.Enabled = setting; btnInsHLS.Enabled = btnInsCaut.Enabled = btnInsNote.Enabled = btnInsRNO.Enabled = btnInsFig.Enabled = btnInsTable.Enabled = btnInsSubstep.Enabled = btnInsBefore.Enabled = btnInsAfter.Enabled = setting; btnInsTrans.Enabled = btnCMTransition.Enabled = btnInsRO.Enabled = btnCMRO.Enabled = setting; btnInsAftH.Enabled = btnInsBefH.Enabled = setting; btnCMChgCase.Enabled = btnChgCase.Enabled = setting; btnCMHardSpace.Enabled = btnInsHrdSpc.Enabled = setting; btnCMSymbol.Enabled = btnSymbols.Enabled = setting; btnIndent.Enabled = setting; btnDelelete.Enabled = btnDelStep.Enabled = setting; btnSpell.Enabled = setting; rtabTableGridTools.Visible = setting; btnCMGrid.Enabled = setting; if (MyItemInfo.IsSection && MyItemInfo.ActiveFormat.PlantFormat.FormatData.SectData.StepSectionData.StepSectionLayoutData.AllowNoteCautionAdd) { btnInsNote.Enabled = true; btnInsCaut.Enabled = true; } // if in Calvert Alarms Condition/Response, disable insert of Cautions and Notes btnInsCaut.Enabled = btnInsNote.Enabled = btnCMInsCaution.Enabled = btnCMInsNote.Enabled = setting && !MyItemInfo.IsInCalvertConditionResponse; } private void SetButtonAndMenuEnabling(bool docontextmenus) { if (_MyStepRTB == null) return; if (_MyStepRTB.FieldToEdit != E_FieldToEdit.StepText) return; // No need to change menu that does not get used DocVersionInfo dvi = MyEditItem.MyItemInfo.MyProcedure.ActiveParent as DocVersionInfo; if (dvi == null) return; if (dvi.VersionType > 127 || MyEditItem.MyStepPanel.VwMode == E_ViewMode.View) { SetButtonMenuEnabledDisabledOnSelection(false); } else { SetButtonMenuEnabledDisabledOnSelection(true); if (_MyStepRTB.SelectionFont != null) { btnCMBold.Checked = btnBold.Checked = RTBAPI.IsBold(_MyStepRTB); btnCMItalics.Checked = btnItalics.Checked = RTBAPI.IsItalic(_MyStepRTB); btnCMUnderline.Checked = btnUnderline.Checked = RTBAPI.IsUnderline(_MyStepRTB); btnCMSubscript.Checked = btnSubscript.Checked = RTBAPI.IsSubScript(_MyStepRTB); btnCMSuperscript.Checked = btnSuperscript.Checked = RTBAPI.IsSuperScript(_MyStepRTB); } SetButtonForStyle(); btnCMCut.Enabled = btnCut.Enabled = _MyStepRTB.SelectionLength > 0; btnCMUndo.Enabled = btnUndo.Enabled = _MyStepRTB.CanUndo; btnCMRedo.Enabled = btnRedo.Enabled = _MyStepRTB.CanRedo; // for paste, see if there is clipboard data, & if so, of a type we can use. IDataObject iData = Clipboard.GetDataObject(); //btnEdit3CMPaste.Enabled = btnPasteText.Enabled = btnCMPasteText.Enabled = btnCMPaste.Enabled = btnPaste.Enabled = (iData.GetDataPresent(DataFormats.Text) || iData.GetDataPresent(DataFormats.Rtf)); //btnPasteText.Enabled = btnPasteStepText.Enabled = btnPaste.Enabled = (iData.GetDataPresent(DataFormats.Text) || iData.GetDataPresent(DataFormats.Rtf)); btnPaste.Enabled = (iData.GetDataPresent(DataFormats.Text) || iData.GetDataPresent(DataFormats.Rtf)); btnCMPasteText.Enabled = btnPasteText.Enabled = iData.GetDataPresent(DataFormats.Text); btnCMPaste.Enabled = btnPasteStepText.Enabled = iData.GetDataPresent(DataFormats.Rtf); } // all selected copy while in either Edit or View mode btnCMCopy.Enabled = btnCopy.Enabled = _MyStepRTB.SelectionLength > 0; // paste step only available if a step was copied. Also, check for valid types: SetPasteButtonEnabled(); // do all Transition and ReferencedObject menu items/buttons based on whether a 'link is selected' and the link type. //btnCMGoTo.Enabled = btnGoTo.Enabled = _MyStepRTB.IsSelectionLinked(_MyStepRTB.SelectionStart, _MyStepRTB.SelectionLength); //(_MyStepRTB.MyLinkText != null); SetupGoToButton(); if (btnCMGoTo.Enabled == true && _MyStepRTB.MyLinkText != null) // must have some link test, use it to set edit of transition or ro... { btnCMEditTran.Enabled = _MyStepRTB.MyLinkText.IndexOf("Transition") > -1; // selected link must be a transition btnCMEditRO.Enabled = _MyStepRTB.MyLinkText.IndexOf("ReferencedObject") > -1; // selected link must be ro } else { btnCMEditTran.Enabled = false; btnCMEditRO.Enabled = false; } // OLD: SetStepButtonAndMenuEnabling(docontextmenus); } private void SetPasteButtonEnabled() { #region new code StepTabPanel tmp = Parent as StepTabPanel; //turn all on btnPasteBefore.Enabled = btnCMPasteBefore.Enabled = true; btnPasteAfter.Enabled = btnCMPasteAfter.Enabled = true; btnPasteReplace.Enabled = btnCMPasteReplace.Enabled = true; //copy item is null, turn all off and return if (tmp.MyDisplayTabControl.MyCopyStep == null) { btnPasteBefore.Enabled = btnCMPasteBefore.Enabled = false; btnPasteAfter.Enabled = btnCMPasteAfter.Enabled = false; btnPasteReplace.Enabled = btnCMPasteReplace.Enabled = false; return; } //copy item is procedure, turn all off and return must be done from tree if(tmp.MyDisplayTabControl.MyCopyStep.IsProcedure) { btnPasteBefore.Enabled = btnCMPasteBefore.Enabled = false; btnPasteAfter.Enabled = btnCMPasteAfter.Enabled = false; btnPasteReplace.Enabled = btnCMPasteReplace.Enabled = false; return; } //copy item is section if (tmp.MyDisplayTabControl.MyCopyStep.IsSection && !MyItemInfo.IsSection) { btnPasteBefore.Enabled = btnCMPasteBefore.Enabled = false; btnPasteAfter.Enabled = btnCMPasteAfter.Enabled = false; btnPasteReplace.Enabled = btnCMPasteReplace.Enabled = false; return; } if (tmp.MyDisplayTabControl.MyCopyStep.IsSection && MyItemInfo.IsSection && tmp.MyDisplayTabControl.MyCopyStep.ItemID == MyItemInfo.ItemID) { btnPasteReplace.Enabled = btnCMPasteReplace.Enabled = false; return; } //copy item is high level step if (tmp.MyDisplayTabControl.MyCopyStep.IsHigh && !MyItemInfo.IsHigh) { btnPasteBefore.Enabled = btnCMPasteBefore.Enabled = false; btnPasteAfter.Enabled = btnCMPasteAfter.Enabled = false; btnPasteReplace.Enabled = btnCMPasteReplace.Enabled = false; return; } if (tmp.MyDisplayTabControl.MyCopyStep.IsHigh && MyItemInfo.IsHigh && tmp.MyDisplayTabControl.MyCopyStep.ItemID == MyItemInfo.ItemID) { btnPasteReplace.Enabled = btnCMPasteReplace.Enabled = false; return; } //copy item is step that is not high is not a table and is not a figure if (tmp.MyDisplayTabControl.MyCopyStep.IsSubStep && !MyItemInfo.IsSubStep) { btnPasteBefore.Enabled = btnCMPasteBefore.Enabled = false; btnPasteAfter.Enabled = btnCMPasteAfter.Enabled = false; btnPasteReplace.Enabled = btnCMPasteReplace.Enabled = false; return; } if (tmp.MyDisplayTabControl.MyCopyStep.IsStep && MyItemInfo.IsStep && tmp.MyDisplayTabControl.MyCopyStep.ItemID == MyItemInfo.ItemID) { btnPasteReplace.Enabled = btnCMPasteReplace.Enabled = false; return; } //otherwise everything is ok except for same item prevent replace if (tmp.MyDisplayTabControl.MyCopyStep.ItemID == MyItemInfo.ItemID) { btnPasteReplace.Enabled = btnCMPasteReplace.Enabled = false; return; } #endregion #region original code //// if there is no 'copied' step, or if a procedure is copied, just turn all buttons off, this can only //// be done from the tree. //StepTabPanel tmp = Parent as StepTabPanel; //if (tmp.MyDisplayTabControl.MyCopyStep == null || tmp.MyDisplayTabControl.MyCopyStep.IsProcedurePart) //{ // btnPasteReplace.Enabled = btnPasteBefore.Enabled = btnPasteAfter.Enabled = btnStepPaste.Enabled = false; // return; //} //// If a section is copied, it can be pasted as a section (before/after/replace). If can also //// be pasted as a subsection if the format allows it. //if (tmp.MyDisplayTabControl.MyCopyStep.IsSectionPart) //{ // btnPasteBefore.Enabled = btnPasteAfter.Enabled = btnPasteReplace.Enabled = MyItemInfo.IsSectionPart; // // when doing 'substep' part of paste, need to check if format allows subsection. //} //else if (tmp.MyDisplayTabControl.MyCopyStep.IsCautionPart || tmp.MyDisplayTabControl.MyCopyStep.IsNotePart) // // Part type of copied step must be same as Part type of destination, with exceptions of caution/note and step/rno // // can be pasted into each other. // // Part types are procedure - 1, section = 2, step = 6, caution = 3, note = 4, RNO (IsRNO), = 5 table/figure = 7. // btnPasteBefore.Enabled = btnPasteAfter.Enabled = btnPasteReplace.Enabled = (MyItemInfo.IsCautionPart || MyItemInfo.IsNotePart); //else if (tmp.MyDisplayTabControl.MyCopyStep.IsRNOPart || tmp.MyDisplayTabControl.MyCopyStep.IsStepPart) // btnPasteBefore.Enabled = btnPasteAfter.Enabled = btnPasteReplace.Enabled = (MyItemInfo.IsRNOPart || MyItemInfo.IsStepPart); //else if (tmp.MyDisplayTabControl.MyCopyStep.IsTable && MyItemInfo.IsTable) //{ // btnPasteBefore.Enabled = btnPasteAfter.Enabled = btnCMPasteBefore.Enabled = btnCMPasteAfter.Enabled = false; // btnPasteReplace.Enabled = btnCMPasteReplace.Enabled = true; //} //else if (tmp.MyDisplayTabControl.MyCopyStep.IsTable && !MyItemInfo.IsTable) //{ // btnPasteBefore.Enabled = btnPasteAfter.Enabled = btnCMPasteBefore.Enabled = btnCMPasteAfter.Enabled = false; // btnPasteReplace.Enabled = btnCMPasteReplace.Enabled = false; //} //// Can't replace step with same step //if (tmp.MyDisplayTabControl.MyCopyStep.ItemID == MyItemInfo.ItemID) btnPasteReplace.Enabled = false; #endregion } private void SetChangeIdRibbon() { if (MyItemInfo == null) { FolderInfo fi = FolderInfo.Get(1); FormatInfo frmI = FormatInfo.Get(fi.FormatID ?? 1); rtabChgId.Visible = frmI.PlantFormat.FormatData.ProcData.ChangeBarData.ChangeIds; } else rtabChgId.Visible = MyItemInfo.ActiveFormat.PlantFormat.FormatData.ProcData.ChangeBarData.ChangeIds; } private void SetStepButtonAndMenuEnabling(bool docontextmenus) { if (MyEditItem == null) return; DocVersionInfo dvi = MyEditItem.MyItemInfo.MyProcedure.ActiveParent as DocVersionInfo; if (dvi == null) return; if (dvi.VersionType > 127) btnCMEditMode1.Enabled = btnEditMode.Enabled = false; // in approved if (dvi.VersionType > 127 || MyEditItem.MyStepPanel.VwMode == E_ViewMode.View) { if (rtabTableGridTools.Checked) rtabHome.Select(); rtabTableGridTools.Visible = false; SetButtonMenuEnabledDisabledOnStepType(false); this.Refresh(); return; } else SetButtonMenuEnabledDisabledOnStepType(true); btnInsPgBrk.Checked = false; // see if manual page break - only available on HLS if (MyItemInfo.IsHigh) { StepConfig cfg = MyItemInfo.MyConfig as StepConfig; btnInsPgBrk.Checked = cfg == null ? false : cfg.Step_NewManualPagebreak; } btnInsPgBrk.Enabled = MyItemInfo.IsHigh; btnPageBreak.Enabled = MyItemInfo.IsHigh; // edit context menu btnEditMode.Checked = btnCMEditMode1.Checked = MyEditItem.MyStepPanel.VwMode == E_ViewMode.View; // if on procedure, 'Delete' buttons should be disabled. btnDelelete.Enabled = btnDelStep.Enabled = !MyItemInfo.IsProcedure; btnCpyStp.Enabled = !MyItemInfo.IsProcedure; // Only display the table edit tools if in a grid (table) and that grid (table) is not an RO Table. GridItem tmpGridItm = MyEditItem as GridItem; if (btnTblDgnAdjustSize.Checked) { btnTblDgnAdjustSize.Checked = false; ToggleTableDesignButtons(true); } rtabTableGridTools.Visible = tmpGridItm != null && !tmpGridItm.MyFlexGrid.IsRoTable; // If no longer on a table (grid) or the newly selectd table is an RO table // then select the Home tab (since the Table tab is not visable) if ((!(MyEditItem is GridItem) && rtabTableGridTools.Checked)) // || ((MyEditItem is GridItem) && !rtabTableGridTools.Visible)) { rtabHome.Select(); } // if on procedure or section, 'change type' & 'insert' buttons should be disabled. if (MyItemInfo.IsProcedure || MyItemInfo.IsSection) { btnInsCaut.Enabled = btnInsNote.Enabled = btnInsRNO.Enabled = btnInsFig.Enabled = btnInsTable.Enabled = btnInsSubstep.Enabled = btnInsBefore.Enabled = btnInsAfter.Enabled = false; // if on a section, allow note/caution. May want to add condition that this is a subsection? if (MyItemInfo.IsSection && MyItemInfo.IsStepSection && MyItemInfo.ActiveFormat.PlantFormat.FormatData.SectData.StepSectionData.StepSectionLayoutData.AllowNoteCautionAdd) { btnInsNote.Enabled = true; btnInsCaut.Enabled = true; btnInsCaut.SubItems.Clear(); btnInsNote.SubItems.Clear(); if (docontextmenus) { btnCMInsCaution.SubItems.Clear(); btnCMInsNote.SubItems.Clear(); } GalleryForSubTypes(MyItemInfo.ActiveFormat.PlantFormat.FormatData.StepDataList.Caution, MyItemInfo.FormatStepData, btnInsCaut, (int)E_FromType.Caution, btnCMInsCaution, docontextmenus); GalleryForSubTypes(MyItemInfo.ActiveFormat.PlantFormat.FormatData.StepDataList.Note, MyItemInfo.FormatStepData, btnInsNote, (int)E_FromType.Note, btnCMInsNote, docontextmenus); } // if on a procedure or section title, don't allow for insert of ROs or Transitions: // disable buttons. Info panels for ROs and Transitions are made invisible in frmVEPROMS.cs btnInsTrans.Enabled = btnCMTransition.Enabled = btnInsRO.Enabled = btnCMRO.Enabled = false; btnInsAftH.Enabled = btnInsBefH.Enabled = false; btnInsHLS.Enabled = (!MyItemInfo.IsStepSection) ? false : true; // allow hls from step section // if active item is a section and format has metasections, check that a hls can be added. if (MyItemInfo.IsStepSection) { if (MyItemInfo.ActiveFormat.PlantFormat.FormatData.SectData.UseMetaSections) // The 'editable' data config must be set to allow new steps to be created. { SectionConfig sc = MyItemInfo.MyConfig as SectionConfig; if (sc != null && MyItemInfo.Sections != null && MyItemInfo.Sections.Count > 0 && sc.SubSection_Edit != "Y") btnInsHLS.Enabled = false; } } if (btnInsHLS.Enabled) { btnInsHLS.SubItems.Clear(); GalleryForSubTypes(MyItemInfo.ActiveFormat.PlantFormat.FormatData.StepDataList.HLS, MyItemInfo.ActiveFormat.PlantFormat.FormatData.StepDataList.HLS, btnInsHLS, (int)E_FromType.Step, btnCMInsHLS, docontextmenus); } this.Refresh(); return; } btnChgTyp.Enabled = true; // set up insert buttons based on format E_AccStep? actable = 0; StepData sd = MyItemInfo.FormatStepData; actable = sd.StepEditData.AcTable; if (actable == null) actable = 0; btnInsHLS.Enabled = true; btnInsCaut.Enabled = (actable & E_AccStep.AddingCaution) > 0; btnInsNote.Enabled = (actable & E_AccStep.AddingNote) > 0; btnInsRNO.Enabled = (actable & E_AccStep.AddingRNO) > 0; btnInsFig.Enabled = (actable & E_AccStep.AddingTable) > 0; btnInsTable.Enabled = (actable & E_AccStep.AddingTable) > 0; btnInsSubstep.Enabled = (actable & E_AccStep.AddingSub) > 0; btnInsBefore.Enabled = btnInsBefH.Enabled = !MyItemInfo.IsRNOPart && (actable & E_AccStep.AddingPrev) > 0; btnInsAfter.Enabled = btnInsAftH.Enabled = !MyItemInfo.IsRNOPart && (actable & E_AccStep.AddingNext) > 0; // if this step has a table or figure, disable both of those buttons. if (MyItemInfo.Tables != null && MyItemInfo.Tables.Count > 0) btnInsTable.Enabled = btnInsFig.Enabled = btnCMInsFigure.Enabled = btnCMInsTable.Enabled = false; btnInsHLS.SubItems.Clear(); btnInsCaut.SubItems.Clear(); btnInsNote.SubItems.Clear(); btnInsRNO.SubItems.Clear(); btnInsFig.SubItems.Clear(); btnInsTable.SubItems.Clear(); btnInsSubstep.SubItems.Clear(); if (docontextmenus) { btnCMInsHLS.SubItems.Clear(); btnCMInsCaution.SubItems.Clear(); btnCMInsNote.SubItems.Clear(); btnCMInsFigure.SubItems.Clear(); btnCMInsTable.SubItems.Clear(); btnCMInsSubStps.SubItems.Clear(); btnCMInsRNO.SubItems.Clear(); } btnInsRNO.Enabled = btnCMInsRNO.Enabled = btnInsRNO.Enabled && (MyItemInfo.RNOs == null || MyItemInfo.RNOs.Count == 0); // don't insert an RNO if has an RNO // if (rno is enabled, set the tag: if (btnInsRNO.Enabled) btnInsRNO.Tag = string.Format("{0} {1}", (int)E_FromTypes.RNOs, MyEditItem.MyItemInfo.ActiveFormat.PlantFormat.FormatData.GetIndexFromType("RNOType")); // add subitems depending on whether parent type is enabled: if (btnInsHLS.Enabled) GalleryForSubTypes(MyItemInfo.ActiveFormat.PlantFormat.FormatData.StepDataList.HLS, sd, btnInsHLS, 0, btnCMInsHLS, docontextmenus); if (btnInsCaut.Enabled) GalleryForSubTypes(MyItemInfo.ActiveFormat.PlantFormat.FormatData.StepDataList.Caution, sd, btnInsCaut, (int)E_FromType.Caution, btnCMInsCaution, docontextmenus); if (btnInsNote.Enabled) GalleryForSubTypes(MyItemInfo.ActiveFormat.PlantFormat.FormatData.StepDataList.Note, sd, btnInsNote, (int)E_FromType.Note, btnCMInsNote, docontextmenus); if (btnInsFig.Enabled) GalleryForSubTypes(MyItemInfo.ActiveFormat.PlantFormat.FormatData.StepDataList.Fig, sd, btnInsFig, (int)E_FromType.Table, btnCMInsFigure, docontextmenus); if (btnInsTable.Enabled) GalleryForSubTypes(MyItemInfo.ActiveFormat.PlantFormat.FormatData.StepDataList.Table, sd, btnInsTable, (int)E_FromType.Table, btnCMInsTable, docontextmenus); if (btnInsSubstep.Enabled) GalleryForSubTypes(MyItemInfo.ActiveFormat.PlantFormat.FormatData.StepDataList.Substep, sd, btnInsSubstep, (int)E_FromType.Step, btnCMInsSubStps, docontextmenus); if (btnInsRNO.Enabled) GalleryForSubTypes(MyItemInfo.ActiveFormat.PlantFormat.FormatData.StepDataList.RNO, sd, btnInsRNO, 0, btnCMInsRNO, docontextmenus); btnInsTrans.Enabled = btnCMTransition.Enabled = btnInsRO.Enabled = btnCMRO.Enabled = true; // if in Calvert Alarms Condition/Response, disable insert of Cautions and Notes btnInsCaut.Enabled = btnInsNote.Enabled = btnCMInsCaution.Enabled = btnCMInsNote.Enabled = !MyItemInfo.IsInCalvertConditionResponse; _RibbonControl.Refresh(); // jsj- added this because Table Design ribbon tab grouping was not going away when not on a table step type } /// /// set up a gallery of step types whose parent are defined by input StepData. Can be below /// more than one level, for example. Substep, EquipmentList, EquipmentWBlank - both equipment /// lists would be put in gallery /// /// StepData: find subtypes related to this /// StepData: this should be selected button /// DevComponents.DotNetBar.ButtonItem: if items in the gallery, add gallery to this button /// DevComponents.DotNetBar.ButtonItem: if items in the gallery, add btns to context menu private void GalleryForSubTypes(StepData sdc, StepData selType, DevComponents.DotNetBar.ButtonItem btn, int fromtype, DevComponents.DotNetBar.ButtonItem cmbtn, bool docontextmenus) { int cursel = -1; // The first argument (boolean) in StepGetLevelTypes provides the option to get a complete list of step types // regardless of whether in the AER or RNO column (set to true). For all types, get both except for figures // and tables. bool getall = !(btn.Name == "btnInsFig" || (btn.Name == "btnInsTable")); List sdl = MyItemInfo.ActiveFormat.PlantFormat.FormatData.StepGetLevelTypes(getall, sdc, ref cursel, selType==null?"Section":selType.Type, MyItemInfo); if (sdl != null && sdl.Count > 0) { Char kt = 'A'; // start with letter A for KeyTips // if doing the insert substep button, check for substeps already there and if so must match type. if (btn.Name == "btnInsSubstep") { if (MyItemInfo.Steps != null && MyItemInfo.Steps.Count > 0) { ItemInfo ichld = MyItemInfo.Steps[0]; btn.Click -= new System.EventHandler(btnInsStep_Click); btn.Click += new System.EventHandler(btnInsStep_Click); btn.Tag = string.Format("{0} {1}", fromtype, ichld.MyContent.Type - 20000); return; } else { btn.Tag = null; btn.Click -= new System.EventHandler(btnInsStep_Click); } } foreach (StepDataRetval sdr in sdl) { bool addit = true; StepData sd = MyItemInfo.ActiveFormat.PlantFormat.FormatData.StepDataList[sdr.Index]; int hlsSubType = -1; // if on hls, use this to set default on substep menu to first child if (MyItemInfo.IsHigh && MyItemInfo.Steps != null && MyItemInfo.Steps.Count > 0) { hlsSubType = (int)MyItemInfo.Steps[0].MyContent.Type - 20000; } // unfortunately, there are some special cases to be handled. // if high level step, don't put the rno button on // if caution don't add note button (the StepGetLevelTypes method returns cautions/notes together if (btn.Name == "btnInsHLS" && sd.Type == "RNOType") addit = false; if (btn.Name == "btnInsCaut" && sd.Type.Length >= 4 && sd.Type.Substring(0, 4) == "Note") addit = false; if (btn.Name == "btnInsNote" && sd.Type.Length >= 7 && sd.Type.Substring(0, 7) == "Caution") addit = false; if (btn.Name == "btnInsSubstep" && MyItemInfo.Steps != null && MyItemInfo.Steps.Count > 0) addit = false; if (addit) { DevComponents.DotNetBar.ButtonItem bi = new DevComponents.DotNetBar.ButtonItem("btn" + sd.Type, sd.Type); bi.ButtonStyle = DevComponents.DotNetBar.eButtonStyle.TextOnlyAlways; bi.Text = sdr.Name; bi.Tag = string.Format("{0} {1}", fromtype, sdr.Index); // index of type to insert it when button is clicked bi.Checked = (selType == null || (sd.Type == selType.Type)); if (docontextmenus) { DevComponents.DotNetBar.ButtonItem cmbi = new DevComponents.DotNetBar.ButtonItem("cmbtn" + sd.Type, sd.Type); cmbi.ButtonStyle = DevComponents.DotNetBar.eButtonStyle.TextOnlyAlways; cmbi.Text = sdr.Name; cmbi.Tag = string.Format("{0} {1}", fromtype, sdr.Index); // index of type to insert it when button is clicked cmbi.Checked = (selType == null || (sd.Type == selType.Type)); cmbi.Click += new System.EventHandler(btnInsStep_Click); cmbtn.SubItems.Add(cmbi); } if (MyItemInfo.IsHigh && hlsSubType != -1 && sdr.Index == hlsSubType) bi.Checked = true; bi.Click += new System.EventHandler(btnInsStep_Click); // Assign only A-Z to the KeyTips in the list (i.e. assign only the first 24 in the list) // Note that KeyTips logic support only single characters at this level (can't have 'AA' for example) if (kt != '0') { bi.KeyTips = kt.ToString(); if (kt == 'Z') kt = '0'; else kt++; } btn.SubItems.Add(bi); } } // if this is a table, then need to add RO/Text table options if (btn.Name == "btnInsTable" && docontextmenus) { // If there is only one 'table' type from format under the ribbon's table item, // eliminate that button and move up the RO & Text Table buttons. if (btn.SubItems.Count == 1) { btn.Tag = btn.SubItems[0].Tag; btn.SubItems.Clear(); DoTableSubMenu(btn); } else { foreach (DevComponents.DotNetBar.ButtonItem tabbtn in btn.SubItems) DoTableSubMenu(tabbtn); } } // if only 1, be sure event exists on button to insert item & if more than 1 remove event because // we want the drop down to appear. if (btn.Name != "btnInsRNO") btn.Click -= new System.EventHandler(btnInsStep_Click); if (docontextmenus) cmbtn.Click -= new System.EventHandler(btnInsStep_Click); if (btn.SubItems.Count == 1) { btn.SubItems.Clear(); if (btn.Name != "btnInsRNO") { btn.Tag = string.Format("{0} {1}", fromtype, sdc.Index); btn.Click += new System.EventHandler(btnInsStep_Click); } if (docontextmenus) { cmbtn.SubItems.Clear(); DevComponents.DotNetBar.ButtonItem cmbi = new DevComponents.DotNetBar.ButtonItem("cmbtn" + sdc.Type, sdc.Type); cmbi.ButtonStyle = DevComponents.DotNetBar.eButtonStyle.TextOnlyAlways; cmbi.Text = btn.Text; if (btn.Name == "btnInsRNO") cmbi.Tag = btn.Tag; else cmbi.Tag = string.Format("{0} {1}", fromtype, sdc.Index); // index of type to insert it when button is clicked cmbi.Click += new System.EventHandler(btnInsStep_Click); cmbtn.SubItems.Add(cmbi); } } } rbnStepParts.Refresh(); } private void DoTableSubMenu(DevComponents.DotNetBar.ButtonItem tabbtn) { char[] sp = { ' ' }; string[] insdata = tabbtn.Tag.ToString().Split(sp); int ftype = Convert.ToInt32(insdata[0]); int sdtype = Convert.ToInt32(insdata[1]); DevComponents.DotNetBar.ButtonItem cmbt = new DevComponents.DotNetBar.ButtonItem("cmbtnt" + sdtype + "RO", "RO Table"); cmbt.ButtonStyle = DevComponents.DotNetBar.eButtonStyle.TextOnlyAlways; cmbt.Text = "RO Table"; cmbt.Tag = string.Format("{0} {1} {2}", ftype, sdtype, "RO"); //cmbt.Checked = (sd.Type == selType.Type); cmbt.Click += new System.EventHandler(btnInsStep_Click); tabbtn.SubItems.Add(cmbt); cmbt = new DevComponents.DotNetBar.ButtonItem("cmbtnt" + sdtype + "TX", "Text Table"); cmbt.ButtonStyle = DevComponents.DotNetBar.eButtonStyle.TextOnlyAlways; cmbt.Text = "Text Table"; cmbt.Tag = string.Format("{0} {1} {2}", ftype, sdtype, "TX"); // Text table //cmbt.Checked = (sd.Type == selType.Type); cmbt.Click += new System.EventHandler(btnInsStep_Click); tabbtn.SubItems.Add(cmbt); tabbtn.Tag = null; tabbtn.Click -= new System.EventHandler(btnInsStep_Click); } #endregion #region Insert Tab private void btnSym_Click(object sender, EventArgs e) { DevComponents.DotNetBar.ButtonItem b = (DevComponents.DotNetBar.ButtonItem)sender; StartGridEditing(SelectionOption.Start); // If in a FlexGrid, start the editor for a cell _MyStepRTB.InsertSymbol(Convert.ToInt32(b.Tag)); } private enum SelectionOption { Start, All, End } /// /// If in a FlexGrid, start the editor for a cell /// /// If false cursor will be placed at the begining private void StartGridEditing(SelectionOption selOpt) { // Bug fix: B2012-203, B2012-204 // Need to check if the selected table cell is in edit mode already. // if already in edit mode, we don't want to do the StartEditing code below, because it // will override the current cursor positioning and selection range. Control ctrl = FindActiveControl(); if (ctrl == null) return; // null if on property page for procedure & section number/title if (ctrl is VlnFlexGrid) { // Selected table cell is not in edit mode. Go into edit mode and position acording // to the pass in selOpt. if (MyFlexGrid != null && MyFlexGrid.Editor == null) { MyFlexGrid.StartEditing(); switch (selOpt) { case SelectionOption.Start: MyStepRTB.Select(0, 0); break; case SelectionOption.All: MyStepRTB.SelectAll(); break; case SelectionOption.End: break; MyStepRTB.Select(MyStepRTB.TextLength, 0); default: MyStepRTB.Select(0, 0); break; } } } } public void btnInsPgBrk_Click(object sender, EventArgs e) { rtabInsert.Select(); if (MyItemInfo.IsProcedure || MyItemInfo.IsSection) return; // toggle manual page break StepConfig cfg = MyItemInfo.MyConfig as StepConfig; cfg.Step_NewManualPagebreak = !cfg.Step_NewManualPagebreak; btnPageBreak.Checked = btnInsPgBrk.Checked = cfg.Step_NewManualPagebreak; } private void btnIndent_Click(object sender, EventArgs e) { StartGridEditing(SelectionOption.Start); _MyStepRTB.InsertIndent(MyEditItem.MyItemInfo.ActiveFormat.PlantFormat.FormatData.SectData.StepSectionData.IndentToken); } private void btnCMIndent_Click(object sender, EventArgs e) { _MyStepRTB.InsertIndent(MyEditItem.MyItemInfo.ActiveFormat.PlantFormat.FormatData.SectData.StepSectionData.IndentToken); } #endregion #region Home Tab private bool _PastePlainTextOvrRide = false; private bool _PasteStepTextOvrRide = false; private void btnPaste_Click(object sender, EventArgs e) { StartGridEditing(SelectionOption.End); IDataObject myDO = Clipboard.GetDataObject(); RichTextBox myRtb = _MyStepRTB; Control ctrl = FindActiveControl(); // null if on property page for procedure & section number/title if (ctrl != null && !_MyStepRTB.Focused) { if (ctrl is RichTextBox) { myRtb = ctrl as RichTextBox; } else if (ctrl is ComboBox) { ComboBox cmb = ctrl as ComboBox; if (myDO.GetDataPresent(DataFormats.UnicodeText)) cmb.SelectedText = myDO.GetData(DataFormats.UnicodeText).ToString(); else if (myDO.GetDataPresent(DataFormats.Text)) cmb.SelectedText = myDO.GetData(DataFormats.Text).ToString(); _PastePlainTextOvrRide = false; _PasteStepTextOvrRide = false; return; } else { SaveErrorInLogProblemWithType(ctrl); _PastePlainTextOvrRide = false; _PasteStepTextOvrRide = false; return; } } // check if rtf is coming from Word, i.e. if it has 'SCHEMAS.MICROSOFT.COM/OFFICE/WORD'. // If it is coming from Word, it will be pasted as text so as not to get any rtf commands // that PROMS does not support such as odd Fonts, other symbols, etc. This isn't a complete // solution, clipboard data may come from other 3rd-party tools and unsupported Rtf may get // pasted in. But the hope is that this will happen less often than getting it from MS Word. if (myDO.GetDataPresent(DataFormats.Rtf) && (_PasteStepTextOvrRide || (!_PastePlainTextOvrRide && !PastePlainTextSetting))) { string tmpForLink = myDO.GetData(DataFormats.Rtf).ToString().Replace("\r\n", ""); if (tmpForLink.ToUpper().Contains(@"SCHEMAS.MICROSOFT.COM/OFFICE/WORD")) myRtb.SelectedText = _MyStepRTB.GetPasteText(PasteNoReturnsSetting, myDO); else { tmpForLink = Regex.Replace(tmpForLink, @"#Link:ReferencedObject:[0-9]+ ", @"#Link:ReferencedObject: "); tmpForLink = Regex.Replace(tmpForLink, @"#Link:Transition:([0-9]+) [0-9]+ ", @"#Link:Transition:$1 "); tmpForLink = Regex.Replace(tmpForLink, @"#Link:TransitionRange:([0-9]+) [0-9]+ ", @"#Link:TransitionRange:$1 "); tmpForLink = tmpForLink.Replace(@"\u8212 \'96", @"-"); // Replace EM Dash with hyphen tmpForLink = tmpForLink.Replace(@"\u8211 \'96", @"-"); // Replace EN Dash with hyphen tmpForLink = tmpForLink.Replace(@"\u8212 ", @"-"); // Replace EM Dash with hyphen tmpForLink = tmpForLink.Replace(@"\u8211 ", @"-"); // Replace EN Dash with hyphen myRtb.SelectedRtf = tmpForLink; } } else if (myDO.GetDataPresent(DataFormats.Text)) myRtb.SelectedText = _MyStepRTB.GetPasteText(PasteNoReturnsSetting, myDO); if (myRtb.SelectionLength == 0 && myRtb is StepRTB) myRtb.SelectionFont = (myRtb as StepRTB).MyStyleFont.WindowsFont; _PastePlainTextOvrRide = false; _PasteStepTextOvrRide = false; } private void SaveErrorInLogProblemWithType(Control ctrl) { StringBuilder errormsg = new StringBuilder(string.Format("Failed clipboard action with control {0} a {1} ", ctrl.Name, ctrl.GetType().Name)); Type typ = ctrl.GetType(); while (typ.Name != "Control") { errormsg.Append(string.Format(", dervied from {0}", typ.BaseType.Name)); typ = typ.BaseType; } _MyLog.Error(errormsg); } private Control FindActiveControl() { // added the flag below because a table (grid) could have a cell selected (a control) // but it might not have focus (in edit mode) bool beenThereDoneThat = false; // flag to prevent infinate loop Control tmp = this; while (!(tmp.Parent is Form)) { tmp = tmp.Parent; // if coming from property page (properties of procedure & section number/title), // tmp becomes null rather than from flexgrid or steptext. if (tmp == null) return null; } Form frm = tmp.Parent as Form; tmp = frm.ActiveControl; while (!beenThereDoneThat && tmp.Controls.Count > 0) { beenThereDoneThat = true; foreach (Control ctrl in tmp.Controls) if (ctrl.ContainsFocus) { tmp = ctrl; beenThereDoneThat = false; break; } } return tmp; } private void btnCut_Click(object sender, EventArgs e) { StartGridEditing(SelectionOption.All); MoveSelectedToClipboard(true); } private void MoveSelectedToClipboard(bool isCut) { Control ctrl = FindActiveControl(); if (ctrl == null) return; // null if on property page for procedure & section number/title Clipboard.Clear(); if (_MyStepRTB.SelectedText == null || _MyStepRTB.SelectedText == "") return; // nothing to copy onto clipboard, just return DataObject myDO = new DataObject(); ; if (ctrl is RichTextBox) { //myDO = new DataObject("Rich Text Format", (ctrl as RichTextBox).SelectedRtf); string tmp2 = _MyStepRTB.SelectedText; string tmp = _MyStepRTB.GetSelectionForClipBoard(); tmp2 = Regex.Replace(tmp2, @"#Link:ReferencedObject:[0-9]+ +[0-9a-zA-Z]+ [0-9]+", @""); tmp2 = Regex.Replace(tmp2, @"#Link:Transition:([0-9]+) [0-9]+ [1-9]+", @""); tmp2 = Regex.Replace(tmp2, @"#Link:TransitionRange:([0-9]+) [0-9]+ [0-9]+ [0-9]+", ""); tmp2 = tmp2.Replace("", ""); myDO.SetText(tmp2, TextDataFormat.Text); //myDO.SetText(_MyStepRTB.SelectedRtf, TextDataFormat.Rtf); myDO.SetText(tmp, TextDataFormat.Rtf); if (isCut) (ctrl as RichTextBox).SelectedText = ""; } else if (ctrl is ComboBox) { //myDO = new DataObject("Text Format", (ctrl as ComboBox).SelectedText); myDO.SetText((ctrl as ComboBox).SelectedText, TextDataFormat.Text); if (isCut) (ctrl as ComboBox).SelectedText = ""; } else if (ctrl is TextBox) { //myDO = new DataObject("Text Format", (ctrl as TextBox).SelectedText); myDO.SetText((ctrl as TextBox).SelectedText, TextDataFormat.Text); if (isCut) (ctrl as TextBox).SelectedText = ""; } else { SaveErrorInLogProblemWithType(ctrl); return; } //DataObject myDO; //if (ctrl is RichTextBox) //{ // myDO = new DataObject("Rich Text Format", (ctrl as RichTextBox).SelectedRtf); // myDO.SetText(_MyStepRTB.SelectedText); // if(isCut) (ctrl as RichTextBox).SelectedText = ""; //} //else if (ctrl is ComboBox) //{ // myDO = new DataObject("Text Format", (ctrl as ComboBox).SelectedText); // if (isCut) (ctrl as ComboBox).SelectedText = ""; //} //else if (ctrl is TextBox) //{ // myDO = new DataObject("Text Format", (ctrl as TextBox).SelectedText); // if (isCut) (ctrl as TextBox).SelectedText = ""; //} //else //{ // SaveErrorInLogProblemWithType(ctrl); // return; //} Clipboard.SetDataObject(myDO); } private void btnCopy_Click(object sender, EventArgs e) { StartGridEditing(SelectionOption.All); MoveSelectedToClipboard(false); } private void btnBold_Click(object sender, EventArgs e) { StartGridEditing(SelectionOption.All); RTBAPI.ToggleBold(!RTBAPI.IsBold(_MyStepRTB), _MyStepRTB, _MyStepRTB.SelectionLength == 0 ? RTBAPI.RTBSelection.SCF_DEFAULT : RTBAPI.RTBSelection.SCF_SELECTION); btnCMBold.Checked = btnBold.Checked = RTBAPI.IsBold(_MyStepRTB); } private void btnItalics_Click(object sender, EventArgs e) { StartGridEditing(SelectionOption.All); RTBAPI.ToggleItalic(!RTBAPI.IsItalic(_MyStepRTB), _MyStepRTB, _MyStepRTB.SelectionLength == 0 ? RTBAPI.RTBSelection.SCF_DEFAULT : RTBAPI.RTBSelection.SCF_SELECTION); btnCMItalics.Checked = btnItalics.Checked = RTBAPI.IsItalic(_MyStepRTB); } private void btnUnderline_Click(object sender, EventArgs e) { StartGridEditing(SelectionOption.All); RTBAPI.ToggleUnderline(!RTBAPI.IsUnderline(_MyStepRTB), _MyStepRTB, _MyStepRTB.SelectionLength == 0 ? RTBAPI.RTBSelection.SCF_DEFAULT : RTBAPI.RTBSelection.SCF_SELECTION); btnCMUnderline.Checked = btnUnderline.Checked = RTBAPI.IsUnderline(_MyStepRTB); } private void btnSuperscript_Click(object sender, EventArgs e) { StartGridEditing(SelectionOption.All); RTBAPI.ToggleSuperscript(!RTBAPI.IsSuperScript(_MyStepRTB), _MyStepRTB, _MyStepRTB.SelectionLength == 0 ? RTBAPI.RTBSelection.SCF_DEFAULT : RTBAPI.RTBSelection.SCF_SELECTION); btnCMSuperscript.Checked = btnSuperscript.Checked = RTBAPI.IsSuperScript(_MyStepRTB); } private void btnSubscript_Click(object sender, EventArgs e) { StartGridEditing(SelectionOption.All); RTBAPI.ToggleSubscript(!RTBAPI.IsSubScript(_MyStepRTB), _MyStepRTB, _MyStepRTB.SelectionLength == 0 ? RTBAPI.RTBSelection.SCF_DEFAULT : RTBAPI.RTBSelection.SCF_SELECTION); btnCMSubscript.Checked = btnSubscript.Checked = RTBAPI.IsSubScript(_MyStepRTB); } private void btnUppercase_Click(object sender, EventArgs e) { StartGridEditing(SelectionOption.All); _MyStepRTB.SetSelectedCase('U'); } private void btnLowercase_Click(object sender, EventArgs e) { StartGridEditing(SelectionOption.All); _MyStepRTB.SetSelectedCase('l'); } private void btnTitleCase_Click(object sender, EventArgs e) { StartGridEditing(SelectionOption.All); _MyStepRTB.SetSelectedCase('T'); } private void btnInsTrans_Click(object sender, EventArgs e) { StartGridEditing(SelectionOption.Start); // see if user is positioned 'on' a transition within the rtb, if so do a modify, otherwise, // insert transition. StepTabPanel tmp = Parent as StepTabPanel; tmp.MyDisplayTabControl.OnLinkModifyTran(this, new StepPanelLinkEventArgs(MyStepRTB.MyLinkText)); } private void btnInsHrdSpc_Click(object sender, EventArgs e) { StartGridEditing(SelectionOption.Start); _MyStepRTB.InsertSymbol(@"\u160?"); } private void btnInsRO_Click(object sender, EventArgs e) { StartGridEditing(SelectionOption.Start); // see if user is positioned 'on' an ReferencedObject within the rtb, if so do a modify, otherwise, // insert transition. StepTabPanel tmp = Parent as StepTabPanel; tmp.MyDisplayTabControl.OnLinkModifyRO(this, new StepPanelLinkEventArgs(MyStepRTB.MyLinkText)); } private void btnRedo_Click(object sender, EventArgs e) { _MyStepRTB.Redo(); btnCMUndo.Enabled = btnUndo.Enabled = _MyStepRTB.CanUndo; btnCMRedo.Enabled = btnRedo.Enabled = _MyStepRTB.CanRedo; } private void btnUndo_Click(object sender, EventArgs e) { _MyStepRTB.Undo(); if (_MyStepRTB.WasXDelete && _MyStepRTB.SelectionStart > 0 && _MyStepRTB.TextLength > 0 && (_MyStepRTB.Text[_MyStepRTB.SelectionStart - 1] == 'X')) { _MyStepRTB.Undo(); _MyStepRTB.WasXDelete = false; // only allow one of these - not best case, but at least can get // one undo _MyStepRTB.ClearUndo(); } btnCMRedo.Enabled = btnRedo.Enabled = _MyStepRTB.CanRedo; btnCMUndo.Enabled = btnUndo.Enabled = _MyStepRTB.CanUndo; } private void btnGoTo_Click(object sender, EventArgs e) { // if on a transition, go to the selected transition 'to'. If on // a referenced object, bring up ReferencedObject Editor (for now, just put up a message box. if (_MyStepRTB.MyLinkText != null && _MyStepRTB.MyLinkText.IndexOf("Transition") > -1) { _MyEditItem.MyStepPanel.OnLinkClicked(sender, new StepPanelLinkEventArgs(_MyStepRTB.MyLinkText)); } else { if (VlnSettings.ReleaseMode.Equals("DEMO")) { MessageBox.Show("Referenced Object Editor not available in the Demo version.", "PROMS Demo Version"); return; } string myROID; RODbInfo myRODB; if (MyFlexGrid != null && MyFlexGrid.IsRoTable) { myROID = MyFlexGrid.ROID.ToLower(); myRODB = RODbInfo.Get(MyFlexGrid.RODbId); } else { LinkText lt = new LinkText(_MyStepRTB.MyLinkText); myROID = lt.MyRoUsageInfo.ROID.ToLower(); myRODB = lt.MyRoUsageInfo.MyRODb; } if (myROID.StartsWith("ffff")) { MessageBox.Show("Unit Information RO's cannot be edited", "Unit Information RO", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } //string roapp = Environment.GetEnvironmentVariable("roapp"); string roapp = Volian.Base.Library.ExeInfo.GetROEditorPath(); // get the path to the RO Editor Executable string args = "\"" + myRODB.FolderPath + "\" " + myROID; if (!Directory.Exists(myRODB.FolderPath)) { MessageBox.Show(string.Format("RO Database directory does not exist: {0}", myRODB.FolderPath)); return; } System.Diagnostics.Process.Start(roapp, args); } } private void btnChgTyp_Click(object sender, EventArgs e) { StepPanelTabDisplayEventArgs args = new StepPanelTabDisplayEventArgs("Change Step Type"); MyEditItem.MyStepPanel.OnTabDisplay(sender, args); } #endregion #region RHM debug //#if DEBUG // // The following code generates an XML output for the selected item for print testing. // private void btnPageBreak_Click(object sender, EventArgs e) // { // // This is here temporarily to get a node and all of it's children for print testing. // OutputAllChildren(MyRTBItem); // } // private void OutputAllChildren(RTBItem myRTBItem) // { // OutputAllChildren(myRTBItem.MyBeforeRTBItems); // OutputStepInfo(myRTBItem); // OutputAllChildren(myRTBItem.MyAfterRTBItems); // OutputAllChildren(myRTBItem.MyRNORTBItems); // } // private void OutputStepInfo(RTBItem myRTBItem) // { // Label lbl = myRTBItem.MyLabel; // if (lbl.Text.Trim() != "") // Console.WriteLine("{4}", // ToInches(myRTBItem.Left + lbl.Left), ToInches(myRTBItem.Top + lbl.Top), // lbl.Font.FontFamily.Name,lbl.Font.SizeInPoints,lbl.Text); // StepRTB rtb = myRTBItem.MyStepRTB; // Console.WriteLine("{3}", // ToInches(myRTBItem.Left + rtb.Left), ToInches(myRTBItem.Top + rtb.Top), ToInches(rtb.Width), myRTBItem.MyItemInfo.MyContent.Text); //// ToInches(myRTBItem.Left + rtb.Left), ToInches(myRTBItem.Top + rtb.Top), ToInches(rtb.Width), rtb.Rtf); // } // private float ToInches(int val) // { // return Convert.ToSingle(val)/96F; // } // private void OutputAllChildren(List list) // { // if(list != null) // foreach (RTBItem itm in list) // OutputAllChildren(itm); // } //#endif #endregion public void SetupReviewerMode() { if (MyEditItem != null && MyEditItem.MyStepPanel.VwMode == E_ViewMode.Edit) { btnToggleEditView_Click(null, new EventArgs()); rtabView.Visible = false; rtabHome.Visible = false; rtabInsert.Visible = false; rtabAdmin.Visible = false; rtabReview.Select(); } } public void SetupROEditorMode() { btnToggleEditView_Click(null, new EventArgs()); rtabView.Visible = false; } public void SetupWriterMode() { EnableROEdit = false; rtabAdmin.Visible = false; } public void SetupSetAdminMode() { } public void SetupAdminMode() { } private void btnToggleEditView_Click(object sender, EventArgs e) { if (MyEditItem == null) return; MyEditItem.MyStepPanel.VwMode = MyEditItem.MyStepPanel.VwMode == E_ViewMode.Edit ? E_ViewMode.View : E_ViewMode.Edit; MyEditItem.ToggleEditView(MyEditItem.MyStepPanel.VwMode); SetButtonAndMenuEnabling(true); SetStepButtonAndMenuEnabling(true); MyEditItem.MyStepPanel.MyStepTabPanel.MyDisplayTabControl.OnModeChange(this, new StepRTBModeChangeEventArgs(MyEditItem.MyStepPanel.VwMode)); btnEditMode.Checked = btnCMEditMode1.Checked = MyEditItem.MyStepPanel.VwMode == E_ViewMode.View; MyEditItem.MyStepRTB.SpellCheckContextMenuOn(MyEditItem.MyStepPanel.VwMode != E_ViewMode.View); } private void btnROEdit_Click(object sender, EventArgs e) { if (VlnSettings.ReleaseMode.Equals("DEMO")) { MessageBox.Show("Referenced Object Editor not available in the Demo version.", "PROMS Demo Version"); return; } //string roapp = Environment.GetEnvironmentVariable("roapp"); string roapp = Volian.Base.Library.ExeInfo.GetROEditorPath(); // get the path to the RO Editor Executable if (roapp == null || roapp == string.Empty) { MessageBox.Show("The 'roapp' environment variable needs to be set to the path of the RO Editor\n\n Ex: C:\\VE-PROMS.NET\\Bin\\roeditor.exe", "Environment Variable Error"); return; } if (!File.Exists(roapp)) { string errtxt = string.Format("Could not find path to Referenced Objects Editor:\n\n roapp = {0}\n\n Verify the path assigned to the 'roapp' environment variable", roapp); MessageBox.Show(errtxt, "Environment Variable Error"); //MessageBox.Show("Could not find path to Ro Editor, check 'roapp' environment variable","Environment Variable Error"); return; } //if (roapp == null) //{ // MessageBox.Show("Could not find path to Ro Editor, check 'roapp' environment variable"); // return; //} if (MyDVI == null || MyDVI.DocVersionAssociationCount < 1) { MessageBox.Show("Could not find associated path for ro data.", "No RO Data", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } string roloc = "\"" + MyDVI.DocVersionAssociations[0].MyROFst.MyRODb.FolderPath + "\""; if (!Directory.Exists(MyDVI.DocVersionAssociations[0].MyROFst.MyRODb.FolderPath)) { MessageBox.Show(string.Format("RO Database directory does not exist: {0}", MyDVI.DocVersionAssociations[0].MyROFst.MyRODb.FolderPath)); return; } System.Diagnostics.Process.Start(roapp, roloc); } private void btnUpdROVal_Click(object sender, EventArgs e) { // use rodb directory path of the first rofst for the this document version. Later, will need // to modify code to get which one (when there is more than one) if (MyDVI.DocVersionAssociations.Count < 1) { MessageBox.Show("Error Updating ro.fst. No associated ro.fst"); return; } ROFstInfo roFstInfo = MyDVI.DocVersionAssociations[0].MyROFst; string rofstPath = roFstInfo.MyRODb.FolderPath + @"\ro.fst"; if (!File.Exists(rofstPath)) { MessageBox.Show("No existing ro.fst in path " + roFstInfo.MyRODb.FolderPath + ". Check for invalid path"); return; } FileInfo fiRofst = new FileInfo(rofstPath); if (roFstInfo.DTS == fiRofst.LastWriteTimeUtc) { MessageBox.Show("ro.fst files are same for path " + roFstInfo.MyRODb.FolderPath + ", import of that ro.fst will not be done"); return; } if (roFstInfo.DTS > fiRofst.LastWriteTimeUtc) { MessageBox.Show("Cannot copy older ro.fst from " + roFstInfo.MyRODb.FolderPath + ", import of that ro.fst will not be done"); return; } Cursor = Cursors.WaitCursor; using (DocVersion dv = DocVersion.Get(MyDVI.VersionID)) { roFstInfo.ROTableUpdate += new ROFstInfoROTableUpdateEvent(roFstInfo_ROTableUpdate); ROFst newrofst = ROFstInfo.UpdateRoFst(roFstInfo.MyRODb, dv.DocVersionAssociations[0], dv, roFstInfo); roFstInfo.ROTableUpdate -= new ROFstInfoROTableUpdateEvent(roFstInfo_ROTableUpdate); StepPanelTabDisplayEventArgs args = new StepPanelTabDisplayEventArgs("DisplayROUpdateROFST"); MyEditItem.MyStepPanel.OnTabDisplay(sender, args); btnUpdROVal.Enabled = false; } Cursor = Cursors.Default; } public List roFstInfo_ROTableUpdate(object sender, ROFstInfoROTableUpdateEventArgs args) { return VlnFlexGrid.ROTableUpdate(sender, args); //string xml = null; //string srchtxt = null; //Content content = (Content)sender; //using (VlnFlexGrid myGrid = new VlnFlexGrid(content.ContentItems[0])) //{ // using (StringReader sr = new StringReader(args.OldGridXml)) // { // myGrid.ReadXml(sr); // sr.Close(); // } // string roid = content.ContentRoUsages[0].ROID; //myGrid.ROID; // int rodbid = content.ContentRoUsages[0].RODbID; //myGrid.RODbId; // ////Font GridFont = myGrid.Font; // //myGrid.MergedRanges.Clear(); // //myGrid.Clear(); // //myGrid.ParseTableFromText(args.ROText); // //myGrid.AutoSizeCols(); // //myGrid.AutoSizeRows(); // //myGrid.MakeRTFcells(); // //myGrid.RODbId = rodbid; // //myGrid.ROID = roid; // //myGrid.IsRoTable = true; // myGrid.Visible = false; // myGrid.ConvertTableROToGrid(args.ROText, rodbid, roid); // myGrid.FixTableCellsHeightWidth(); // myGrid.AdjustGridControlSize(); // myGrid.Visible = true; // using (StringWriter sw = new StringWriter()) // { // myGrid.WriteXml(sw); // xml = sw.GetStringBuilder().ToString(); // sw.Close(); // } // srchtxt = myGrid.GetSearchableText(); //} //List retlist = new List(); //retlist.Add(srchtxt); //retlist.Add(xml); //return retlist; } private void rtabAdmin_Click(object sender, EventArgs e) { ribbonTab_SingleClick(sender, e); btnUpdROVal.Enabled = false; if (MyDVI.DocVersionAssociations == null || MyDVI.DocVersionAssociations.Count < 1) { btnROEdit.Enabled = false; return; } btnROEdit.Enabled = EnableROEdit; if (!NewerRoFst()) return; btnUpdROVal.Enabled = true; } public bool NewerRoFst() { if (_MyDVI == null)return false; return _MyDVI.NewerRoFst; } public void SetUpdRoValBtn(bool en) { btnUpdROVal.Enabled = en; } private void btnBookmarks_Click(object sender, EventArgs e) { StepPanelTabDisplayEventArgs args = new StepPanelTabDisplayEventArgs("Bookmarks"); MyEditItem.MyStepPanel.OnTabDisplay(sender, args); } private void btnSearch_Click(object sender, EventArgs e) { StepPanelTabDisplayEventArgs args = new StepPanelTabDisplayEventArgs("Global Search"); MyEditItem.MyStepPanel.OnTabDisplay(sender, args); } private void btnLibDocs_Click(object sender, EventArgs e) { StepPanelTabDisplayEventArgs args = new StepPanelTabDisplayEventArgs("LibDocs"); MyEditItem.MyStepPanel.OnTabDisplay(sender, args); } public void btnAnnots_Click(object sender, EventArgs e) { StepPanelTabDisplayEventArgs args = new StepPanelTabDisplayEventArgs("Annots"); MyEditItem.MyStepPanel.OnTabDisplay(sender, args); } public void btnDelStep_Click(object sender, EventArgs e) { bool clearCopyStep = false; StepTabPanel tmp = Parent as StepTabPanel; if (tmp.MyDisplayTabControl.MyCopyStep != null && tmp.MyDisplayTabControl.MyCopyStep.ItemID == MyEditItem.MyItemInfo.ItemID) { if (MessageBox.Show("Are you sure?\n\nIf you delete this step you will not able to paste it.\nYou should paste it before you delete it.", "Attempting to delete copied step.", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No) return; clearCopyStep = true; } bool surpressMessageBox = (e == null); SectionInfo si = MyEditItem.MyItemInfo as SectionInfo; if (si != null) { string msg = si.HasChildren ? "Are you sure you want to delete this section and its steps?" : "Are you sure you want to delete this section?"; DialogResult result = MessageBox.Show(msg, "Verify Delete", MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (result == DialogResult.Yes) { if (!si.IsStepSection) { WordSectionEventArgs args = new WordSectionEventArgs(si); MyEditItem.MyStepPanel.OnWordSectionClose(sender, args); } MyEditItem.RemoveItem(); if (!si.IsStepSection) { WordSectionEventArgs args = new WordSectionEventArgs(si); MyEditItem.MyStepPanel.OnWordSectionDeleted(sender, args); } } return; } StepInfo stpi = MyEditItem.MyItemInfo as StepInfo; if (stpi == null) // not sure that it will every get here! { MessageBox.Show("Unknown type {0}, cannot delete!", MyEditItem.MyItemInfo.GetType().Name); return; } if (!surpressMessageBox) { string typeDescription = MyEditItem.MyStepData.StepEditData.TypeMenu.MenuItem; string msgs = ""; if (MyFlexGrid != null) MyEditItem.IdentifyMe(true); MyEditItem.IdentifyChildren(true); if (stpi.HasChildren) msgs = string.Format("Are you sure you want to delete this {0} and its substeps?", typeDescription); else msgs = string.Format("Are you sure you want to delete this {0}?", typeDescription); //string msgs = stpi.HasChildren ? "Are you sure you want to delete this step and its substeps?" : "Are you sure you want to delete this step?"; DialogResult results = MessageBox.Show(msgs, "Verify Delete", MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (MyFlexGrid != null) { MyFlexGrid.Styles.Fixed.BackColor = MyFlexGrid.DefaultFixedBackgroundColor; MyFlexGrid.StyleBackColor = MyFlexGrid.DefaultCellBackgroundcolor; } MyEditItem.IdentifyChildren(false); if (results == DialogResult.Yes) { MyEditItem.RemoveItem(); if (clearCopyStep) { tmp.MyDisplayTabControl.MyCopyStep = null; SetPasteButtonEnabled(); } } } else { MyEditItem.RemoveItem(); if (clearCopyStep) { tmp.MyDisplayTabControl.MyCopyStep = null; SetPasteButtonEnabled(); } } } private void btnCMIns_PopupClose(object sender, EventArgs e) { _ContextMenuBar.SetContextMenuEx(_MyStepRTB, _DefaultContextMenu); } public void SetShortCutContextMenu(string menuName) { bool displayMenu = false; int moveDown = 0; int cnt = 0; E_AccStep? actable = 0; if (menuName.Contains("PSI")) Console.WriteLine("menu = {0}", menuName); StepData sd = MyItemInfo==null?null:MyItemInfo.FormatStepData; if (sd != null) // will be null if section { actable = sd.StepEditData.AcTable; if (actable == null) actable = 0; } //btnInsCaut.Enabled = (actable & E_AccStep.AddingCaution) > 0; switch (menuName) { case "PSI": displayMenu = true; _ContextMenuBar.SetContextMenuEx(_MyStepRTB, btnCMPSI); break; case "InsHLS": displayMenu = btnCMInsHLS.Enabled; Cursor.Position = new Point(0, 0); // Enter Key hit, move mouse pointer out of way of context menu _ContextMenuBar.SetContextMenuEx(_MyStepRTB, btnCMInsHLS); foreach (DevComponents.DotNetBar.ButtonItem bi in btnCMInsHLS.SubItems) { if (bi.Checked) moveDown = cnt; cnt++; } break; case "InsRNO": displayMenu = ((actable & E_AccStep.AddingRNO) > 0) && btnCMInsRNO.Enabled; _ContextMenuBar.SetContextMenuEx(_MyStepRTB, btnCMInsRNO); break; case "InsSubStps": displayMenu = ((actable & E_AccStep.AddingSub) > 0) && btnCMInsSubStps.Enabled; _ContextMenuBar.SetContextMenuEx(_MyStepRTB, btnCMInsSubStps); if (displayMenu) Cursor.Position = new Point(0, 0); // Enter Key hit, move mouse pointer out of way of context menu foreach (DevComponents.DotNetBar.ButtonItem bi in btnCMInsSubStps.SubItems) { if (bi.Checked) moveDown = cnt; cnt++; } break; case "InsCaution": displayMenu = ((actable & E_AccStep.AddingCaution) > 0) && btnCMInsCaution.Enabled; _ContextMenuBar.SetContextMenuEx(_MyStepRTB, btnCMInsCaution); break; case "InsNote": displayMenu = ((actable & E_AccStep.AddingNote) > 0) && btnCMInsNote.Enabled; _ContextMenuBar.SetContextMenuEx(_MyStepRTB, btnCMInsNote); break; case "InsTable": displayMenu = ((actable & E_AccStep.AddingTable) > 0) && btnCMInsTable.Enabled; _ContextMenuBar.SetContextMenuEx(_MyStepRTB, btnCMInsTable); break; case "InsFigure": displayMenu = ((actable & E_AccStep.AddingTable) > 0) && btnCMInsFigure.Enabled; _ContextMenuBar.SetContextMenuEx(_MyStepRTB, btnCMInsFigure); break; case "StepPaste": displayMenu = true; if (MyFlexGrid != null) _ContextMenuBar.SetContextMenuEx(MyFlexGrid, btnCMStepPaste); else _ContextMenuBar.SetContextMenuEx(_MyStepRTB, btnCMStepPaste); break; } if (displayMenu) { SendKeys.Send("+{F10}{DOWN}"); // Display Context menu while (moveDown > 0) // position to current type { SendKeys.Send("{DOWN}"); moveDown--; } } } private void btnSpell_Click(object sender, EventArgs e) { //MessageBox.Show("Functionality not available.", "Spell Check"); StepPanelTabDisplayEventArgs args = new StepPanelTabDisplayEventArgs("SpellChecker"); MyEditItem.MyStepPanel.OnTabDisplay(sender, args); } //private FindReplace dlgFindReplace = null; private void btnFindRplDlg_Click(object sender, EventArgs e) { StepPanelTabDisplayEventArgs args = new StepPanelTabDisplayEventArgs("FndRpl"); MyEditItem.MyStepPanel.OnTabDisplay(sender, args); } private void InsertSiblingBeforeOrAfter(string b4aftr) { E_AccStep? actable = 0; StepData sd = MyItemInfo.FormatStepData; actable = sd.StepEditData.AcTable; if (actable == null) actable = 0; switch (b4aftr) { case "after": if ((actable & E_AccStep.AddingNext) > 0) MyEditItem.AddSiblingAfter(); break; case "before": if ((actable & E_AccStep.AddingPrev) > 0) MyEditItem.AddSiblingBefore(); break; } } public void ProcessEnterKey() { bool deletedEmpty = false; bool deletedHLS = false; bool deletedSubStep = false; bool deletedRNO = false; bool deletedNote = false; bool deletedCaution = false; if (!MyItemInfo.IsTable && MyStepRTB.Text.Length < 1) //empty step text { deletedEmpty = true; deletedHLS = MyItemInfo.IsHigh; deletedSubStep = MyItemInfo.IsStepPart; deletedRNO = MyItemInfo.IsRNOPart; deletedNote = MyItemInfo.IsNote; deletedCaution = MyItemInfo.IsCaution; btnDelStep_Click(MyStepRTB, null); // delete the empty step piece } if (MyItemInfo.IsHigh) { if (!deletedHLS) { if (deletedSubStep) SetShortCutContextMenu("InsHLS"); else if (MyEditItem.MyRNOEditItems != null && MyEditItem.MyRNOEditItems.Count > 0) MyStepRTB.StepRTB_ArrowPressed(E_ArrowKeys.CtrlRight); // jump to RNO else if (deletedRNO) { AddSubStep(); } else if (!deletedHLS) { if (MyItemInfo.ColumnMode > 0) CreateNewRNO(); else AddSubStep(); } } } else if (MyItemInfo.IsRNOPart) { MyStepRTB.StepRTB_ArrowPressed(E_ArrowKeys.CtrlLeft); if (MyItemInfo.IsHigh) { //if (MyEditItem != null && MyEditItem.NextDownEditItem != null && MyEditItem.NextDownEditItem.MyItemInfo.MyParent.Equals(MyEditItem.MyItemInfo)) if (MyEditItem != null && MyEditItem.NextDownEditItem != null && MyEditItem.NextDownEditItem.MyItemInfo.MyParent.ItemID == MyEditItem.MyItemInfo.ItemID) { MyStepRTB.StepRTB_ArrowPressed(E_ArrowKeys.CtrlDown); InsertSiblingBeforeOrAfter("before"); } else SetShortCutContextMenu("InsSubStps"); } else InsertSiblingBeforeOrAfter("after"); } else if (MyItemInfo.IsInRNO && MyItemInfo.IsStepPart) { if (deletedEmpty) { MyStepRTB.StepRTB_ArrowPressed(E_ArrowKeys.CtrlLeft); CreateNewRNO(); } else InsertSiblingBeforeOrAfter("after"); } else if (MyItemInfo.IsStepPart) { if (deletedSubStep) { //MyStepRTB.StepRTB_ArrowPressed(E_ArrowKeys.CtrlUp); // jump to HLS SetShortCutContextMenu("InsHLS"); // prompt for new HLS } //else if (deletedRNO || MyItemInfo.IsEquipmentList) // InsertSiblingBeforeOrAfter("after"); else if (!MyItemInfo.IsSequential) // only add a sibling if substep type does not have sequential tabs InsertSiblingBeforeOrAfter("after"); else if (deletedRNO) { if (MyItemInfo.SearchNext != null && MyItemInfo.SearchNext.IsTable) MyStepRTB.StepRTB_ArrowPressed(E_ArrowKeys.CtrlDown); else InsertSiblingBeforeOrAfter("after"); } else if (MyEditItem.MyRNOEditItems != null && MyEditItem.MyRNOEditItems.Count > 0) MyStepRTB.StepRTB_ArrowPressed(E_ArrowKeys.CtrlRight); // jump to RNO else if (MyItemInfo.ColumnMode > 0) CreateNewRNO(); else InsertSiblingBeforeOrAfter("after"); } else if (MyItemInfo.IsCaution) { if (deletedEmpty) { MyStepRTB.StepRTB_ArrowPressed(E_ArrowKeys.CtrlDown); if (deletedCaution) CreateNewNote(); } else InsertSiblingBeforeOrAfter("after"); } else if (MyItemInfo.IsNote) { if (!deletedEmpty) InsertSiblingBeforeOrAfter("after"); else MyStepRTB.StepRTB_ArrowPressed(E_ArrowKeys.CtrlDown); } else if (MyItemInfo.IsTable || MyItemInfo.IsFigure) { ItemInfo next = MyItemInfo.SearchNext; MyFlexGrid.Select(0, 0); // make sure we are at the first row before doing an up arrow MyStepRTB.StepRTB_ArrowPressed(E_ArrowKeys.CtrlUp); if (MyItemInfo.IsHigh) { if (deletedSubStep) SetShortCutContextMenu("InsHLS"); else if (next != null && next.IsFirstSubStep) { MyEditItem.MyStepPanel.MyStepTabPanel.MyDisplayTabControl.OpenItem(next); InsertSiblingBeforeOrAfter("before"); } else SetShortCutContextMenu("InsSubStps"); } else InsertSiblingBeforeOrAfter("after"); } } private void AddSubStep() { EditItem nextDownEditItem = MyEditItem.NextDownEditItem; //bool skipTable = false; // //If the step has a table, move past it before adding a substep //if (nextDownEditItem != null && nextDownEditItem.MyItemInfo.MyParent.ItemID == MyEditItem.MyID && // nextDownEditItem.MyItemInfo.IsTablePart) //{ // nextDownEditItem = nextDownEditItem.NextDownEditItem; // skipTable = true; //} if (nextDownEditItem != null && nextDownEditItem.MyItemInfo.MyParent.ItemID == MyEditItem.MyID) { MyStepRTB.StepRTB_ArrowPressed(E_ArrowKeys.CtrlDown); //if (skipTable) MyStepRTB.StepRTB_ArrowPressed(E_ArrowKeys.CtrlDown); InsertSiblingBeforeOrAfter("before"); } else SetShortCutContextMenu("InsSubStps"); } private void CreateNewRNO() { if (btnInsRNO.SubItems.Count > 1) SetShortCutContextMenu("InsRNO"); else btnInsRNO.RaiseClick(); } private void CreateNewNote() { if (btnInsNote.SubItems.Count > 1) SetShortCutContextMenu("InsNote"); else btnInsNote.RaiseClick(); } private void btnPasteAfter_Click(object sender, EventArgs e) { StepTabPanel tmp = Parent as StepTabPanel; if (tmp.MyDisplayTabControl.MyCopyStep == null) return; MyEditItem.PasteSiblingAfter(tmp.MyDisplayTabControl.MyCopyStep.ItemID); } private void btnPasteBefore_Click(object sender, EventArgs e) { StepTabPanel tmp = Parent as StepTabPanel; if (tmp.MyDisplayTabControl.MyCopyStep == null) return; MyEditItem.PasteSiblingBefore(tmp.MyDisplayTabControl.MyCopyStep.ItemID); } private void btnStepPaste_Click(object sender, EventArgs e) { // just return } private void btnCpyStp_Click(object sender, EventArgs e) { DoCopyStep(); } public void DoCopyStep() { // highlight selected step(s) and prompt to see if selection is what user wants: if (MyFlexGrid != null) MyEditItem.IdentifyMe(true); MyEditItem.IdentifyChildren(true); DialogResult dr = MessageBox.Show("Step as Marked?", "Identify Step To Be Copied", MessageBoxButtons.YesNo); if (dr == DialogResult.Yes) { StepTabPanel tmp = Parent as StepTabPanel; tmp.MyDisplayTabControl.MyCopyStep = MyItemInfo; btnStepPaste.Enabled = true; SetPasteButtonEnabled(); } if (MyFlexGrid != null) { MyFlexGrid.Styles.Fixed.BackColor = MyFlexGrid.DefaultFixedBackgroundColor; MyFlexGrid.StyleBackColor = MyFlexGrid.DefaultCellBackgroundcolor; } MyEditItem.IdentifyChildren(false); } private void btnPasteReplace_Click(object sender, EventArgs e) { StepTabPanel tmp = Parent as StepTabPanel; if (tmp.MyDisplayTabControl.MyCopyStep == null) return; EditItem oldEditItem = MyEditItem; MyEditItem = MyEditItem.PasteReplace(tmp.MyDisplayTabControl.MyCopyStep.ItemID); if (MyEditItem.MyItemInfo.ItemID != oldEditItem.MyItemInfo.ItemID) oldEditItem.Dispose(); } private void btnPdfCreate_Click(object sender, EventArgs e) { if (MyItemInfo == null) return; // if creating a pdf before rtb exists, return; if (MyEditItem != null) MyEditItem.SaveCurrentAndContents(); OnPrintRequest(new StepTabRibbonEventArgs(MyItemInfo.MyProcedure)); } #region Table Grid #region TablePicker code // TODO: for tables //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 VlnFlexGrid CreateNewTable() { Point pt = Cursor.Position; int left = pt.X; VlnFlexGrid grd = null; TablePicker tpdlg = new TablePicker(); tpdlg.Location = pt; tpdlg.Left = left; tpdlg.MaxCols = 20; tpdlg.MaxRows = 30; DialogResult dr = tpdlg.ShowDialog(); while (tpdlg.Visible) { Application.DoEvents(); } if (dr != DialogResult.Cancel) //!tpdlg.Cancel) { // Create a new grid to store the selected size grd = new VlnFlexGrid(); grd.Rows.Count = tpdlg.SelectedRows; grd.Cols.Count = tpdlg.SelectedColumns; VE_Font vefont = MyItemInfo.ActiveFormat.PlantFormat.FormatData.StepDataList.Table.Font; Font GridFont = new Font(vefont.Family, (float)vefont.Size); grd.Font = GridFont; grd.FitTableToPageWidth((int)(MyItemInfo.MyDocStyle.Layout.PageWidth - MyItemInfo.MyDocStyle.Layout.LeftMargin)); } return grd; } //private void InitializeNewGrid(C1FlexGrid grd) //{ // int numCols = grd.Cols.Count - 1; // int numRows = grd.Rows.Count - 1; // string defText = ""; // if (textBoxX1.Text.Length > 0) // defText = textBoxX1.Text; // else // defText = textBoxX1.WatermarkText; // grd.SetData(grd.GetCellRange(0, 0, numRows, numCols), defText); //} #endregion #region Table Grid Copy/Paste private void btnTblDgnCopyRow_Click(object sender, EventArgs e) { MyFlexGrid.CopyRow(); } private void btnTblDgnCopyColumn_Click(object sender, EventArgs e) { MyFlexGrid.CopyColumn(); } private void btnTblDgnCopySelection_Click(object sender, EventArgs e) { MyFlexGrid.CopyCellSelection(); } private void btnTblDgnPasteRowAbove_Click(object sender, EventArgs e) { // create new rows before current position and copy clipboard data MyFlexGrid.PasteRows(VlnFlexGrid.enmPastePos.Before); GridItem tmp = MyEditItem as GridItem; if (tmp!=null) tmp.SavePastedCellRoTran(); } private void btnTblDgnPasteRowBelow_Click(object sender, EventArgs e) { // create new rows after current position and copy clipboard data MyFlexGrid.PasteRows(VlnFlexGrid.enmPastePos.After); GridItem tmp = MyEditItem as GridItem; if (tmp != null) tmp.SavePastedCellRoTran(); } private void btnTblDgnPasteReplaceRow_Click(object sender, EventArgs e) { // replace rows with current clipboard data starting as current row MyFlexGrid.PasteRows(VlnFlexGrid.enmPastePos.Replace); GridItem tmp = MyEditItem as GridItem; if (tmp != null) tmp.SavePastedCellRoTran(); } private void btnTblDgnPasteColumnLeft_Click(object sender, EventArgs e) { MyFlexGrid.PasteColumns(VlnFlexGrid.enmPastePos.Before); GridItem tmp = MyEditItem as GridItem; if (tmp != null) tmp.SavePastedCellRoTran(); } private void btnTblDgnPasteColumnRight_Click(object sender, EventArgs e) { MyFlexGrid.PasteColumns(VlnFlexGrid.enmPastePos.After); GridItem tmp = MyEditItem as GridItem; if (tmp != null) tmp.SavePastedCellRoTran(); } private void btnTblDgnPasteColumnReplace_Click(object sender, EventArgs e) { MyFlexGrid.PasteColumns(VlnFlexGrid.enmPastePos.Replace); GridItem tmp = MyEditItem as GridItem; if (tmp != null) tmp.SavePastedCellRoTran(); } private void btnTblDgnPasteIntoSelection_Click(object sender, EventArgs e) { MyFlexGrid.PasteCopiedCells(); GridItem tmp = MyEditItem as GridItem; if (tmp != null) tmp.SavePastedCellRoTran(); } #endregion #region Table Grid Delete private void btnTblDgnRemoveRow_Click(object sender, EventArgs e) { if (MyFlexGrid.AllRowsSelected()) btnDelStep_Click(sender, e); else MyFlexGrid.RemoveSelectedRow(); } private void btnTblDgnRemoveColumn_Click(object sender, EventArgs e) { if (MyFlexGrid.AllColumnsSelected()) btnDelStep_Click(sender, e); else MyFlexGrid.RemoveSelectedColumn(); } #endregion #region Table Grid Cell Style //private void cpHighlight_SelectedColorChanged(object sender, EventArgs e) //{ // string strColor = string.Format("{0}, {1}, {2};", cpTblDgnHighlight.SelectedColor.R, cpTblDgnHighlight.SelectedColor.G, cpTblDgnHighlight.SelectedColor.B); // MyFlexGrid.ChangeBackgroundColor(strColor); //} private void btnTblDgnAlgnTxTopLeft_Click(object sender, EventArgs e) { MyFlexGrid.ChangeCellAlign(MyFlexGrid.Selection, C1.Win.C1FlexGrid.TextAlignEnum.LeftTop); MyFlexGrid.RTFTextAlignment(MyFlexGrid.Selection, HorizontalAlignment.Left); } private void btnTblDgnAlgnTxTopCenter_Click(object sender, EventArgs e) { MyFlexGrid.ChangeCellAlign(MyFlexGrid.Selection, C1.Win.C1FlexGrid.TextAlignEnum.CenterTop); MyFlexGrid.RTFTextAlignment(MyFlexGrid.Selection, HorizontalAlignment.Center); } private void btnTblDgnAlgnTxTopRight_Click(object sender, EventArgs e) { MyFlexGrid.ChangeCellAlign(MyFlexGrid.Selection, C1.Win.C1FlexGrid.TextAlignEnum.RightTop); MyFlexGrid.RTFTextAlignment(MyFlexGrid.Selection, HorizontalAlignment.Right); } private void btnTblDgnAlgnTxCenterLeft_Click(object sender, EventArgs e) { MyFlexGrid.ChangeCellAlign(MyFlexGrid.Selection, C1.Win.C1FlexGrid.TextAlignEnum.LeftCenter); MyFlexGrid.RTFTextAlignment(MyFlexGrid.Selection, HorizontalAlignment.Left); } private void btnTblDgnAlgnTxCenterCenter_Click(object sender, EventArgs e) { MyFlexGrid.ChangeCellAlign(MyFlexGrid.Selection, C1.Win.C1FlexGrid.TextAlignEnum.CenterCenter); MyFlexGrid.RTFTextAlignment(MyFlexGrid.Selection, HorizontalAlignment.Center); } private void btnTblDgnAlgnTxCenterRight_Click(object sender, EventArgs e) { MyFlexGrid.ChangeCellAlign(MyFlexGrid.Selection, C1.Win.C1FlexGrid.TextAlignEnum.RightCenter); MyFlexGrid.RTFTextAlignment(MyFlexGrid.Selection, HorizontalAlignment.Right); } private void btnTblDgnAlgnTxBottomLeft_Click(object sender, EventArgs e) { MyFlexGrid.ChangeCellAlign(MyFlexGrid.Selection, C1.Win.C1FlexGrid.TextAlignEnum.LeftBottom); MyFlexGrid.RTFTextAlignment(MyFlexGrid.Selection, HorizontalAlignment.Left); } private void btnTblDgnAlgnTxBottomCenter_Click(object sender, EventArgs e) { MyFlexGrid.ChangeCellAlign(MyFlexGrid.Selection, C1.Win.C1FlexGrid.TextAlignEnum.CenterBottom); MyFlexGrid.RTFTextAlignment(MyFlexGrid.Selection, HorizontalAlignment.Center); } private void btnTblDgnAlgnTxBottomRight_Click(object sender, EventArgs e) { MyFlexGrid.ChangeCellAlign(MyFlexGrid.Selection, C1.Win.C1FlexGrid.TextAlignEnum.RightBottom); MyFlexGrid.RTFTextAlignment(MyFlexGrid.Selection, HorizontalAlignment.Right); } #endregion #region Table Grid Merge/Split private void btnTblDgnSplitCells_ToRows_Click(object sender, EventArgs e) { // without the BeginUpdate/EndUpdate, you will see the table jump around while // it is being adjusted MyFlexGrid.BeginUpdate(); MyFlexGrid.SplitSelection(false); MyFlexGrid.EndUpdate(); } #endregion private void btnTblDgnSplitCellsToCols_Click(object sender, EventArgs e) { // without the BeginUpdate/EndUpdate, you will see the table jump around while // it is being adjusted MyFlexGrid.BeginUpdate(); MyFlexGrid.SplitSelection(true); MyFlexGrid.EndUpdate(); } private void btnTblDgnMergeCells_Click(object sender, EventArgs e) { MyFlexGrid.MergeSelection(); } #endregion #region Table Grid Design private void btnTblDgnInsertRowAbove_Click(object sender, EventArgs e) { MyFlexGrid.InsertRowBefore(); } private void btnTblDgnInsertRowBelow_Click(object sender, EventArgs e) { MyFlexGrid.InsertRowAfter(); } private void btnTblDgnInsertColumnAbove_Click(object sender, EventArgs e) { MyFlexGrid.InsertColumnBefore(); } private void btnTblDgnInsertColumnBelow_Click(object sender, EventArgs e) { MyFlexGrid.InsertColumnAfter(); } public void ToggleTableDesignButtons(bool enable) { btnTblDgnAlignText.Enabled = enable; btnTblDgnCopy.Enabled = enable; btnTblDgnRemove.Enabled = enable; //btnTblDgnGridStyle.Enabled = enable; //rbTblBorder.Enabled = enable; rbnBorderlistBox.Enabled = enable; rbnBorderSelectionPanel.Enabled = enable; btnTblNoBorder.Enabled = enable; btnTblOutline.Enabled = enable; btnTblInside.Enabled = enable; btnTblDgnInsertColumn.Enabled = enable; btnTblDgnInsertRow.Enabled = enable; btnTblDgnMergeCells.Enabled = enable; btnCmGridPaste.Enabled = btnTblDgnPaste.Enabled = ((VlnFlexGrid.MyCopyInfo.MyCopiedFlexGrid != null) && enable); btnTblDgnSplitCells.Enabled = enable; } public void SetRibbonForGrid() { // for paste, see if there is clipboard data, & if so, of a type we can use. IDataObject iData = Clipboard.GetDataObject(); // set to true if editing cell, otherwise false for grids //bool enable = (MyFlexGrid != null && MyFlexGrid.Editor != null); bool enable = (MyFlexGrid != null && MyEditItem.MyStepPanel.VwMode == E_ViewMode.Edit); //btnPasteText.Enabled = btnPasteStepText.Enabled = btnPaste.Enabled = enable; btnPaste.Enabled = (iData.GetDataPresent(DataFormats.Text) || iData.GetDataPresent(DataFormats.Rtf)) && enable; btnCMPasteText.Enabled = btnPasteText.Enabled = iData.GetDataPresent(DataFormats.Text) && enable; btnCMPaste.Enabled = btnPasteStepText.Enabled = iData.GetDataPresent(DataFormats.Rtf ) && enable; btnCopy.Enabled = enable; btnCut.Enabled = enable; btnBold.Enabled = enable && !MyFlexGrid.IsRoTable;// ; btnItalics.Enabled = enable && !MyFlexGrid.IsRoTable;// ; btnUnderline.Enabled = enable && !MyFlexGrid.IsRoTable;// ; btnSubscript.Enabled = enable && !MyFlexGrid.IsRoTable;// ; btnSuperscript.Enabled = enable && !MyFlexGrid.IsRoTable;// ; btnChgCase.Enabled = enable && !MyFlexGrid.IsRoTable;// ; btnInsHrdSpc.Enabled = enable && !MyFlexGrid.IsRoTable;// enable; btnSymbols.Enabled = enable && !MyFlexGrid.IsRoTable;// enable; btnIndent.Enabled = enable && !MyFlexGrid.IsRoTable;// ;enable; btnInsTrans.Enabled = enable && !MyFlexGrid.IsRoTable;// ; btnInsRO.Enabled = enable; btnCMRtfCellEdit.Enabled = enable && !MyFlexGrid.IsRoTable; } private void btnTblDgnAdjustSize_Click(object sender, EventArgs e) { if (MyFlexGrid.Cols.Fixed == 0) // allow change of size. { // set all the rows and columns to Fixed so that user can adjust the row/column size if (MyFlexGrid.Cols[0].Width == -1) MyFlexGrid.Cols[0].Width = MyFlexGrid.Cols.DefaultSize; MyFlexGrid.Cols.Fixed = MyFlexGrid.Cols.Count; MyFlexGrid.Rows.Fixed = MyFlexGrid.Rows.Count; ToggleTableDesignButtons(false); //MyFlexGrid.ListStyles(); } else { // set grid back to "normal" mode MyFlexGrid.Cols.Fixed = 0; MyFlexGrid.Rows.Fixed = 0; MyFlexGrid.StyleBackColor = Color.White; ToggleTableDesignButtons(true); //MyFlexGrid.ListStyles(); } } #endregion #region Table Grid Border private void btnTblDgnTableBorderNone_Click(object sender, EventArgs e) { MyFlexGrid.SetTableBorder(C1.Win.C1FlexGrid.Util.BaseControls.BorderStyleEnum.None); } private void btnTblDgnTableBorderFixedSingle_Click(object sender, EventArgs e) { MyFlexGrid.SetTableBorder(C1.Win.C1FlexGrid.Util.BaseControls.BorderStyleEnum.FixedSingle); } private void btnTblDgnTableBorderFixed3D_Click(object sender, EventArgs e) { MyFlexGrid.SetTableBorder(C1.Win.C1FlexGrid.Util.BaseControls.BorderStyleEnum.Fixed3D); } private void btnTblDgnTableBorderLight3D_Click(object sender, EventArgs e) { MyFlexGrid.SetTableBorder(C1.Win.C1FlexGrid.Util.BaseControls.BorderStyleEnum.Light3D); } private void btnTblDgnTableBorderXPThemes_Click(object sender, EventArgs e) { MyFlexGrid.SetTableBorder(C1.Win.C1FlexGrid.Util.BaseControls.BorderStyleEnum.XpThemes); } #endregion #region Table Grid Grid Style private void btnTblDgnGridStyleNone_Click(object sender, EventArgs e) { MyFlexGrid.ChangeCellBorder(MyFlexGrid.Selection, C1.Win.C1FlexGrid.BorderStyleEnum.None); } private void btnTblDgnGridStyleFlat_Click(object sender, EventArgs e) { MyFlexGrid.ChangeCellBorder(MyFlexGrid.Selection, C1.Win.C1FlexGrid.BorderStyleEnum.Flat); } private void btnTblDgnGridStyleDouble_Click(object sender, EventArgs e) { MyFlexGrid.ChangeCellBorder(MyFlexGrid.Selection, C1.Win.C1FlexGrid.BorderStyleEnum.Double); } private void btnTblDgnGridStyleRaised_Click(object sender, EventArgs e) { MyFlexGrid.ChangeCellBorder(MyFlexGrid.Selection, C1.Win.C1FlexGrid.BorderStyleEnum.Raised); } private void btnTblDgnGridStyleInset_Click(object sender, EventArgs e) { MyFlexGrid.ChangeCellBorder(MyFlexGrid.Selection, C1.Win.C1FlexGrid.BorderStyleEnum.Inset); } private void btnTblDgnGridStyleGroove_Click(object sender, EventArgs e) { MyFlexGrid.ChangeCellBorder(MyFlexGrid.Selection, C1.Win.C1FlexGrid.BorderStyleEnum.Groove); } private void btnTblDgnGridStyleFillet_Click(object sender, EventArgs e) { MyFlexGrid.ChangeCellBorder(MyFlexGrid.Selection, C1.Win.C1FlexGrid.BorderStyleEnum.Fillet); } private void btnTblDgnGridStyleDotted_Click(object sender, EventArgs e) { MyFlexGrid.ChangeCellBorder(MyFlexGrid.Selection, C1.Win.C1FlexGrid.BorderStyleEnum.Dotted); } #endregion private void rbnBorderlistBox_SelectedIndexChanged(object sender, EventArgs e) { rbnBorderSelectionPanel.SelectedBorder = rbnBorderlistBox.SelectedLinePattern; } private void rbnBorderSelectionPanel_BordersChanged(object sender, EventArgs args) { //C1.Win.C1FlexGrid.CellRange cr = MyFlexGrid.GetEvenSelection(); MyFlexGrid.SetBorders(MyFlexGrid.Selection, rbnBorderSelectionPanel.TopBorder, rbnBorderSelectionPanel.InsideHorizontalBorder, rbnBorderSelectionPanel.BottomBorder, rbnBorderSelectionPanel.LeftBorder, rbnBorderSelectionPanel.InsideVerticalBorder, rbnBorderSelectionPanel.RightBorder); MyEditItem.Invalidate(); MyFlexGrid.Invalidate(); } private void btnTblNoBorder_Click(object sender, EventArgs e) { rbnBorderSelectionPanel.AllBorders = GridLinePattern.None; } private void btnTblOutline_Click(object sender, EventArgs e) { rbnBorderSelectionPanel.OutlineBorder = rbnBorderlistBox.SelectedLinePattern; } private void btnTblInside_Click(object sender, EventArgs e) { rbnBorderSelectionPanel.InsideBorders = rbnBorderlistBox.SelectedLinePattern; } private void rbnBorderlistBox_Resize(object sender, EventArgs e) { rbnBorderSelectionPanel.Size = rbnBorderlistBox.Size; _RibbonControl.Height = rbnBorderlistBox.Height + _RibbonControl.Height - _RibbonControl.ClientSize.Height; //_RibbonControl.Height = rbnBorderlistBox.Height + _RibbonControl.Height - _RibbonControl.ClientSize.Height; } #region Expand/Collaspe Ribbon // In MS Word, a Double Click of a ribbon tab will toggle (Expand/Collapse) the ribbon. // Once collapsed, a Single Click of a ribbon tab will temporarily expand the ribbon but does not push the text window // down to make room. Thus your edit cursor could end up behind the ribbon. // In our implementation of the ribbon interface, when we double click to collapse/expand the // ribbon, the QAT menu on the main form gets out of sync, so we need to handle this manually, turning off AutoExpand // on the ribbon control. (see StepTabRibbon() constructor) and issue an event to expand/collapse the ribbon. // As a result of turning off the AutoExpand, a single click is not recongized internally. // To get around this, we handle the single click event. // Our single click event will expand the ribbon tabs if needed but not temporarily. // Instead, it acts like a double click which is not the same a MS Word, but on the plus side, // it elimates the risk of the ribbon expanding on top of the current edit window. //----------------------------- // This is assigned the DoubleClick event on all of the ribbon tabs // Note that a single mouse click will expand the tabs if collapsed // Note too that a double click also fires the single click event // the "didSingleClick" variable handle this case private void ribbonTab_DoubleClick(object sender, EventArgs e) { if (TimeSpan.FromTicks(DateTime.Now.Ticks - _LastClick.Ticks).TotalMilliseconds > 500) { //SendKeys.Send("^{F1}"); // toggle expand/collapse ribbon tabs MyEditItem.MyStepPanel.MyStepTabPanel.MyDisplayTabControl.OnToggleRibbonExpanded(this, new EventArgs()); _LastDoubleClick = DateTime.Now; } } private DateTime _LastClick = DateTime.Now; private DateTime _LastDoubleClick = DateTime.Now; // This is assigned the Click event on all of the ribbon tabs // If the tabs are collapsed, then expand them on a single click of the tab private void ribbonTab_SingleClick(object sender, EventArgs e) { if ((!_RibbonControl.Expanded) && TimeSpan.FromTicks(DateTime.Now.Ticks - _LastDoubleClick.Ticks).TotalMilliseconds > 500) { //SendKeys.Send("^{F1}"); // Expand the ribbon tabs MyEditItem.MyStepPanel.MyStepTabPanel.MyDisplayTabControl.OnToggleRibbonExpanded(this, new EventArgs()); _LastClick = DateTime.Now; } } #endregion // Expand/Collapse Ribbon private void btnPasteText_Click(object sender, EventArgs e) { StartGridEditing(SelectionOption.End); _PastePlainTextOvrRide = true; btnPaste_Click(sender, e); } private void btnPasteStepText_Click(object sender, EventArgs e) { StartGridEditing(SelectionOption.End); _PasteStepTextOvrRide = true; btnPaste_Click(sender, e); } private void btnSaveChgId_Click(object sender, EventArgs e) { (this.Parent as StepTabPanel).MyDisplayTabControl.ChgId = txtBxChgId.Text; (this.Parent as StepTabPanel).MyDisplayTabControl.ItemsChangeIds.Remove(_MyEditItem.MyStepRTB.MyItemInfo.MyProcedure.ItemID); (this.Parent as StepTabPanel).MyDisplayTabControl.ItemsChangeIds.Add(_MyEditItem.MyStepRTB.MyItemInfo.MyProcedure.ItemID, txtBxChgId.Text); } } public enum E_FieldToEdit { StepText, Text, Number, PSI }; public class StepTabRibbonEventArgs : EventArgs { public StepTabRibbonEventArgs() { ; } public StepTabRibbonEventArgs(ItemInfo proc) { _Proc = proc; } private ItemInfo _Proc; public ItemInfo Proc { get { return _Proc; } set { _Proc = value; } } } public delegate void StepTabRibbonEvent(object sender, StepTabRibbonEventArgs args); }