From 0fafccf62cf26894013ace5429666ef22abeb51a Mon Sep 17 00:00:00 2001 From: John Date: Wed, 19 Jan 2011 21:53:01 +0000 Subject: [PATCH] --- .../Volian.Controls.Library/StepTabRibbon.cs | 310 +++++++++++++ .../StepTabRibbon.designer.cs | Bin 270060 -> 376028 bytes .../StepTabRibbon.resx | 28 +- .../VlnFlexGrid.Designer.cs | 10 +- PROMS/Volian.Controls.Library/VlnFlexGrid.cs | 407 +++++++++++------- .../Volian.Controls.Library/VlnFlexGrid.resx | 123 ++++++ 6 files changed, 717 insertions(+), 161 deletions(-) create mode 100644 PROMS/Volian.Controls.Library/VlnFlexGrid.resx diff --git a/PROMS/Volian.Controls.Library/StepTabRibbon.cs b/PROMS/Volian.Controls.Library/StepTabRibbon.cs index 42f71170..f3634693 100644 --- a/PROMS/Volian.Controls.Library/StepTabRibbon.cs +++ b/PROMS/Volian.Controls.Library/StepTabRibbon.cs @@ -8,6 +8,7 @@ using System.Windows.Forms; using System.IO; using System.Text.RegularExpressions; using VEPROMS.CSLA.Library; +using Accentra.Controls; namespace Volian.Controls.Library { @@ -315,6 +316,7 @@ namespace Volian.Controls.Library btnIndent.Enabled = setting; btnDelelete.Enabled = btnDelStep.Enabled = setting; btnSpell.Enabled = setting; + //rtabTableGridTools.Visible = setting; } private void SetButtonAndMenuEnabling(bool docontextmenus) { @@ -424,6 +426,10 @@ namespace Volian.Controls.Library // if on procedure, 'Delete' buttons should be disabled. btnDelelete.Enabled = btnDelStep.Enabled = ! MyItemInfo.IsProcedure; btnCpyStp.Enabled = !MyItemInfo.IsProcedure; + //if (rtabTableGridTools.Visible && rtabTableGridTools.Checked && !MyItemInfo.IsTable) + // rtabHome.Select(); + //rtabTableGridTools.Visible = MyItemInfo.IsTable; // turn on/off Table Design (Grid) ribbon tab grouping + // if on procedure or section, 'change type' & 'insert' buttons should be disabled. if (MyItemInfo.IsProcedure || MyItemInfo.IsSection) { @@ -497,6 +503,8 @@ namespace Volian.Controls.Library if (btnInsRNO.Enabled) GalleryForSubTypes(MyItemInfo.ActiveFormat.PlantFormat.FormatData.StepDataList.RNO, sd, btnInsRNO, 0, btnCMInsRNO, docontextmenus); btnInsTrans.Enabled = btnCMTransition.Enabled = btnInsRO.Enabled = btnCMRO.Enabled = true; + + //_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 @@ -1270,6 +1278,308 @@ namespace Volian.Controls.Library if (MyItemInfo == null) return; // if creating a pdf before rtb exists, return; 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; + DialogResult dr = tpdlg.ShowDialog(); + //tpdlg.Show(); + //while (tpdlg.Visible) + //{ + // Application.DoEvents(); + // System.Threading.Thread.Sleep(0); + //} + if (dr == DialogResult.OK) + { + // Creat a new grid + grd = new VlnFlexGrid(); + grd.Rows.Count = tpdlg.SelectedRows; + grd.Cols.Count = tpdlg.SelectedColumns; + } + 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) + { + VlnFlexGrid grd = new VlnFlexGrid(); // = rbtDefaultTable.Checked ? vlnFlexGrid2 : vlnFlexGrid3; + grd.ClipBoardCopyRow(); + } + + private void btnTblDgnCopyColumn_Click(object sender, EventArgs e) + { + VlnFlexGrid grd = new VlnFlexGrid(); // = rbtDefaultTable.Checked ? vlnFlexGrid2 : vlnFlexGrid3; + grd.ClipBoardCopyColumn(); + } + + private void btnTblDgnCopySelection_Click(object sender, EventArgs e) + { + VlnFlexGrid grd = new VlnFlexGrid(); // = rbtDefaultTable.Checked ? vlnFlexGrid2 : vlnFlexGrid3; + grd.ClipBoardCopySelection(); + } + + private void btnTblDgnPasteRowBefore_Click(object sender, EventArgs e) + { + // create new rows before current position and copy clipboard data + VlnFlexGrid grd = new VlnFlexGrid(); // = rbtDefaultTable.Checked ? vlnFlexGrid2 : vlnFlexGrid3; + grd.ClipBoardPasteRows(VlnFlexGrid.enmPastePos.Before); + } + + private void btnTblDgnPasteRowAfter_Click(object sender, EventArgs e) + { + // create new rows after current position and copy clipboard data + VlnFlexGrid grd = new VlnFlexGrid(); // = rbtDefaultTable.Checked ? vlnFlexGrid2 : vlnFlexGrid3; + grd.ClipBoardPasteRows(VlnFlexGrid.enmPastePos.After); + } + + private void btnTblDgnPasteReplaceRow_Click(object sender, EventArgs e) + { + // replace rows with current clipboard data starting as current row + VlnFlexGrid grd = new VlnFlexGrid(); // = rbtDefaultTable.Checked ? vlnFlexGrid2 : vlnFlexGrid3; + grd.ClipBoardPasteRows(VlnFlexGrid.enmPastePos.Replace); + } + + private void btnTblDgnPasteColumnBefore_Click(object sender, EventArgs e) + { + VlnFlexGrid grd = new VlnFlexGrid(); // = rbtDefaultTable.Checked ? vlnFlexGrid2 : vlnFlexGrid3; + grd.ClipBoardPasteColumns(VlnFlexGrid.enmPastePos.Before); + } + + private void btnTblDgnPasteColumnAfter_Click(object sender, EventArgs e) + { + VlnFlexGrid grd = new VlnFlexGrid(); // = rbtDefaultTable.Checked ? vlnFlexGrid2 : vlnFlexGrid3; + grd.ClipBoardPasteColumns(VlnFlexGrid.enmPastePos.After); + } + + private void btnTblDgnPasteColumnReplace_Click(object sender, EventArgs e) + { + VlnFlexGrid grd = new VlnFlexGrid(); //= rbtDefaultTable.Checked ? vlnFlexGrid2 : vlnFlexGrid3; + grd.ClipBoardPasteColumns(VlnFlexGrid.enmPastePos.Replace); + } + + private void btnTblDgnPasteIntoSelection_Click(object sender, EventArgs e) + { + VlnFlexGrid grd = new VlnFlexGrid(); // = rbtDefaultTable.Checked ? vlnFlexGrid2 : vlnFlexGrid3; + grd.ClipBoardPasteIntoSelection(); + } + #endregion + #region Table Grid Delete + private void btnTblDgnDeleteRow_Click(object sender, EventArgs e) + { + VlnFlexGrid grd = new VlnFlexGrid(); //= rbtDefaultTable.Checked ? vlnFlexGrid2 : vlnFlexGrid3; + grd.RemoveSelectedRow(); + } + + private void btnTblDgnDeleteColumn_Click(object sender, EventArgs e) + { + VlnFlexGrid grd = new VlnFlexGrid(); // = rbtDefaultTable.Checked ? vlnFlexGrid2 : vlnFlexGrid3; + grd.RemoveSelectedColumn(); + } + + private void btnTblDgnDeleteSelected_Click(object sender, EventArgs e) + { + VlnFlexGrid grd = new VlnFlexGrid(); // = rbtDefaultTable.Checked ? vlnFlexGrid2 : vlnFlexGrid3; + grd.RemoveSelectedCells(); + } + #endregion + #region Table Grid Cell Style + + private void cpHighlight_SelectedColorChanged(object sender, EventArgs e) + { + VlnFlexGrid grd = new VlnFlexGrid(); + string strColor = string.Format("{0}, {1}, {2};", cpTblDgnHighlight.SelectedColor.R, cpTblDgnHighlight.SelectedColor.G, cpTblDgnHighlight.SelectedColor.B); + grd.ChangeBackgroundColor(strColor); + } + + private void btnTblDgnAlignLeft_Click(object sender, EventArgs e) + { + VlnFlexGrid grd = new VlnFlexGrid(); ; // = rbtDefaultTable.Checked ? vlnFlexGrid2 : vlnFlexGrid3; + grd.RTFTextAlignment(grd.Selection, HorizontalAlignment.Left); + } + + private void btnTblDgnAlignCentered_Click(object sender, EventArgs e) + { + VlnFlexGrid grd = new VlnFlexGrid(); ; // = rbtDefaultTable.Checked ? vlnFlexGrid2 : vlnFlexGrid3; + grd.RTFTextAlignment(grd.Selection, HorizontalAlignment.Center); + } + + private void btnTblDgnAlignRight_Click(object sender, EventArgs e) + { + VlnFlexGrid grd = new VlnFlexGrid(); ; // = rbtDefaultTable.Checked ? vlnFlexGrid2 : vlnFlexGrid3; + grd.RTFTextAlignment(grd.Selection, HorizontalAlignment.Right); + } + #endregion + #region Table Grid Merge/Split + private void btnTblDgnSplitCells_ToRows_Click(object sender, EventArgs e) + { + VlnFlexGrid grd = new VlnFlexGrid(); // = rbtDefaultTable.Checked ? vlnFlexGrid2 : vlnFlexGrid3; //GetActiveGrid(); + grd.SplitSelection(false); + } + #endregion + + private void btnTblDgnSplitCellsToCols_Click(object sender, EventArgs e) + { + VlnFlexGrid grd = new VlnFlexGrid(); // = rbtDefaultTable.Checked ? vlnFlexGrid2 : vlnFlexGrid3; //GetActiveGrid(); + grd.SplitSelection(true); + } + + private void btnTblDgnMergeCells_Click(object sender, EventArgs e) + { + VlnFlexGrid grd = new VlnFlexGrid(); // = rbtDefaultTable.Checked ? vlnFlexGrid2 : vlnFlexGrid3; //GetActiveGrid(); + grd.MergeSelection(); + } + #endregion + #region Table Grid Design + private void btnTblDgnInsertRowBefore_Click(object sender, EventArgs e) + { + VlnFlexGrid grd = new VlnFlexGrid(); // = rbtDefaultTable.Checked ? vlnFlexGrid2 : vlnFlexGrid3; + grd.InsertRowBefore(); + } + + private void btnTblDgnInsertRowAfter_Click(object sender, EventArgs e) + { + VlnFlexGrid grd = new VlnFlexGrid(); // = rbtDefaultTable.Checked ? vlnFlexGrid2 : vlnFlexGrid3; + grd.InsertRowAfter(); + } + + private void btnTblDgnInsertColumnBefore_Click(object sender, EventArgs e) + { + VlnFlexGrid grd = new VlnFlexGrid(); // = rbtDefaultTable.Checked ? vlnFlexGrid2 : vlnFlexGrid3; + grd.InsertColumnBefore(); + } + + private void btnTblDgnInsertColumnAfter_Click(object sender, EventArgs e) + { + VlnFlexGrid grd = new VlnFlexGrid(); // = rbtDefaultTable.Checked ? vlnFlexGrid2 : vlnFlexGrid3; + grd.InsertColumnAfter(); + } + + private void btnTblDgnAdjustSize_Click(object sender, EventArgs e) + { + VlnFlexGrid grd = new VlnFlexGrid();// rbtDefaultTable.Checked ? vlnFlexGrid2 : vlnFlexGrid3; + if (grd.Cols.Fixed == 0) + { + // set all the rows and columns to Fixed so that user can adjust the row/column size + grd.Cols.Fixed = grd.Cols.Count; + grd.Rows.Fixed = grd.Rows.Count; + } + else + { + // set grid back to "normal" mode + grd.Cols.Fixed = 0; + grd.Rows.Fixed = 0; + } + } + #endregion + #region Table Grid Border + private void btnTblDgnTableBorderNone_Click(object sender, EventArgs e) + { + VlnFlexGrid grd = new VlnFlexGrid(); // = rbtDefaultTable.Checked ? vlnFlexGrid2 : vlnFlexGrid3; + grd.SetTableBorder(C1.Win.C1FlexGrid.Util.BaseControls.BorderStyleEnum.None); + } + + private void btnTblDgnTableBorderFixedSingle_Click(object sender, EventArgs e) + { + VlnFlexGrid grd = new VlnFlexGrid(); // = rbtDefaultTable.Checked ? vlnFlexGrid2 : vlnFlexGrid3; + grd.SetTableBorder(C1.Win.C1FlexGrid.Util.BaseControls.BorderStyleEnum.FixedSingle); + } + + private void btnTblDgnTableBorderFixed3D_Click(object sender, EventArgs e) + { + VlnFlexGrid grd = new VlnFlexGrid(); // = rbtDefaultTable.Checked ? vlnFlexGrid2 : vlnFlexGrid3; + grd.SetTableBorder(C1.Win.C1FlexGrid.Util.BaseControls.BorderStyleEnum.Fixed3D); + } + + private void btnTblDgnTableBorderLight3D_Click(object sender, EventArgs e) + { + VlnFlexGrid grd = new VlnFlexGrid(); // = rbtDefaultTable.Checked ? vlnFlexGrid2 : vlnFlexGrid3; + grd.SetTableBorder(C1.Win.C1FlexGrid.Util.BaseControls.BorderStyleEnum.Light3D); + } + + private void btnTblDgnTableBorderXPThemes_Click(object sender, EventArgs e) + { + VlnFlexGrid grd = new VlnFlexGrid(); // = rbtDefaultTable.Checked ? vlnFlexGrid2 : vlnFlexGrid3; + grd.SetTableBorder(C1.Win.C1FlexGrid.Util.BaseControls.BorderStyleEnum.XpThemes); + } + #endregion + #region Table Grid Grid Style + private void btnTblDgnGridStyleNone_Click(object sender, EventArgs e) + { + VlnFlexGrid grd = new VlnFlexGrid();//rbtDefaultTable.Checked ? vlnFlexGrid2 : vlnFlexGrid3; + grd.ChangeCellBorder(grd.Selection, C1.Win.C1FlexGrid.BorderStyleEnum.None); + + } + + private void btnTblDgnGridStyleFlat_Click(object sender, EventArgs e) + { + VlnFlexGrid grd = new VlnFlexGrid(); // = rbtDefaultTable.Checked ? vlnFlexGrid2 : vlnFlexGrid3; + grd.ChangeCellBorder(grd.Selection, C1.Win.C1FlexGrid.BorderStyleEnum.Flat); + } + + private void btnTblDgnGridStyleDouble_Click(object sender, EventArgs e) + { + VlnFlexGrid grd = new VlnFlexGrid(); // = rbtDefaultTable.Checked ? vlnFlexGrid2 : vlnFlexGrid3; + grd.ChangeCellBorder(grd.Selection, C1.Win.C1FlexGrid.BorderStyleEnum.Double); + } + + private void btnTblDgnGridStyleRaised_Click(object sender, EventArgs e) + { + VlnFlexGrid grd = new VlnFlexGrid(); // = rbtDefaultTable.Checked ? vlnFlexGrid2 : vlnFlexGrid3; + grd.ChangeCellBorder(grd.Selection, C1.Win.C1FlexGrid.BorderStyleEnum.Raised); + } + + private void btnTblDgnGridStyleInset_Click(object sender, EventArgs e) + { + VlnFlexGrid grd = new VlnFlexGrid(); // = rbtDefaultTable.Checked ? vlnFlexGrid2 : vlnFlexGrid3; + grd.ChangeCellBorder(grd.Selection, C1.Win.C1FlexGrid.BorderStyleEnum.Inset); + } + + private void btnTblDgnGridStyleGroove_Click(object sender, EventArgs e) + { + VlnFlexGrid grd = new VlnFlexGrid(); // = rbtDefaultTable.Checked ? vlnFlexGrid2 : vlnFlexGrid3; + grd.ChangeCellBorder(grd.Selection, C1.Win.C1FlexGrid.BorderStyleEnum.Groove); + } + + private void btnTblDgnGridStyleFillet_Click(object sender, EventArgs e) + { + VlnFlexGrid grd = new VlnFlexGrid(); // = rbtDefaultTable.Checked ? vlnFlexGrid2 : vlnFlexGrid3; + grd.ChangeCellBorder(grd.Selection, C1.Win.C1FlexGrid.BorderStyleEnum.Fillet); + } + + private void btnTblDgnGridStyleDotted_Click(object sender, EventArgs e) + { + VlnFlexGrid grd = new VlnFlexGrid(); ; // = rbtDefaultTable.Checked ? vlnFlexGrid2 : vlnFlexGrid3; + grd.ChangeCellBorder(grd.Selection, C1.Win.C1FlexGrid.BorderStyleEnum.Dotted); + } + #endregion + } public enum E_FieldToEdit { StepText, Text, Number }; public class StepTabRibbonEventArgs : EventArgs diff --git a/PROMS/Volian.Controls.Library/StepTabRibbon.designer.cs b/PROMS/Volian.Controls.Library/StepTabRibbon.designer.cs index e9880373946657c49c97aa8f034b6bff308d61b6..c754b574f977c9eaf71f04530d90d38730477237 100644 GIT binary patch delta 33704 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 diff --git a/PROMS/Volian.Controls.Library/StepTabRibbon.resx b/PROMS/Volian.Controls.Library/StepTabRibbon.resx index 551f0683..b1b2c1ad 100644 --- a/PROMS/Volian.Controls.Library/StepTabRibbon.resx +++ b/PROMS/Volian.Controls.Library/StepTabRibbon.resx @@ -120,14 +120,20 @@ 17, 17 + + Will delete the current step and any of its substseps, RNOs, etc. Checks whether any transitions are pointing to this step from outside the step and if found, does not allow delete, but prompts user with list of transitions. + - + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAAScQAA - EnEB89x6jgAAAIBJREFUOE/FU9ESgCAIy///aAMU0DDYSxecV6KOObB1squRs3VyNY1Z4OWHATYTFHI1 - gp0RXdm+vlGoLC5zPowCHDeiAGkmhMHnAEFpDwwRjcFKV++/6xyLVgEk2UfhnuVTNsVBa5Njk8xV6c1k - hNwGBmaHAP5n4G8q6gFdoZLjBpE7j5KJdaRlAAAAAElFTkSuQmCC + EnEB89x6jgAAASBJREFUOE+lU7ERwjAMFCOwQmbJCKFIQQtFGorccS5oUnApU9B4hayQFViBFVgh/Ecm + Z8cmcAd3wlEkvaV/ZTOOo/z1I8DbRIoBtvXfLeJ2GZuLtZMCf9c2BYDYgfEfACxATBYlSvEUOX0FaEUI + YPtF62ft7rY+go5hHgrS7NxYWy2uCRzxE3DgCnKRjskP56Orkv45yU2asKMbpcPJ2839ozKfJTMgbSKU + t0ekztKvaA7ibixOyvoLADqYiGMXHIUWy7uQa+cSuZGUDb7FswWYwclx9oES/hqzGAmV1UTdSPiQ8Uqw + DCdiNtgFHwAtVpjbIvESaA4ZqUrP2xELFPEBUMwlqmH7iDiNNQAph2DskIMaIF16YfCVIoZOmtyveQF9 + 2CVVWYKhQwAAAABJRU5ErkJggg== @@ -180,19 +186,13 @@ hNwGBmaHAP5n4G8q6gFdoZLjBpE7j5KJdaRlAAAAAElFTkSuQmCC - - Will delete the current step and any of its substseps, RNOs, etc. Checks whether any transitions are pointing to this step from outside the step and if found, does not allow delete, but prompts user with list of transitions. - - + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAAScQAA - EnEB89x6jgAAASBJREFUOE+lU7ERwjAMFCOwQmbJCKFIQQtFGorccS5oUnApU9B4hayQFViBFVgh/Ecm - Z8cmcAd3wlEkvaV/ZTOOo/z1I8DbRIoBtvXfLeJ2GZuLtZMCf9c2BYDYgfEfACxATBYlSvEUOX0FaEUI - YPtF62ft7rY+go5hHgrS7NxYWy2uCRzxE3DgCnKRjskP56Orkv45yU2asKMbpcPJ2839ozKfJTMgbSKU - t0ekztKvaA7ibixOyvoLADqYiGMXHIUWy7uQa+cSuZGUDb7FswWYwclx9oES/hqzGAmV1UTdSPiQ8Uqw - DCdiNtgFHwAtVpjbIvESaA4ZqUrP2xELFPEBUMwlqmH7iDiNNQAph2DskIMaIF16YfCVIoZOmtyveQF9 - 2CVVWYKhQwAAAABJRU5ErkJggg== + EnEB89x6jgAAAIBJREFUOE/FU9ESgCAIy///aAMU0DDYSxecV6KOObB1squRs3VyNY1Z4OWHATYTFHI1 + gp0RXdm+vlGoLC5zPowCHDeiAGkmhMHnAEFpDwwRjcFKV++/6xyLVgEk2UfhnuVTNsVBa5Njk8xV6c1k + hNwGBmaHAP5n4G8q6gFdoZLjBpE7j5KJdaRlAAAAAElFTkSuQmCC diff --git a/PROMS/Volian.Controls.Library/VlnFlexGrid.Designer.cs b/PROMS/Volian.Controls.Library/VlnFlexGrid.Designer.cs index 2b8fe8cd..ba4d2fec 100644 --- a/PROMS/Volian.Controls.Library/VlnFlexGrid.Designer.cs +++ b/PROMS/Volian.Controls.Library/VlnFlexGrid.Designer.cs @@ -28,7 +28,15 @@ namespace Volian.Controls.Library /// private void InitializeComponent() { - components = new System.ComponentModel.Container(); + ((System.ComponentModel.ISupportInitialize)(this)).BeginInit(); + this.SuspendLayout(); + // + // VlnFlexGrid + // + this.Rows.DefaultSize = 19; + ((System.ComponentModel.ISupportInitialize)(this)).EndInit(); + this.ResumeLayout(false); + } #endregion diff --git a/PROMS/Volian.Controls.Library/VlnFlexGrid.cs b/PROMS/Volian.Controls.Library/VlnFlexGrid.cs index 2d48cdda..bbe1f6e2 100644 --- a/PROMS/Volian.Controls.Library/VlnFlexGrid.cs +++ b/PROMS/Volian.Controls.Library/VlnFlexGrid.cs @@ -16,6 +16,8 @@ namespace Volian.Controls.Library { private TableCellEditor _tableCellEditor; private TableClipBoardFuncts _clpbrdCpyPste; + private int _minSplitColWidth = 10; + private int _minSplitRowHeight = 20; #region Grid Initialize @@ -54,7 +56,7 @@ namespace Volian.Controls.Library this.Cols.Fixed = 0; this.DrawMode = DrawModeEnum.OwnerDraw; - this.ScrollBars = ScrollBars.None; + this.ScrollBars = ScrollBars.None; // grid styles this.Styles.EmptyArea.BackColor = Color.Transparent; @@ -62,7 +64,7 @@ namespace Volian.Controls.Library this.Styles.Normal.Border.Color = Color.Black; this.Styles.Normal.TextAlign = C1.Win.C1FlexGrid.TextAlignEnum.LeftCenter; - SetupCellStyles(); + //SetupCellStyles(); this.FocusRect = FocusRectEnum.Solid; this.Styles.Highlight.BackColor = Color.LightCyan; @@ -125,26 +127,28 @@ namespace Volian.Controls.Library #region Grid and Cell Styles - //public void CellBackgroundYellow() - //{ - // CellRange cr = this.Selection; - // cr.Style = this.Styles["Yellow"]; - //} public void ChangeBackgroundColor(string bckgndColor) { CellRange cr = this.Selection; - string stylename = string.Format("R{0}C{1}Style", cr.r1, cr.c1); if (!bckgndColor.EndsWith(";")) bckgndColor+=";"; string strBckgndColor = string.Format("BackColor:{0}", bckgndColor); - CellStyle cs = this.Styles.Add(stylename, cr.Style); - cs.ParseString(strBckgndColor); - cr.Style = cs; + + for (int rw = cr.r1; rw <= cr.r2; rw++) + for (int cl = cr.c1; cl <= cr.c2; cl++) + { + CellRange tmp = this.GetCellRange(rw, cl, rw, cl); + string StyleName = string.Format("R{0}C{1}Style", rw, cl); + CellStyle cs = this.Styles.Add(StyleName, tmp.Style); + cs.ParseString(strBckgndColor); + tmp.Style = cs; + } } public void ToggleCellTextAlignment() { + // only used in test program CellRange cr = this.Selection; StepRTB srtb = new StepRTB(); srtb.Rtf = this.GetCellRTFString(cr.r1, cr.c1); @@ -157,119 +161,71 @@ namespace Volian.Controls.Library this.PutCellRTFString(cr.r1, cr.c1, srtb.Rtf); } - public void TableBorderNone() + public void RTFTextAlignment(CellRange cr, HorizontalAlignment ha) { - this.BorderStyle = C1.Win.C1FlexGrid.Util.BaseControls.BorderStyleEnum.None; + StepRTB srtb = new StepRTB(); + for (int rw = cr.r1; rw <= cr.r2; rw++) + for (int cl = cr.c1; cl <= cr.c2; cl++) + { + srtb.Rtf = this.GetCellRTFString(rw, cl); + srtb.SelectAll(); + srtb.SelectionAlignment = ha; + this.PutCellRTFString(rw, cl, srtb.Rtf); + } + } + + + public void SetTableBorder(C1.Win.C1FlexGrid.Util.BaseControls.BorderStyleEnum border) + { + this.BorderStyle = border; this.AdjustGridControlSize(); } - public void TableBorderFixedSingle() + + public void ChangeCellBorder(CellRange cr, BorderStyleEnum newBorder) { - this.BorderStyle = C1.Win.C1FlexGrid.Util.BaseControls.BorderStyleEnum.FixedSingle; - this.AdjustGridControlSize(); + for (int rw = cr.r1; rw <= cr.r2; rw++) + for (int col = cr.c1; col <= cr.c2; col++) + { + CellRange tmp = this.GetCellRange(rw, col, rw, col); + string StyleName = string.Format("R{0}C{1}Style", rw, col); + CellStyle cs = this.Styles.Add(StyleName, tmp.Style); + cs.Border.Style = newBorder; + tmp.Style = cs; + } } - public void TableBorderFixed3d() - { - this.BorderStyle = C1.Win.C1FlexGrid.Util.BaseControls.BorderStyleEnum.Fixed3D; - this.AdjustGridControlSize(); - } + + //public void SetupCellStyles() + //{ + // //CellStyle cs; - public void TableBorderLight3D() - { - this.BorderStyle = C1.Win.C1FlexGrid.Util.BaseControls.BorderStyleEnum.Light3D; - this.AdjustGridControlSize(); - } - - public void TableBorderXpThemes() - { - this.BorderStyle = C1.Win.C1FlexGrid.Util.BaseControls.BorderStyleEnum.XpThemes; - this.AdjustGridControlSize(); - } - - private CellRange GetSelectedCellRange() - { - return this.GetCellRange(this.Selection.TopRow, this.Selection.LeftCol, this.Selection.BottomRow, this.Selection.RightCol); - } - - public void SelectedCellsBorderNone() - { - CellRange cr = GetSelectedCellRange(); - cr.Style = this.Styles["None"]; - } - - public void SelectedCellsBorderFlat() - { - CellRange cr = this.GetCellRange(this.Selection.TopRow, this.Selection.LeftCol, this.Selection.BottomRow, this.Selection.RightCol); - cr.Style = this.Styles["Flat"]; - } - - public void SelectedCellsBorderDouble() - { - CellRange cr = this.GetCellRange(this.Selection.TopRow, this.Selection.LeftCol, this.Selection.BottomRow, this.Selection.RightCol); - cr.Style = this.Styles["Double"]; - } - - public void SelectedCellsBorderRaised() - { - CellRange cr = this.GetCellRange(this.Selection.TopRow, this.Selection.LeftCol, this.Selection.BottomRow, this.Selection.RightCol); - cr.Style = this.Styles["Raised"]; - } - - public void SelectedCellsBorderInset() - { - CellRange cr = this.GetCellRange(this.Selection.TopRow, this.Selection.LeftCol, this.Selection.BottomRow, this.Selection.RightCol); - cr.Style = this.Styles["Inset"]; - } - - public void SelectedCellsBorderGroove() - { - CellRange cr = this.GetCellRange(this.Selection.TopRow, this.Selection.LeftCol, this.Selection.BottomRow, this.Selection.RightCol); - cr.Style = this.Styles["Groove"]; - } - - public void SelectedCellsBorderFillet() - { - CellRange cr = this.GetCellRange(this.Selection.TopRow, this.Selection.LeftCol, this.Selection.BottomRow, this.Selection.RightCol); - cr.Style = this.Styles["Fillet"]; - } - - public void SelectedCellsBorderDotted() - { - CellRange cr = this.GetCellRange(this.Selection.TopRow, this.Selection.LeftCol, this.Selection.BottomRow, this.Selection.RightCol); - cr.Style = this.Styles["Dotted"]; - } - - public void SetupCellStyles() - { - CellStyle cs; - - //cs = this.Styles.Add("Dotted"); - //cs.Border.Style = BorderStyleEnum.Dotted; - //cs = this.Styles.Add("Double"); - //cs.Border.Style = BorderStyleEnum.Double; - //cs = this.Styles.Add("Fillet"); - //cs.Border.Style = BorderStyleEnum.Fillet; - //cs = this.Styles.Add("Flat"); - //cs.Border.Style = BorderStyleEnum.Flat; - //cs = this.Styles.Add("Groove"); - //cs.Border.Style = BorderStyleEnum.Groove; - //cs = this.Styles.Add("Inset"); - //cs.Border.Style = BorderStyleEnum.Inset; - //cs = this.Styles.Add("None"); - //cs.Border.Style = BorderStyleEnum.None; - //cs = this.Styles.Add("Raised"); - //cs.Border.Style = BorderStyleEnum.Raised; - //cs = this.Styles.Add("CenterRight"); - //cs.TextAlign = TextAlignEnum.RightCenter; //.LeftCenter; // this is being ignored - probably due to RTF conversion - //cs = this.Styles.Add("Yellow"); - //cs.BackColor = Color.Yellow; - //cs = this.Styles.Add("Margins"); - //cs.Margins.Bottom = 5; - //cs.Margins.Top = 10; - //cs.Margins.Left = 15; - //cs.Margins.Right = 20; - } + // //cs = this.Styles.Add("Dotted"); + // //cs.Border.Style = BorderStyleEnum.Dotted; + // //cs = this.Styles.Add("Double"); + // //cs.Border.Style = BorderStyleEnum.Double; + // //cs = this.Styles.Add("Fillet"); + // //cs.Border.Style = BorderStyleEnum.Fillet; + // //cs = this.Styles.Add("Flat"); + // //cs.Border.Style = BorderStyleEnum.Flat; + // //cs = this.Styles.Add("Groove"); + // //cs.Border.Style = BorderStyleEnum.Groove; + // //cs = this.Styles.Add("Inset"); + // //cs.Border.Style = BorderStyleEnum.Inset; + // //cs = this.Styles.Add("None"); + // //cs.Border.Style = BorderStyleEnum.None; + // //cs = this.Styles.Add("Raised"); + // //cs.Border.Style = BorderStyleEnum.Raised; + // //cs = this.Styles.Add("CenterRight"); + // //cs.TextAlign = TextAlignEnum.RightCenter; //.LeftCenter; // this is being ignored - probably due to RTF conversion + // //cs = this.Styles.Add("Yellow"); + // //cs.BackColor = Color.Yellow; + // //cs = this.Styles.Add("Margins"); + // //cs.Margins.Bottom = 5; + // //cs.Margins.Top = 10; + // //cs.Margins.Left = 15; + // //cs.Margins.Right = 20; + //} #endregion //Grid and Cell Styles #region Grid Size Adjustments @@ -543,19 +499,93 @@ namespace Volian.Controls.Library public void MergeSelection() { - //string tstr = ""; - //C1.Win.C1FlexGrid.CellRange sel = this.Selection; - //tstr = sel.Clip; // clip hold the data for the selected cells (used for un-merge) this.MergedRanges.Add(this.Selection); this.Invalidate(); } - public void SplitSelection() + public void SplitSelection(bool bSplitCols) { C1.Win.C1FlexGrid.CellRange sel = this.GetMergedRange(this.Selection.r1, this.Selection.c1); if (this.MergedRanges.Contains(sel)) this.MergedRanges.Remove(sel); - this.Invalidate(); + else //split cells + { + if (bSplitCols) + SplitSelectionColumns(); + else + SplitSelectionRows(); + } + this.Refresh(); + this.AdjustGridControlSize(); + } + + private void SplitSelectionColumns() + { + CellRange cr = this.Selection; + int numSelCols = (cr.c2 - cr.c1) + 1; + // for each column in the selection, add a new column + for (int c = cr.c2; c >= cr.c1; c--) + InsertColumnAfter(); + // include new columns in selection + this.Select(cr.r1, cr.c1, cr.r2, cr.c2 + numSelCols); + cr = this.Selection; + for (int r = 0; r < this.Rows.Count; r++) + for (int c = cr.c1; c <= cr.c2; c += 2) + { + if (!this.IsCellSelected(r, c)) + { + //this.Select(r, c, r, c + 1); + CellRange tcr = this.GetCellRange(r, c, r, c+1); + this.MergedRanges.Add(tcr); + } + } + //this.Select(cr); + // Adjust selected column widths + for (int c = cr.c1; c <= cr.c2; c++) + { + int recWidth = this.GetCellRect(cr.r1, c).Width; + this.Cols[c].Width = Math.Max(recWidth / 2, _minSplitColWidth); + //Console.WriteLine("Cell[{0},{1}].Width = {2}", cr.r1, c, recWidth); + } + } + + private void SplitSelectionRows() + { + CellRange cr = this.Selection; + int numSelRows = (cr.r2 - cr.r1) + 1; + //Console.WriteLine("numSelRows = {0}", numSelRows); + //Console.WriteLine("Inital Selection [{0},{1}] - [{2},{3}]", cr.r1, cr.c1, cr.r2, cr.c2); + // for each row in the selection, add a new row + for (int r = cr.r2; r >= cr.r1; r--) + { + //Console.WriteLine("Inserted new Row at [{0},{1}]", r, cr.c1); + InsertRowAfter(); + } + // include new rows in selection + this.Select(cr.r1, cr.c1, cr.r2 + numSelRows, cr.c2); + cr = this.Selection; + //Console.WriteLine(" After Insert [{0},{1}] - [{2},{3}]", cr.r1, cr.c1, cr.r2, cr.c2); + for (int c = 0; c < this.Cols.Count; c++) + for (int r = cr.r1; r <= cr.r2; r += 2) + { + if (!this.IsCellSelected(r, c)) + { + CellRange tcr = this.GetCellRange(r, c, r + 1, c); + this.MergedRanges.Add(tcr); + //Console.WriteLine("cellrange {0}", tcr); + //Console.WriteLine("merge [{0},{1}] - [{2},{3}]", r, c, r + 1, c); + } + } + // Adjust selected Row Heights + for (int r = cr.r1; r <= cr.r2; r++) + { + int recHeight = this.GetCellRect(r, cr.c1).Height; + this.Rows[r].Height = Math.Max(recHeight / 2, _minSplitRowHeight); + //Console.WriteLine("Cell[{0},{1}].Height = {2}", r, cr.c1, recHeight); + } + + //foreach (CellRange crng in this.MergedRanges) + // Console.WriteLine("merge ranges [{0},{1}] - [{2},{3}]", crng.r1, crng.c1, crng.r2, crng.c2); } private void AdjustMergedRows(int row, bool above, bool removing) @@ -740,11 +770,18 @@ namespace Volian.Controls.Library private int GetRowInsertPosition(Boolean before) { int rtnrow; - CellRange cr = this.Selection; + CellRange selcr = this.Selection; + CellRange cr = selcr; int idx = this.MergedRanges.IndexOf(cr.r1, cr.c2); if (idx > -1) cr = this.MergedRanges[idx]; // we want first or last row in merge range rtnrow = (before) ? cr.r1 : cr.r2; + // The following is an adjustment needed when we are copying an entire row that includes some merged cells + if (selcr.c1 != selcr.c2) + { + while (!before && rtnrow > selcr.r2) rtnrow--; + while (before && rtnrow < selcr.r2) rtnrow++; + } return rtnrow; } @@ -752,12 +789,18 @@ namespace Volian.Controls.Library private int GetColInsertPosition(Boolean before) { int rtncol; - CellRange cr = this.Selection; + CellRange selcr = this.Selection; + CellRange cr = selcr; int idx = this.MergedRanges.IndexOf(cr.r1, cr.c2); if (idx > -1) cr = this.MergedRanges[idx]; // we want the first of last col in merge range rtncol = (before) ? cr.c1 : cr.c2; - + // The following is an adjustment needed when we are copying an entire column that includes some merged cells + if (selcr.r1 != selcr.r2) + { + while (!before && rtncol > selcr.c2) rtncol--; + while (before && rtncol < selcr.c2) rtncol++; + } return rtncol; } @@ -765,6 +808,8 @@ namespace Volian.Controls.Library { int newcol = this.GetColInsertPosition(true); this.Cols.Insert(newcol); + // set new column width to same width as column from where it was inserted + this.Cols[newcol].Width = this.Cols[newcol + 1].Width; this.AdjustMergedColumns(newcol, true, false); this.AdjustGridControlSize(); } @@ -776,6 +821,8 @@ namespace Volian.Controls.Library this.Cols.Add(1); else this.Cols.Insert(colidx + 1); + // set new column width to same width as column from where it was inserted + this.Cols[colidx + 1].Width = this.Cols[colidx].Width; this.AdjustMergedColumns(colidx + 1, false, false); this.AdjustGridControlSize(); } @@ -784,6 +831,8 @@ namespace Volian.Controls.Library { int newrow = this.GetRowInsertPosition(true); this.Rows.Insert(newrow); + // set new row Height to same heidht as row from where it was inserted + this.Rows[newrow].Height = this.Rows[newrow+1].Height; this.AdjustMergedRows(newrow, true, false); this.AdjustGridControlSize(); } @@ -795,6 +844,8 @@ namespace Volian.Controls.Library this.Rows.Add(1); else this.Rows.Insert(rowidx + 1); + // set new row Height to same heidht as row from where it was inserted + this.Rows[rowidx + 1].Height = this.Rows[rowidx].Height; this.AdjustMergedRows(rowidx + 1, false, false); this.AdjustGridControlSize(); } @@ -978,6 +1029,11 @@ namespace Volian.Controls.Library if (aryCellList != null && aryCellList.Count > 0) { + // Since we're pasting an entire row, make sure the current selection includes + // all the columns to ensure proper logic path when inserting a new (empty) row + this.SelectionMode = SelectionModeEnum.Row; + this.Select(this.Selection.r1, 0, this.Selection.r2, this.Cols.Count - 1, true); + this.SelectionMode = SelectionModeEnum.Default; // get row/column starting position in which new rows will be added int startrow = this.Selection.r1 + ((pp == enmPastePos.After) ? 1 : 0); int startcol = this.Selection.c1; @@ -1004,19 +1060,24 @@ namespace Volian.Controls.Library if (aryCellList != null && aryCellList.Count > 0) { + // Since we're pasting an entire column, make sure the current selection includes + // all the rows to ensure proper logic path when inserting a new (empty) column + this.SelectionMode = SelectionModeEnum.Column; + this.Select(0, this.Selection.c1, this.Rows.Count - 1, this.Selection.c2, true); + this.SelectionMode = SelectionModeEnum.Default; // get row/column starting position in which new rows will be added int startrow = 0;//grd.Selection.r1+((pp == enmPastePos.After) ? 1 : 0); int startcol = this.Selection.c1 + ((pp == enmPastePos.After) ? 1 : 0); - // get the number of rows needed based on what was save to the clipboard + // get the number of columns needed based on what was save to the clipboard int numcols = Math.Max(1, (aryCellList.Count / this.Rows.Count)); - // insert that number of new rows. - if (pp != enmPastePos.Replace) // insert new rows before or after + // insert that number of new columns. + if (pp != enmPastePos.Replace) // insert new columns before or after for (int c = 0; c < numcols; c++) - if (pp == enmPastePos.After) // create new rows after + if (pp == enmPastePos.After) // create new columns after this.InsertColumnAfter(); else this.InsertColumnBefore(); - // copy each grid cell text (aryCellList) into the newly inserted rows + // copy each grid cell text (aryCellList) into the newly inserted colmns this.CopyTextFromCellRange(aryCellList, startrow, startcol, startrow + this.Rows.Count - 1, startcol + numcols - 1); this.AdjustGridControlSize(); } @@ -1417,6 +1478,22 @@ namespace Volian.Controls.Library } #endregion //Bug Work Around + + //public void CenterTheCellText() + //{ + // // Cannot use this type of text allignment with RTF text cells + // CellRange cr = this.Selection; + // for (int rw = cr.r1; rw <= cr.r2; rw++) + // for (int col = cr.c1; col <= cr.c2; col++) + // { + // CellRange tmp = this.GetCellRange(rw, col, rw, col); + // string StyleName = string.Format("R{0}C{1}Style", rw, col); + // CellStyle cs = this.Styles.Add(StyleName, tmp.Style); + // cs.TextAlign = TextAlignEnum.CenterCenter; + // tmp.Style = cs; + // } + + //} } #region RTF Class for Cell rendering class RTF : StepRTB //RichTextBox @@ -1811,6 +1888,7 @@ namespace Volian.Controls.Library // Clip get the value (text) of all the cells in the selected range // This is saved as one RTF string. Clipboard.SetDataObject(cr.Clip, true); // the "true" make the copy persistent + //Console.WriteLine("\nClip: '{0}' \n'{1}'", cr.Clip,cr.DataDisplay); } public ArrayList Get() @@ -1829,40 +1907,77 @@ namespace Volian.Controls.Library // This function will separate each cell text and place them in an array. // This allow the clipboard information to be pasted independently from // how it was selected. - + + // Bug fix: the CellRange.Clip (see cr.clip in the Put() function above) is replacing + // new lines with spaces. We need to put them back. + instr = instr.Replace(@"}} \", "}}\r\n\\"); string tstr = ""; // this will contain the parsed out cell text ArrayList arylstCellStrings = new ArrayList(); int sidx = 0; // start index int tidx = 0; if (instr != null) { - int idx = instr.IndexOf("\r\n\t"); // cell boarder - if (idx < 0) idx = instr.IndexOf("\r\n\r"); // new line (needed for multiple lines in one cell) + int idx = instr.IndexOf(@"{\rtf",sidx+1); // cell boarder while (idx > 0) { tstr = instr.Substring(sidx, idx - sidx); - tidx = tstr.IndexOf("\r\n\r"); - if (tidx > 0) - { - idx = instr.IndexOf("\r\n\r", sidx); - tstr = instr.Substring(sidx, idx - sidx); - } - arylstCellStrings.Add(tstr.Substring(tstr.IndexOf("{\\rtf"))); - sidx = idx + 3; - if (sidx < instr.Length) - { - idx = instr.IndexOf("\r\n\t", sidx); - if (idx < 0) idx = instr.IndexOf("\r\n\r", sidx); - } + tstr = tstr.Substring(0, tstr.LastIndexOf('}') + 1); + //Console.WriteLine("\ntstr: '{0}'", tstr); + arylstCellStrings.Add(tstr); + sidx = idx; + idx = instr.IndexOf(@"{\rtf",sidx+1); } if (sidx < instr.Length) { tstr = instr.Substring(sidx); - arylstCellStrings.Add(tstr.Substring(tstr.IndexOf("{\\rtf"))); + arylstCellStrings.Add(tstr); } } return arylstCellStrings; } + + //private ArrayList GetCellStrings(string instr) + //{ + // // The table cells placed on the clipboard is saved as one long RTF string. + // // "\r\n\t" defines a cell border + // // "\r\n\r" defines beginning of next line (row) + // // This function will separate each cell text and place them in an array. + // // This allow the clipboard information to be pasted independently from + // // how it was selected. + + // string tstr = ""; // this will contain the parsed out cell text + // ArrayList arylstCellStrings = new ArrayList(); + // int sidx = 0; // start index + // int tidx = 0; + // if (instr != null) + // { + // int idx = instr.IndexOf("\r\n\t"); // cell boarder + // if (idx < 0) idx = instr.IndexOf("\r\n\r"); // new line (needed for multiple lines in one cell) + // while (idx > 0) + // { + // tstr = instr.Substring(sidx, idx - sidx); + // tidx = tstr.IndexOf("\r\n\r"); + // if (tidx > 0) + // { + // idx = instr.IndexOf("\r\n\r", sidx); + // tstr = instr.Substring(sidx, idx - sidx); + // } + // arylstCellStrings.Add(tstr.Substring(tstr.IndexOf("{\\rtf"))); + // sidx = idx + 3; + // if (sidx < instr.Length) + // { + // idx = instr.IndexOf("\r\n\t", sidx); + // if (idx < 0) idx = instr.IndexOf("\r\n\r", sidx); + // } + // } + // if (sidx < instr.Length) + // { + // tstr = instr.Substring(sidx); + // arylstCellStrings.Add(tstr.Substring(tstr.IndexOf("{\\rtf"))); + // } + // } + // return arylstCellStrings; + //} } [Serializable] diff --git a/PROMS/Volian.Controls.Library/VlnFlexGrid.resx b/PROMS/Volian.Controls.Library/VlnFlexGrid.resx new file mode 100644 index 00000000..52a9ad3e --- /dev/null +++ b/PROMS/Volian.Controls.Library/VlnFlexGrid.resx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + False + + \ No newline at end of file